diff -rNu smalltalk-3.0.3/ChangeLog smalltalk-3.0.4/ChangeLog --- smalltalk-3.0.3/ChangeLog 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/ChangeLog 2008-08-09 15:09:44.000000000 +0200 @@ -1,3 +1,88 @@ +2008-08-04 Paolo Bonzini + + * kernel/Semaphore.st: Initialize the caught variable in #critical:. + +2008-08-01 Paolo Bonzini + + * kernel/Stream.st: Fix #do: and #linesDo: to check for the + right stream before bailing out. + * tests/strings.st: Add regression test. + * tests/strings.ok: Regenerate. + +2008-07-28 Paolo Bonzini + + * tests/compiler.st: Add tests for parsing unary minus. + * tests/compiler.ok: Regenerate. + +2008-07-14 Paolo Bonzini + + * kernel/CompildCode.st: Fix printing of superoperators including + JUMP_BACK. + +2008-07-14 Paolo Bonzini + + * tests/compiler.st: Add testcase. + * tests/compiler.ok: Regenerate. + +2008-07-10 Paolo Bonzini + + * kernel/MappedColl.st: Forward #keysDo: to the map, don't + change it to #do:. + +2008-06-01 Paolo Bonzini + + * kernel/AnsiExcept.st: Adjust call to #instantiateNextHandler:. + * kernel/ExcHandling.st: Scan for outer exception handlers from the + handler's context. + * tests/exceptions.st: Add test case. + * tests/exceptions.ok: Regenerate. + +2008-06-01 Paolo Bonzini + + * kernel/URL.st: Fix redirects including a GET query. + Add #contents and #readStream. + +2008-05-31 Daniele Sciascia + + * scripts/Convert.st: --quiet was verbose. + +2008-05-30 Paolo Bonzini + + * gst-tool.c: Remove executable extension if present. + +2008-05-30 Paolo Bonzini + + * kernel/CObject.st: Fix CByte. + +2008-05-27 Paolo Bonzini + + * kernel/SeqCollect.st: Move #join... + * kernel/Collection.st: ... here. Use #anyOne. + +2008-05-24 Paolo Bonzini + + * kernel/VFSZip.st: Avoid leaking file descriptors for LimitedStreams. + +2008-05-22 Paolo Bonzini + + * kernel/ArrayColl.st: Remove implementation of #gather:. + * kernel/Collection.st: Implement #gather: in terms of #join. + +2008-05-22 Paolo Bonzini + + * kernel/VFS.st: Fix #all on archives. + +2008-05-22 Paolo Bonzini + + * kernel/OrderColl.st: Override #first and #last for speed. + * kernel/StreamOps.st: Avoid repeatedly colling #first. + * kernel/SeqCollect.st: Use #replaceFrom:to:with:startingAt: when doing + #replaceFrom:to:with: with a sequenceable collection argument. + +2008-05-15 Paolo Bonzini + + * kernel/File.st: Deal correctly with UNC paths. + 2008-05-11 Paolo Bonzini * examples/xml.sed: Fix for VW7. diff -rNu smalltalk-3.0.3/Makefile.am smalltalk-3.0.4/Makefile.am --- smalltalk-3.0.3/Makefile.am 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/Makefile.am 2008-08-09 15:09:44.000000000 +0200 @@ -127,7 +127,7 @@ done install-exec-hook:: - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL) gst-tool "$(DESTDIR)$(bindir)/gst-load" + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL) gst-tool$(EXEEXT) "$(DESTDIR)$(bindir)/gst-load$(EXEEXT)" @for i in $(GST_EXTRA_TOOLS); do \ echo $(LN) -f "$(DESTDIR)$(bindir)/gst-load$(EXEEXT)" "$(DESTDIR)$(bindir)/$$i$(EXEEXT)"; \ $(LN) -f "$(DESTDIR)$(bindir)/gst-load$(EXEEXT)" "$(DESTDIR)$(bindir)/$$i$(EXEEXT)"; \ diff -rNu smalltalk-3.0.3/Makefile.in smalltalk-3.0.4/Makefile.in --- smalltalk-3.0.3/Makefile.in 2008-05-14 12:04:51.000000000 +0200 +++ smalltalk-3.0.4/Makefile.in 2008-08-09 15:13:16.000000000 +0200 @@ -1121,7 +1121,7 @@ done install-exec-hook:: - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL) gst-tool "$(DESTDIR)$(bindir)/gst-load" + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL) gst-tool$(EXEEXT) "$(DESTDIR)$(bindir)/gst-load$(EXEEXT)" @for i in $(GST_EXTRA_TOOLS); do \ echo $(LN) -f "$(DESTDIR)$(bindir)/gst-load$(EXEEXT)" "$(DESTDIR)$(bindir)/$$i$(EXEEXT)"; \ $(LN) -f "$(DESTDIR)$(bindir)/gst-load$(EXEEXT)" "$(DESTDIR)$(bindir)/$$i$(EXEEXT)"; \ diff -rNu smalltalk-3.0.3/NEWS smalltalk-3.0.4/NEWS --- smalltalk-3.0.3/NEWS 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/NEWS 2008-08-09 15:09:45.000000000 +0200 @@ -1,5 +1,60 @@ List of user-visible changes in GNU Smalltalk +NEWS FROM 3.0.3 TO 3.0.4 + +o A few operations on collections have been sped up. + +o Code without a space between a binary minus and a number, such as "a-2", + is parsed correctly. As a side effect of this change, the sign of a number + with an explicit radix (such as "16r10") can be placed before the radix + too: both -16r10 and 16r-10 are accepted. + +o Fixed bug that caused some children not to be reaped. + +o Fixed bug when reading from a FIFO file and the writing side closed the + FIFO before GNU Smalltalk started reading it. + +o Fixed CByte to actually work. + +o Fixed corner case of nested exception handlers. + +o Fixed directory navigation on ZIP archives (when using the VFSAddOns + package). + +o Fixed HTTP GETs that caused a redirect and had a query. + +o Fixed leakage of file descriptors on ZIP archives (when *not* using the + VFSAddOns package). + +o Fixed MappedCollection>>#keysDo:. + +o Fixed rare bug in the bytecode optimizer that caused invalid + (non-verifiable) or even incorrect bytecode to be generated. + +o Fixed Stream>>#do: and Stream>>#linesDo:, which would terminate in + advance if *another* stream was read past its end during the argument + block's execution. + +o Fixed the tools to work on Windows even if invoked with an explicit + extension for the executable. + +o gst-convert is now really quiet if invoked with --quiet. + +o Moved SequenceableCollection>>#join to Collection. + +o Removed bashisms from installed shell scripts. + +o Sockets use the close-on-exec option (see fcntl(2) for more information). + +o Sport fixes: fixed SpFilename>>#fail (did not work) and + SpSocket>>#readInto:startingAt:for: (should only do one I/O operation, + possibly returning a partially filled buffer). + +o UNC paths are parsed correctly by File. + +----------------------------------------------------------------------------- + + NEWS FROM 3.0.2 TO 3.0.3 o File>>#withReadStreamDo: and File>>#withWriteStreamDo: now return diff -rNu smalltalk-3.0.3/build-aux/libtool.m4 smalltalk-3.0.4/build-aux/libtool.m4 --- smalltalk-3.0.3/build-aux/libtool.m4 2008-04-10 11:10:47.000000000 +0200 +++ smalltalk-3.0.4/build-aux/libtool.m4 2008-07-25 17:10:32.000000000 +0200 @@ -22,8 +22,6 @@ ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. -# serial 47 AC_PROG_LIBTOOL - # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- diff -rNu smalltalk-3.0.3/build-aux/ltdl.m4 smalltalk-3.0.4/build-aux/ltdl.m4 --- smalltalk-3.0.3/build-aux/ltdl.m4 2008-04-10 11:10:47.000000000 +0200 +++ smalltalk-3.0.4/build-aux/ltdl.m4 2008-07-25 17:10:32.000000000 +0200 @@ -20,8 +20,6 @@ ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. -# serial 6 AC_LIB_LTDL -# Debian $Rev: 42 $ # AC_WITH_LTDL # ------------ diff -rNu smalltalk-3.0.3/config.h.in smalltalk-3.0.4/config.h.in --- smalltalk-3.0.3/config.h.in 2008-05-14 12:07:56.000000000 +0200 +++ smalltalk-3.0.4/config.h.in 2008-08-09 15:17:14.000000000 +0200 @@ -533,6 +533,9 @@ /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE +/* The size of `int', as computed by sizeof. */ +#undef SIZEOF_INT + /* The size of `mp_limb_t', as computed by sizeof. */ #undef SIZEOF_MP_LIMB_T @@ -542,6 +545,9 @@ /* The size of `OOP', as computed by sizeof. */ #undef SIZEOF_OOP +/* The size of `wchar_t', as computed by sizeof. */ +#undef SIZEOF_WCHAR_T + /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. diff -rNu smalltalk-3.0.3/configure smalltalk-3.0.4/configure --- smalltalk-3.0.3/configure 2008-05-14 12:04:54.000000000 +0200 +++ smalltalk-3.0.4/configure 2008-08-09 15:13:32.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for GNU Smalltalk 3.0.3. +# Generated by GNU Autoconf 2.61 for GNU Smalltalk 3.0.4. # # Report bugs to . # @@ -724,8 +724,8 @@ # Identity of this package. PACKAGE_NAME='GNU Smalltalk' PACKAGE_TARNAME='smalltalk' -PACKAGE_VERSION='3.0.3' -PACKAGE_STRING='GNU Smalltalk 3.0.3' +PACKAGE_VERSION='3.0.4' +PACKAGE_STRING='GNU Smalltalk 3.0.4' PACKAGE_BUGREPORT='help-smalltalk@gnu.org' ac_unique_file="main.c" @@ -1457,7 +1457,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 GNU Smalltalk 3.0.3 to adapt to many kinds of systems. +\`configure' configures GNU Smalltalk 3.0.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1527,7 +1527,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Smalltalk 3.0.3:";; + short | recursive ) echo "Configuration of GNU Smalltalk 3.0.4:";; esac cat <<\_ACEOF @@ -1667,7 +1667,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Smalltalk configure 3.0.3 +GNU Smalltalk configure 3.0.4 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1681,7 +1681,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by GNU Smalltalk $as_me 3.0.3, which was +It was created by GNU Smalltalk $as_me 3.0.4, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2455,7 +2455,7 @@ # Define the identity of the package. PACKAGE='smalltalk' - VERSION='3.0.3' + VERSION='3.0.4' cat >>confdefs.h <<_ACEOF @@ -7803,6 +7803,830 @@ _ACEOF +{ echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6; } +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef int ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_int=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6; } + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6; } +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef int ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef int ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef int ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef int ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef int ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') if test "$ac_cv_type_int" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_int=0 + fi ;; +esac +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + typedef int ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; + fprintf (f, "%ld\n", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; + fprintf (f, "%lu\n", i); + } + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_int" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_int=0 + fi +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +{ echo "$as_me:$LINENO: checking for wchar_t" >&5 +echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6; } +if test "${ac_cv_type_wchar_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + +typedef wchar_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_wchar_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_wchar_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_wchar_t" >&5 +echo "${ECHO_T}$ac_cv_type_wchar_t" >&6; } + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ echo "$as_me:$LINENO: checking size of wchar_t" >&5 +echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6; } +if test "${ac_cv_sizeof_wchar_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + + typedef wchar_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + + typedef wchar_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + + typedef wchar_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + + typedef wchar_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + + typedef wchar_t ac__type_sizeof_; +int +main () +{ +static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_wchar_t=$ac_lo;; +'') if test "$ac_cv_type_wchar_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t) +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (wchar_t) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_wchar_t=0 + fi ;; +esac +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + + typedef wchar_t ac__type_sizeof_; +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (((long int) (sizeof (ac__type_sizeof_))) < 0) + { + long int i = longval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; + fprintf (f, "%ld\n", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ((long int) (sizeof (ac__type_sizeof_)))) + return 1; + fprintf (f, "%lu\n", i); + } + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_wchar_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +if test "$ac_cv_type_wchar_t" = yes; then + { { echo "$as_me:$LINENO: error: cannot compute sizeof (wchar_t) +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (wchar_t) +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + else + ac_cv_sizeof_wchar_t=0 + fi +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_wchar_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t +_ACEOF + + { echo "$as_me:$LINENO: checking for OOP" >&5 echo $ECHO_N "checking for OOP... $ECHO_C" >&6; } if test "${ac_cv_type_OOP+set}" = set; then @@ -8776,7 +9600,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 8779 "configure"' > conftest.$ac_ext + echo '#line 9603 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -10334,11 +11158,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10337: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11161: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10341: \$? = $ac_status" >&5 + echo "$as_me:11165: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -10577,11 +11401,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10580: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11404: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10584: \$? = $ac_status" >&5 + echo "$as_me:11408: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings @@ -10637,11 +11461,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10640: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11464: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10644: \$? = $ac_status" >&5 + echo "$as_me:11468: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12785,7 +13609,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <]]) AC_CHECK_SIZEOF(OOP, , [[ typedef void *OOP;]]) diff -rNu smalltalk-3.0.3/doc/classes.texi smalltalk-3.0.4/doc/classes.texi --- smalltalk-3.0.3/doc/classes.texi 2008-05-14 12:35:03.000000000 +0200 +++ smalltalk-3.0.4/doc/classes.texi 2008-08-09 12:48:04.000000000 +0200 @@ -80,13 +80,14 @@ * BlockContext:: * Boolean:: * ByteArray:: -* ByteStream:: * CAggregate:: * CallinProcess:: * CArray:: * CArrayCType:: * CBoolean:: * CByte:: +* CCallable:: +* CCallbackDescriptor:: * CChar:: * CCompound:: * CDouble:: @@ -138,6 +139,7 @@ * False:: * File:: * FileDescriptor:: +* FilePath:: * FileSegment:: * FileStream:: * Float:: @@ -154,6 +156,7 @@ * IdentitySet:: * Integer:: * Interval:: +* Iterable:: * LargeArray:: * LargeArrayedCollection:: * LargeByteArray:: @@ -194,6 +197,7 @@ * Point:: * PositionableStream:: * Process:: +* ProcessEnvironment:: * ProcessorScheduler:: * Promise:: * Random:: @@ -248,6 +252,7 @@ * SystemExceptions.SecurityError:: * SystemExceptions.ShouldNotImplement:: * SystemExceptions.SubclassResponsibility:: +* SystemExceptions.UnhandledException:: * SystemExceptions.UserInterrupt:: * SystemExceptions.VerificationError:: * SystemExceptions.VMError:: @@ -264,14 +269,12 @@ * ValueHolder:: * VariableBinding:: * VersionableObjectProxy:: -* VFS.ArchiveFileHandler:: -* VFS.ArchiveMemberHandler:: -* VFS.CStatStruct:: -* VFS.DecodedFileHandler:: -* VFS.FileHandlerWrapper:: -* VFS.RealFileHandler:: -* VFS.TmpFileArchiveMemberHandler:: -* VFS.VFSHandler:: +* VFS.ArchiveFile:: +* VFS.ArchiveMember:: +* VFS.FileWrapper:: +* VFS.StoredZipMember:: +* VFS.TmpFileArchiveMember:: +* VFS.ZipFile:: * Warning:: * WeakArray:: * WeakIdentitySet:: @@ -307,15 +310,16 @@ @class{@t{ }, Boolean} @class{@t{ }, False} @class{@t{ }, True} -@class{@t{ }, CFunctionDescriptor} @class{@t{ }, CObject} @class{@t{ }, CAggregate} @class{@t{ }, CArray} @class{@t{ }, CPtr} @class{@t{ }, CString} +@class{@t{ }, CCallable} +@class{@t{ }, CCallbackDescriptor} +@class{@t{ }, CFunctionDescriptor} @class{@t{ }, CCompound} @class{@t{ }, CStruct} -@class{@t{ }, VFS.CStatStruct} @class{@t{ }, CUnion} @class{@t{ }, CScalar} @class{@t{ }, CChar} @@ -332,50 +336,6 @@ @class{@t{ }, CUInt} @class{@t{ }, CULong} @class{@t{ }, CUShort} -@class{@t{ }, Collection} -@class{@t{ }, Bag} -@class{@t{ }, HashedCollection} -@class{@t{ }, Dictionary} -@class{@t{ }, BindingDictionary} -@class{@t{ }, AbstractNamespace} -@class{@t{ }, Namespace} -@class{@t{ }, RootNamespace} -@class{@t{ }, SystemDictionary} -@class{@t{ }, LookupTable} -@class{@t{ }, IdentityDictionary} -@class{@t{ }, MethodDictionary} -@class{@t{ }, WeakValueLookupTable} -@class{@t{ }, WeakValueIdentityDictionary} -@class{@t{ }, WeakKeyDictionary} -@class{@t{ }, WeakKeyIdentityDictionary} -@class{@t{ }, Set} -@class{@t{ }, IdentitySet} -@class{@t{ }, WeakSet} -@class{@t{ }, WeakIdentitySet} -@class{@t{ }, MappedCollection} -@class{@t{ }, SequenceableCollection} -@class{@t{ }, ArrayedCollection} -@class{@t{ }, Array} -@class{@t{ }, WeakArray} -@class{@t{ }, ByteArray} -@class{@t{ }, CharacterArray} -@class{@t{ }, String} -@class{@t{ }, Symbol} -@class{@t{ }, UnicodeString} -@class{@t{ }, CompiledCode} -@class{@t{ }, CompiledBlock} -@class{@t{ }, CompiledMethod} -@class{@t{ }, Interval} -@class{@t{ }, LargeArrayedCollection} -@class{@t{ }, LargeArray} -@class{@t{ }, LargeByteArray} -@class{@t{ }, LargeWordArray} -@class{@t{ }, WordArray} -@class{@t{ }, LinkedList} -@class{@t{ }, Semaphore} -@class{@t{ }, OrderedCollection} -@class{@t{ }, RunArray} -@class{@t{ }, SortedCollection} @class{@t{ }, ContextPart} @class{@t{ }, BlockContext} @class{@t{ }, MethodContext} @@ -386,6 +346,7 @@ @class{@t{ }, CScalarCType} @class{@t{ }, CStringCType} @class{@t{ }, Delay} +@class{@t{ }, Directory} @class{@t{ }, DLD} @class{@t{ }, DumperProxy} @class{@t{ }, AlternativeObjectProxy} @@ -393,10 +354,72 @@ @class{@t{ }, VersionableObjectProxy} @class{@t{ }, PluggableProxy} @class{@t{ }, SingletonProxy} -@class{@t{ }, File} -@class{@t{ }, Directory} +@class{@t{ }, FilePath} +@class{@t{ }, File} +@class{@t{ }, VFS.ArchiveMember} +@class{@t{ }, VFS.TmpFileArchiveMember} +@class{@t{ }, VFS.StoredZipMember} +@class{@t{ }, VFS.FileWrapper} +@class{@t{ }, VFS.ArchiveFile} +@class{@t{ }, VFS.ZipFile} @class{@t{ }, FileSegment} @class{@t{ }, Getopt} +@class{@t{ }, Iterable} +@class{@t{ }, Collection} +@class{@t{ }, Bag} +@class{@t{ }, HashedCollection} +@class{@t{ }, Dictionary} +@class{@t{ }, BindingDictionary} +@class{@t{ }, AbstractNamespace} +@class{@t{ }, Namespace} +@class{@t{ }, RootNamespace} +@class{@t{ }, SystemDictionary} +@class{@t{ }, LookupTable} +@class{@t{ }, IdentityDictionary} +@class{@t{ }, MethodDictionary} +@class{@t{ }, WeakValueLookupTable} +@class{@t{ }, WeakValueIdentityDictionary} +@class{@t{ }, WeakKeyDictionary} +@class{@t{ }, WeakKeyIdentityDictionary} +@class{@t{ }, Set} +@class{@t{ }, IdentitySet} +@class{@t{ }, WeakSet} +@class{@t{ }, WeakIdentitySet} +@class{@t{ }, MappedCollection} +@class{@t{ }, SequenceableCollection} +@class{@t{ }, ArrayedCollection} +@class{@t{ }, Array} +@class{@t{ }, WeakArray} +@class{@t{ }, ByteArray} +@class{@t{ }, CharacterArray} +@class{@t{ }, String} +@class{@t{ }, Symbol} +@class{@t{ }, UnicodeString} +@class{@t{ }, CompiledCode} +@class{@t{ }, CompiledBlock} +@class{@t{ }, CompiledMethod} +@class{@t{ }, Interval} +@class{@t{ }, LargeArrayedCollection} +@class{@t{ }, LargeArray} +@class{@t{ }, LargeByteArray} +@class{@t{ }, LargeWordArray} +@class{@t{ }, WordArray} +@class{@t{ }, LinkedList} +@class{@t{ }, Semaphore} +@class{@t{ }, OrderedCollection} +@class{@t{ }, RunArray} +@class{@t{ }, SortedCollection} +@class{@t{ }, Stream} +@class{@t{ }, FileDescriptor} +@class{@t{ }, FileStream} +@class{@t{ }, Generator} +@class{@t{ }, ObjectDumper} +@class{@t{ }, PositionableStream} +@class{@t{ }, ReadStream} +@class{@t{ }, WriteStream} +@class{@t{ }, ReadWriteStream} +@class{@t{ }, Random} +@class{@t{ }, TextCollector} @superclass{@t{ }, Kernel.PackageInfo} @class{@t{ }, Package} @superclass{@t{ }, Kernel.TrappableEvent} @@ -440,6 +463,7 @@ @class{@t{ }, PackageLoader} @class{@t{ }, Permission} @class{@t{ }, Point} +@class{@t{ }, ProcessEnvironment} @class{@t{ }, ProcessorScheduler} @class{@t{ }, Rectangle} @class{@t{ }, RecursionLock} @@ -490,18 +514,7 @@ @class{@t{ }, SystemExceptions.EndOfStream} @class{@t{ }, SystemExceptions.ProcessBeingTerminated} @class{@t{ }, Warning} -@class{@t{ }, Stream} -@class{@t{ }, Generator} -@class{@t{ }, ObjectDumper} -@class{@t{ }, PositionableStream} -@class{@t{ }, ReadStream} -@class{@t{ }, WriteStream} -@class{@t{ }, ReadWriteStream} -@class{@t{ }, ByteStream} -@class{@t{ }, FileDescriptor} -@class{@t{ }, FileStream} -@class{@t{ }, Random} -@class{@t{ }, TextCollector} +@class{@t{ }, SystemExceptions.UnhandledException} @class{@t{ }, UndefinedObject} @class{@t{ }, ValueAdaptor} @class{@t{ }, NullValueHolder} @@ -509,13 +522,6 @@ @class{@t{ }, DelayedAdaptor} @class{@t{ }, ValueHolder} @class{@t{ }, Promise} -@class{@t{ }, VFS.VFSHandler} -@class{@t{ }, VFS.ArchiveMemberHandler} -@class{@t{ }, VFS.TmpFileArchiveMemberHandler} -@class{@t{ }, VFS.FileHandlerWrapper} -@class{@t{ }, VFS.ArchiveFileHandler} -@class{@t{ }, VFS.DecodedFileHandler} -@class{@t{ }, VFS.RealFileHandler} @enddetailmenu @endmenu @unmacro class @@ -539,7 +545,7 @@ @menu * AbstractNamespace class-instance creation:: (class) * AbstractNamespace-accessing:: (instance) -* AbstractNamespace-basic & copying:: (instance) +* AbstractNamespace-compiling:: (instance) * AbstractNamespace-copying:: (instance) * AbstractNamespace-namespace hierarchy:: (instance) * AbstractNamespace-overrides for superspaces:: (instance) @@ -618,22 +624,30 @@ -@node AbstractNamespace-basic & copying -@subsection AbstractNamespace:@- basic & copying +@node AbstractNamespace-compiling +@subsection AbstractNamespace:@- compiling @table @b -@meindex = -@item = arg -Answer whether the receiver is equal to arg. The equality test is -by default the same as that for equal objects. = must not fail; -answer false if the receiver cannot be compared to arg +@meindex addSharedPool:@- +@item addSharedPool:@- aDictionary +Import the given bindings for classes compiled with me as +environment. -@meindex hash -@slindex identityHash -@item hash -Answer an hash value for the receiver. This is the same as the -object's @-#identityHash. +@meindex import:@- +@item import:@- aDictionary +Import the given bindings for classes compiled with me as +environment. + + +@meindex removeSharedPool:@- +@item removeSharedPool:@- aDictionary +Remove aDictionary from my list of direct pools. + + +@meindex sharedPoolDictionaries +@item sharedPoolDictionaries +Answer the shared pools (not names) imported for my classes. @end table @@ -685,11 +699,6 @@ Invokes aBlock for all subspaces, both direct and indirect. -@meindex allSuperspaces -@item allSuperspaces -Answer all the receiver's superspaces in a collection - - @meindex allSuperspacesDo:@- @item allSuperspacesDo:@- aBlock Evaluate aBlock once for each of the receiver's superspaces @@ -715,12 +724,6 @@ returns true even if the global is not a class object. -@meindex inheritsFrom:@- -@item inheritsFrom:@- aNamespace -Answer whether aNamespace is one of the receiver's direct and -indirect superspaces - - @meindex removeSubspace:@- @item removeSubspace:@- aSymbol Remove my subspace named aSymbol from the hierarchy. @@ -780,17 +783,6 @@ and indirect. -@meindex withAllSuperspaces -@item withAllSuperspaces -Answer the receiver and all of its superspaces in a collection - - -@meindex withAllSuperspacesDo:@- -@item withAllSuperspacesDo:@- aBlock -Invokes aBlock for the receiver and all superspaces, both direct -and indirect. - - @end table @@ -799,32 +791,6 @@ @subsection AbstractNamespace:@- overrides for superspaces @table @b -@meindex definedKeys -@item definedKeys -Answer a kind of Set containing the keys of the receiver - - -@meindex definesKey:@- -@item definesKey:@- key -Answer whether the receiver defines the given key. `Defines' -means that the receiver's superspaces, if any, are not considered. - - -@meindex hereAt:@- -@item hereAt:@- key -Return the value associated to the variable named as specified -by `key' *in this namespace*. If the key is not found search will -*not* be carried on in superspaces and the method will fail. - - -@meindex hereAt:@-ifAbsent:@- -@item hereAt:@- key ifAbsent:@- aBlock -Return the value associated to the variable named as specified -by `key' *in this namespace*. If the key is not found search will -*not* be carried on in superspaces and aBlock will be immediately -evaluated. - - @meindex inheritedKeys @item inheritedKeys Answer a Set of all the keys in the receiver and its superspaces @@ -1024,6 +990,7 @@ @menu * Array class-instance creation:: (class) +* Array-built ins:: (instance) * Array-mutating objects:: (instance) * Array-printing:: (instance) * Array-testing:: (instance) @@ -1045,6 +1012,21 @@ +@node Array-built ins +@subsection Array:@- built ins + +@table @b +@meindex replaceFrom:@-to:@-with:@-startingAt:@- +@item replaceFrom:@- start to:@- stop with:@- byteArray startingAt:@- replaceStart +Replace the characters from start to stop with new characters whose +ASCII codes are contained in byteArray, starting at the replaceStart +location of byteArray + + +@end table + + + @node Array-mutating objects @subsection Array:@- mutating objects @@ -1117,7 +1099,6 @@ * ArrayedCollection-built ins:: (instance) * ArrayedCollection-copying Collections:: (instance) * ArrayedCollection-enumerating the elements of a collection:: (instance) -* ArrayedCollection-enumeration:: (instance) * ArrayedCollection-storing:: (instance) * ArrayedCollection-streams:: (instance) @end menu @@ -1329,22 +1310,6 @@ -@node ArrayedCollection-enumeration -@subsection ArrayedCollection:@- enumeration - -@table @b -@meindex gather:@- -@item gather:@- aBlock -Answer a new instance of a Collection containing all the results -of evaluating aBlock, joined together. aBlock should return -collections. The result is the same kind of the receiver, -independent of the type of collection returned by aBlock. - - -@end table - - - @node ArrayedCollection-storing @subsection ArrayedCollection:@- storing @@ -1829,10 +1794,16 @@ Returns a set of all instances of the receiver +@meindex allSharedPoolDictionaries +@item allSharedPoolDictionaries +Return the shared pools defined by the class and any of +its superclasses, in the correct search order. + + @meindex allSharedPools @item allSharedPools Return the names of the shared pools defined by the class and any of -its superclasses +its superclasses, in the correct search order. @meindex classPool @@ -2081,6 +2052,12 @@ Calling this method prepares the parser to receive methods to be compiled and installed in the receiver's method dictionary. The methods are put in the category identified by the parameter. +@meindex poolResolution +@item poolResolution +Answer a PoolResolution class to be used for resolving pool +variables while compiling methods on this class. + + @end table @@ -2503,6 +2480,12 @@ @subsection Behavior:@- still unclassified @table @b +@meindex allSharedPoolDictionariesDo:@- +@item allSharedPoolDictionariesDo:@- aBlock +Answer the shared pools visible from methods in the metaclass, +in the correct search order. + + @meindex parseNodeAt:@- @item parseNodeAt:@- selector Available only when the Parser package is loaded--Answer an @@ -2764,6 +2747,7 @@ @menu * BindingDictionary-accessing:: (instance) +* BindingDictionary-basic & copying:: (instance) * BindingDictionary-copying:: (instance) * BindingDictionary-forward declarations:: (instance) * BindingDictionary-printing:: (instance) @@ -2837,6 +2821,28 @@ +@node BindingDictionary-basic & copying +@subsection BindingDictionary:@- basic & copying + +@table @b +@meindex = +@item = arg +Answer whether the receiver is equal to arg. The equality test is +by default the same as that for equal objects. = must not fail; +answer false if the receiver cannot be compared to arg + + +@meindex hash +@slindex identityHash +@item hash +Answer an hash value for the receiver. This is the same as the +object's @-#identityHash. + + +@end table + + + @node BindingDictionary-copying @subsection BindingDictionary:@- copying @@ -3082,6 +3088,24 @@ @subsection BlockClosure:@- built ins @table @b +@meindex cull:@- +@item cull:@- arg1 +Evaluate the receiver, passing arg1 as the only parameter if +the receiver has parameters. + + +@meindex cull:@-cull:@- +@item cull:@- arg1 cull:@- arg2 +Evaluate the receiver, passing arg1 and arg2 as parameters if +the receiver accepts them. + + +@meindex cull:@-cull:@-cull:@- +@item cull:@- arg1 cull:@- arg2 cull:@- arg3 +Evaluate the receiver, passing arg1, arg2 and arg3 as parameters if +the receiver accepts them. + + @meindex value @item value Evaluate the receiver passing no parameters @@ -3230,9 +3254,7 @@ @meindex forkWithoutPreemption @item forkWithoutPreemption Evaluate the receiver in a process that cannot be preempted. -If the receiver expect a parameter, pass the current process -(can be useful for queuing interrupts from within the -uninterruptible process). +If the receiver expect a parameter, pass the current process. @meindex newProcess @@ -3611,6 +3633,7 @@ @menu * ByteArray class-instance creation:: (class) +* ByteArray-basic:: (instance) * ByteArray-built ins:: (instance) * ByteArray-converting:: (instance) * ByteArray-more advanced accessing:: (instance) @@ -3633,6 +3656,19 @@ +@node ByteArray-basic +@subsection ByteArray:@- basic + +@table @b +@meindex = +@item = aCollection +Answer whether the receiver's items match those in aCollection + + +@end table + + + @node ByteArray-built ins @subsection ByteArray:@- built ins @@ -3658,14 +3694,6 @@ Answer an hash value for the receiver -@meindex primReplaceFrom:@-to:@-with:@-startingAt:@- -@item primReplaceFrom:@- start to:@- stop with:@- aByteArray startingAt:@- srcIndex -Private - Replace the characters from start to stop with the -ASCII codes contained in aString (which, actually, can be -any variable byte class), starting at the srcIndex location of -aString - - @meindex replaceFrom:@-to:@-with:@-startingAt:@- @item replaceFrom:@- start to:@- stop with:@- aByteArray startingAt:@- replaceStart Replace the characters from start to stop with the @@ -3963,130 +3991,6 @@ @end table -@node ByteStream -@section ByteStream -@clindex ByteStream - -@table @b -@item Defined in namespace Smalltalk -@itemx Superclass: ReadWriteStream -@itemx Category: Streams-Collections -My instances are read/write streams specially crafted for ByteArrays. -They are able to write binary data to them. -@end table - -@menu -* ByteStream-basic:: (instance) -@end menu - - - -@node ByteStream-basic -@subsection ByteStream:@- basic - -@table @b -@meindex next -@item next -Return the next *character* in the ByteArray - - -@meindex nextByte -@item nextByte -Return the next byte in the byte array - - -@meindex nextByteArray:@- -@item nextByteArray:@- numBytes -Return the next numBytes bytes in the byte array - - -@meindex nextDouble -@item nextDouble -Return the next 64-bit float in the byte array - - -@meindex nextFloat -@item nextFloat -Return the next 32-bit float in the byte array - - -@meindex nextLong -@item nextLong -Return the next 4 bytes in the byte array, interpreted as a 32 bit signed int - - -@meindex nextLongLong -@item nextLongLong -Return the next 8 bytes in the byte array, interpreted as a 64 bit signed int - - -@meindex nextPut:@- -@item nextPut:@- aChar -Store aChar on the byte array - - -@meindex nextPutByte:@- -@item nextPutByte:@- anInteger -Store anInteger (range:@- -128..255) on the byte array - - -@meindex nextPutByteArray:@- -@item nextPutByteArray:@- aByteArray -Store aByteArray on the byte array - - -@meindex nextPutDouble:@- -@item nextPutDouble:@- aDouble -Store aDouble as a 64-bit float in the byte array - - -@meindex nextPutFloat:@- -@item nextPutFloat:@- aFloat -Return the next 32-bit float in the byte array - - -@meindex nextPutInt64:@- -@item nextPutInt64:@- anInteger -Store anInteger (range:@- -2^63..2^64-1) on the byte array as 4 bytes - - -@meindex nextPutLong:@- -@item nextPutLong:@- anInteger -Store anInteger (range:@- -2^31..2^32-1) on the byte array as 4 bytes - - -@meindex nextPutShort:@- -@item nextPutShort:@- anInteger -Store anInteger (range:@- -32768..65535) on the byte array as 2 bytes - - -@meindex nextShort -@item nextShort -Return the next 2 bytes in the byte array, interpreted as a 16 bit signed int - - -@meindex nextSignedByte -@item nextSignedByte -Return the next byte in the byte array, interpreted as a 8 bit signed number - - -@meindex nextUint64 -@item nextUint64 -Return the next 8 bytes in the byte array, interpreted as a 64 bit unsigned int - - -@meindex nextUlong -@item nextUlong -Return the next 4 bytes in the byte array, interpreted as a 32 bit unsigned int - - -@meindex nextUshort -@item nextUshort -Return the next 2 bytes in the byte array, interpreted as a 16 bit unsigned int - - -@end table - @node CAggregate @section CAggregate @clindex CAggregate @@ -4354,6 +4258,194 @@ @end table +@node CCallable +@section CCallable +@clindex CCallable + +@table @b +@item Defined in namespace Smalltalk +@itemx Superclass: CObject +@itemx Category: Language-C interface +I am not part of the Smalltalk definition. My instances contain information +about C functions that can be called from within Smalltalk, such as number +and type of parameters. This information is used by the C callout mechanism +to perform the actual call-out to C routines. +@end table + +@menu +* CCallable class-instance creation:: (class) +* CCallable-accessing:: (instance) +* CCallable-calling:: (instance) +* CCallable-restoring:: (instance) +@end menu + + + +@node CCallable class-instance creation +@subsection CCallable class:@- instance creation + +@table @b +@meindex for:@-returning:@-withArgs:@- +@item for:@- aCObject returning:@- returnTypeSymbol withArgs:@- argsArray +Answer a CFunctionDescriptor with the given address, return type +and arguments. The address will be reset to NULL upon image save +(and it's the user's task to figure out a way to reinitialize it!) + + +@end table + + + +@node CCallable-accessing +@subsection CCallable:@- accessing + +@table @b +@meindex isValid +@item isValid +Answer whether the object represents a valid function. + + +@meindex returnType +@item returnType +Not commented. + +@end table + + + +@node CCallable-calling +@subsection CCallable:@- calling + +@table @b +@meindex asyncCall +@slindex self +@slindex selfSmalltalk +@item asyncCall +Perform the call-out for the function represented by the receiver. +The arguments (and the receiver if one of the arguments has type +@-#self or @-#selfSmalltalk) are taken from the parent context. +Asynchronous call-outs don't return a value, but if the +function calls back into Smalltalk the process that started the +call-out is not suspended. + + +@meindex asyncCallNoRetryFrom:@- +@slindex self +@slindex selfSmalltalk +@slindex asyncCallFrom:@- +@item asyncCallNoRetryFrom:@- aContext +Perform the call-out for the function represented by the receiver. +The arguments (and the receiver if one of the arguments has type +@-#self or @-#selfSmalltalk) are taken from the base of the stack of +aContext. Asynchronous call-outs don't return a value, but if the +function calls back into Smalltalk the process that started the +call-out is not suspended. Unlike @-#asyncCallFrom:@-, this method +does not attempt to find functions in shared objects. + + +@meindex callInto:@- +@slindex self +@slindex selfSmalltalk +@item callInto:@- aValueHolder +Perform the call-out for the function represented by the receiver. The +arguments (and the receiver if one of the arguments has type +@-#self or @-#selfSmalltalk) are taken from the parent context, and the +the result is stored into aValueHolder. aValueHolder is also returned. + + +@meindex callNoRetryFrom:@-into:@- +@slindex self +@slindex selfSmalltalk +@slindex callFrom:@-into:@- +@item callNoRetryFrom:@- aContext into:@- aValueHolder +Perform the call-out for the function represented by the receiver. The +arguments (and the receiver if one of the arguments has type +@-#self or @-#selfSmalltalk) are taken from the base of the stack of +aContext, and the result is stored into aValueHolder. aValueHolder +is also returned. Unlike @-#callFrom:@-into:@-, this method does not +attempt to find functions in shared objects. + + +@end table + + + +@node CCallable-restoring +@subsection CCallable:@- restoring + +@table @b +@meindex link +@item link +Rebuild the object after the image is restarted. + + +@end table + +@node CCallbackDescriptor +@section CCallbackDescriptor +@clindex CCallbackDescriptor + +@table @b +@item Defined in namespace Smalltalk +@itemx Superclass: CCallable +@itemx Category: Language-C interface +I am not part of the Smalltalk definition. My instances are +able to convert blocks into C functions that can be passed to C. +@end table + +@menu +* CCallbackDescriptor class-instance creation:: (class) +* CCallbackDescriptor-accessing:: (instance) +* CCallbackDescriptor-restoring:: (instance) +@end menu + + + +@node CCallbackDescriptor class-instance creation +@subsection CCallbackDescriptor class:@- instance creation + +@table @b +@meindex for:@-returning:@-withArgs:@- +@item for:@- aBlock returning:@- returnTypeSymbol withArgs:@- argsArray +Answer a CFunctionDescriptor with the given function name, return type +and arguments. funcName must be a String. + + +@end table + + + +@node CCallbackDescriptor-accessing +@subsection CCallbackDescriptor:@- accessing + +@table @b +@meindex block +@item block +Answer the name of the function (on the C side) represented by the +receiver + + +@meindex block:@- +@item block:@- aBlock +Set the name of the function (on the C side) represented by the +receiver + + +@end table + + + +@node CCallbackDescriptor-restoring +@subsection CCallbackDescriptor:@- restoring + +@table @b +@meindex link +@item link +Make the address of the function point to the registered address. + + +@end table + @node CChar @section CChar @clindex CChar @@ -4464,6 +4556,12 @@ @subsection CCompound class:@- instance creation @table @b +@meindex gcNew +@item gcNew +Allocate a new instance of the receiver, backed by garbage-collected +storage. + + @meindex new @slindex addToBeFinalized @item new @@ -4688,7 +4786,7 @@ @table @b @item Defined in namespace Smalltalk -@itemx Superclass: Object +@itemx Superclass: CCallable @itemx Category: Language-C interface I am not part of the Smalltalk definition. My instances contain information about C functions that can be called from within Smalltalk, such as number @@ -4700,8 +4798,8 @@ * CFunctionDescriptor class-instance creation:: (class) * CFunctionDescriptor class-testing:: (class) * CFunctionDescriptor-accessing:: (instance) -* CFunctionDescriptor-calling:: (instance) * CFunctionDescriptor-printing:: (instance) +* CFunctionDescriptor-restoring:: (instance) @end menu @@ -4711,8 +4809,9 @@ @table @b @meindex for:@-returning:@-withArgs:@- -@item for:@- funcNameString returning:@- returnTypeSymbol withArgs:@- argsArray -Private - Answer a CFunctionDescriptor +@item for:@- funcName returning:@- returnTypeSymbol withArgs:@- argsArray +Answer a CFunctionDescriptor with the given function name, return type +and arguments. funcName must be a String. @end table @@ -4743,98 +4842,42 @@ @subsection CFunctionDescriptor:@- accessing @table @b -@meindex address -@item address -Answer the address (CObject) of the function represented by -the receiver - - -@meindex address:@- -@item address:@- aCObject -Set to aCObject the address of the function represented by -the receiver - - -@meindex isValid -@item isValid -Answer whether the function represented by the receiver is actually -a registered one - - @meindex name @item name Answer the name of the function (on the C side) represented by the receiver -@end table - - - -@node CFunctionDescriptor-calling -@subsection CFunctionDescriptor:@- calling - -@table @b -@meindex asyncCall -@slindex self -@slindex selfSmalltalk -@item asyncCall -Perform the call-out for the function represented by the receiver. -The arguments (and the receiver if one of the arguments has type -@-#self or @-#selfSmalltalk) are taken from the parent context. -Asynchronous call-outs don't return a value, but if the -function calls back into Smalltalk the process that started the -call-out is not suspended. +@meindex name:@- +@item name:@- aString +Set the name of the function (on the C side) represented by the +receiver -@meindex asyncCallNoRetryFrom:@- -@slindex self -@slindex selfSmalltalk -@slindex asyncCallFrom:@- -@item asyncCallNoRetryFrom:@- aContext -Perform the call-out for the function represented by the receiver. -The arguments (and the receiver if one of the arguments has type -@-#self or @-#selfSmalltalk) are taken from the base of the stack of -aContext. Asynchronous call-outs don't return a value, but if the -function calls back into Smalltalk the process that started the -call-out is not suspended. Unlike @-#asyncCallFrom:@-, this method -does not attempt to find functions in shared objects. +@end table -@meindex callInto:@- -@slindex self -@slindex selfSmalltalk -@item callInto:@- aValueHolder -Perform the call-out for the function represented by the receiver. The -arguments (and the receiver if one of the arguments has type -@-#self or @-#selfSmalltalk) are taken from the parent context, and the -the result is stored into aValueHolder. aValueHolder is also returned. +@node CFunctionDescriptor-printing +@subsection CFunctionDescriptor:@- printing -@meindex callNoRetryFrom:@-into:@- -@slindex self -@slindex selfSmalltalk -@slindex callFrom:@-into:@- -@item callNoRetryFrom:@- aContext into:@- aValueHolder -Perform the call-out for the function represented by the receiver. The -arguments (and the receiver if one of the arguments has type -@-#self or @-#selfSmalltalk) are taken from the base of the stack of -aContext, and the result is stored into aValueHolder. aValueHolder -is also returned. Unlike @-#callFrom:@-into:@-, this method does not -attempt to find functions in shared objects. +@table @b +@meindex printOn:@- +@item printOn:@- aStream +Print a representation of the receiver onto aStream @end table -@node CFunctionDescriptor-printing -@subsection CFunctionDescriptor:@- printing +@node CFunctionDescriptor-restoring +@subsection CFunctionDescriptor:@- restoring @table @b -@meindex printOn:@- -@item printOn:@- aStream -Print a representation of the receiver onto aStream +@meindex link +@item link +Make the address of the function point to the registered address. @end table @@ -5072,6 +5115,11 @@ @subsection Character:@- coercion methods @table @b +@meindex * +@item * aNumber +Returns a String with aNumber occurrences of the receiver. + + @meindex asLowercase @item asLowercase Returns self as a lowercase character if it's an uppercase letter, @@ -5381,11 +5429,6 @@ the receiver, it is considered to be less than the receiver. -@meindex endsWith:@- -@item endsWith:@- aCharacterArray -Returns true if the receiver ends with the same characters as aCharacterArray. - - @meindex indexOf:@-matchCase:@-startingAt:@- @item indexOf:@- aCharacterArray matchCase:@- aBoolean startingAt:@- anIndex Answer an Interval of indices in the receiver which match the aCharacterArray @@ -5417,11 +5460,6 @@ case differences. -@meindex startsWith:@- -@item startsWith:@- aCharacterArray -Returns true if the receiver starts with the same characters as aCharacterArray. - - @end table @@ -5734,6 +5772,7 @@ * Class-printing:: (instance) * Class-saving and loading:: (instance) * Class-security:: (instance) +* Class-still unclassified:: (instance) * Class-testing:: (instance) * Class-testing functionality:: (instance) @end menu @@ -6119,6 +6158,20 @@ +@node Class-still unclassified +@subsection Class:@- still unclassified + +@table @b +@meindex allSharedPoolDictionariesDo:@- +@item allSharedPoolDictionariesDo:@- aBlock +Answer the shared pools visible from methods in the metaclass, +in the correct search order. + + +@end table + + + @node Class-testing @subsection Class:@- testing @@ -6561,12 +6614,15 @@ @menu * CObject class-conversion:: (class) * CObject class-instance creation:: (class) +* CObject class-primitive allocation:: (class) * CObject class-subclassing:: (class) * CObject-accessing:: (instance) +* CObject-basic:: (instance) * CObject-C data access:: (instance) * CObject-conversion:: (instance) * CObject-finalization:: (instance) * CObject-pointer-like behavior:: (instance) +* CObject-testing functionality:: (instance) @end menu @@ -6598,9 +6654,14 @@ Allocate nBytes bytes and return an instance of the receiver -@meindex alloc:@-type:@- -@item alloc:@- nBytes type:@- cTypeObject -Allocate nBytes bytes and return a CObject of the given type +@meindex gcAlloc:@- +@item gcAlloc:@- nBytes +Allocate nBytes bytes and return an instance of the receiver + + +@meindex gcNew:@- +@item gcNew:@- nBytes +Allocate nBytes bytes and return an instance of the receiver @meindex new @@ -6617,6 +6678,24 @@ +@node CObject class-primitive allocation +@subsection CObject class:@- primitive allocation + +@table @b +@meindex alloc:@-type:@- +@item alloc:@- nBytes type:@- cTypeObject +Allocate nBytes bytes and return a CObject of the given type + + +@meindex gcAlloc:@-type:@- +@item gcAlloc:@- nBytes type:@- cTypeObject +Allocate nBytes bytes and return a CObject of the given type + + +@end table + + + @node CObject class-subclassing @subsection CObject class:@- subclassing @@ -6635,8 +6714,12 @@ @table @b @meindex address +@slindex storage @item address -Answer the address the receiver is pointing to. +Answer the address the receiver is pointing to. The address can +be absolute if the storage is nil, or relative to the Smalltalk +object in @-#storage. In this case, an address of 0 corresponds to +the first instance variable. @meindex address:@- @@ -6644,11 +6727,28 @@ Set the receiver to point to the passed address, anInteger +@meindex isAbsolute +@item isAbsolute +Answer whether the object points into a garbage-collected Smalltalk +storage, or it is an absolute address. + + @meindex printOn:@- @item printOn:@- aStream Print a representation of the receiver +@meindex storage +@item storage +Answer the storage that the receiver is pointing into, or nil +if the address is absolute. + + +@meindex storage:@- +@item storage:@- anObject +Change the receiver to point to the storage of anObject. + + @meindex type:@- @item type:@- aCType Set the receiver's type to aCType. @@ -6658,8 +6758,26 @@ -@node CObject-C data access -@subsection CObject:@- C data access +@node CObject-basic +@subsection CObject:@- basic + +@table @b +@meindex = +@item = anObject +Return true if the receiver and aCObject are equal. + + +@meindex hash +@item hash +Return a hash value for anObject. + + +@end table + + + +@node CObject-C data access +@subsection CObject:@- C data access @table @b @meindex at:@-put:@-type:@- @@ -6806,13 +6924,25 @@ @end table + + +@node CObject-testing functionality +@subsection CObject:@- testing functionality + +@table @b +@meindex isCObject +@item isCObject +Answer `true'. + +@end table + @node Collection @section Collection @clindex Collection @table @b @item Defined in namespace Smalltalk -@itemx Superclass: Object +@itemx Superclass: Iterable @itemx Category: Collections I am an abstract class. My instances are collections of objects. My subclasses may place some restrictions or add some definitions to how @@ -6825,6 +6955,7 @@ * Collection class-instance creation:: (class) * Collection class-multibyte encodings:: (class) * Collection-adding:: (instance) +* Collection-concatenating:: (instance) * Collection-converting:: (instance) * Collection-copying Collections:: (instance) * Collection-enumeration:: (instance) @@ -6927,6 +7058,27 @@ +@node Collection-concatenating +@subsection Collection:@- concatenating + +@table @b +@meindex join +@item join +Answer a new collection like my first element, with all the +elements (in order) of all my elements, which should be +collections. + +I use my first element instead of myself as a prototype because +my elements are more likely to share the desired properties than +I am, such as in:@- + +@-#('hello, ' 'world') join => 'hello, world' + + +@end table + + + @node Collection-converting @subsection Collection:@- converting @@ -7021,23 +7173,11 @@ @subsection Collection:@- enumeration @table @b -@meindex allSatisfy:@- -@item allSatisfy:@- aBlock -Search the receiver for an element for which aBlock returns false. -Answer true if none does, false otherwise. - - @meindex anyOne @item anyOne Answer an unspecified element of the collection. -@meindex anySatisfy:@- -@item anySatisfy:@- aBlock -Search the receiver for an element for which aBlock returns true. -Answer true if some does, false otherwise. - - @meindex beConsistent @slindex do:@- @item beConsistent @@ -7058,76 +7198,13 @@ of evaluating aBlock passing each of the receiver's elements -@meindex conform:@- -@item conform:@- aBlock -Search the receiver for an element for which aBlock returns false. -Answer true if none does, false otherwise. - - -@meindex contains:@- -@item contains:@- aBlock -Search the receiver for an element for which aBlock returns true. -Answer true if some does, false otherwise. - - -@meindex count:@- -@item count:@- aBlock -Count the elements of the receiver for which aBlock returns true, -and return their number. - - -@meindex detect:@- -@item detect:@- aBlock -Search the receiver for an element for which aBlock returns true. -If some does, answer it. If none does, fail - - -@meindex detect:@-ifNone:@- -@item detect:@- aBlock ifNone:@- exceptionBlock -Search the receiver for an element for which aBlock returns true. -If some does, answer it. If none does, answer the result of evaluating -aBlock - - -@meindex do:@- -@item do:@- aBlock -Enumerate each object of the receiver, passing them to aBlock - - -@meindex do:@-separatedBy:@- -@item do:@- aBlock separatedBy:@- separatorBlock -Enumerate each object of the receiver, passing them to aBlock. -Between every two invocations of aBlock, invoke separatorBlock - - -@meindex fold:@- -@item fold:@- binaryBlock -First, pass to binaryBlock the first and second elements of the -receiver; for each subsequent element, pass the result of the previous -evaluation and an element. Answer the result of the last invocation, -or the first element if the collection has size 1. Fail if the collection -is empty. - - @meindex gather:@- +@slindex join @item gather:@- aBlock Answer a new instance of a Collection containing all the results of evaluating aBlock, joined together. aBlock should return -collections. The result is the same kind of the receiver, -independent of the type of collection returned by aBlock. - - -@meindex inject:@-into:@- -@item inject:@- thisValue into:@- binaryBlock -First, pass to binaryBlock thisValue and the first element of the -receiver; for each subsequent element, pass the result of the previous -evaluation and an element. Answer the result of the last invocation. - - -@meindex noneSatisfy:@- -@item noneSatisfy:@- aBlock -Search the receiver for an element for which aBlock returns true. -Answer true if none does, false otherwise. +collections. The result is the same kind as the first collection, +returned by aBlock (as for @-#join). @meindex readStream @@ -7384,6 +7461,19 @@ Set the selector through which the method is called +@meindex sourceCodeLinesDelta +@item sourceCodeLinesDelta +Answer the delta from the numbers in LINE_NUMBER bytecodes +to source code line numbers. + + +@meindex sourceCodeMap +@item sourceCodeMap +Answer an array which maps bytecode indices to source code +line numbers. 0 values represent invalid instruction +pointer indices. + + @meindex stackDepth @item stackDepth Answer the number of stack slots needed for the receiver @@ -7657,6 +7747,12 @@ Set the selector through which the method is called +@meindex sourceCodeLinesDelta +@item sourceCodeLinesDelta +Answer the delta from the numbers in LINE_NUMBER bytecodes +to source code line numbers. + + @meindex stackDepth @item stackDepth Answer the number of stack slots needed for the receiver @@ -7822,8 +7918,8 @@ of the indices between firstIndex and lastIndex. -@meindex jumpDestinationAt:@- -@item jumpDestinationAt:@- anIndex +@meindex jumpDestinationAt:@-forward:@- +@item jumpDestinationAt:@- anIndex forward:@- aBoolean Answer where the jump at bytecode index `anIndex' lands @@ -7875,6 +7971,7 @@ @end table @menu +* CompiledMethod class-c call-outs:: (class) * CompiledMethod class-instance creation:: (class) * CompiledMethod class-lean images:: (class) * CompiledMethod-accessing:: (instance) @@ -7891,6 +7988,30 @@ +@node CompiledMethod class-c call-outs +@subsection CompiledMethod class:@- c call-outs + +@table @b +@meindex asyncCCall:@-numArgs:@-attributes:@- +@slindex asyncCCall:@-args:@- +pragma +@item asyncCCall:@- descr numArgs:@- numArgs attributes:@- attributesArray +Return a CompiledMethod corresponding to a @-#asyncCCall:@-args:@- +pragma with the given arguments. + + +@meindex cCall:@-numArgs:@-attributes:@- +@slindex cCall:@-returning:@-args:@- +pragma +@item cCall:@- descr numArgs:@- numArgs attributes:@- attributesArray +Return a CompiledMethod corresponding to a @-#cCall:@-returning:@-args:@- +pragma with the given arguments. + + +@end table + + + @node CompiledMethod class-instance creation @subsection CompiledMethod class:@- instance creation @@ -8007,6 +8128,12 @@ Set the selector through which the method is called +@meindex sourceCodeLinesDelta +@item sourceCodeLinesDelta +Answer the delta from the numbers in LINE_NUMBER bytecodes +to source code line numbers. + + @meindex stackDepth @item stackDepth Answer the number of stack slots needed for the receiver @@ -8110,7 +8237,7 @@ Not commented. @meindex rewriteAsCCall:@-for:@- -@item rewriteAsCCall:@- func for:@- aClass +@item rewriteAsCCall:@- funcOrDescr for:@- aClass Not commented. @meindex rewriteAsCCall:@-returning:@-args:@- @@ -8300,7 +8427,6 @@ * ContextPart-copying:: (instance) * ContextPart-debugging:: (instance) * ContextPart-enumerating:: (instance) -* ContextPart-exception handling:: (instance) * ContextPart-printing:: (instance) * ContextPart-security checks:: (instance) @end menu @@ -8336,19 +8462,6 @@ Print a backtrace from the caller to the bottom of the stack on aStream -@meindex lastUnwindPoint -@item lastUnwindPoint -Private - Return the last context marked as an unwind point, or -our environment if none is. - - -@meindex removeLastUnwindPoint -@item removeLastUnwindPoint -Private - Return and remove the last context marked as an unwind point, -or our environment if the last unwind point belongs to another -environment. - - @meindex unwind @item unwind Return execution to the last context marked as an unwind point, returning @@ -8356,9 +8469,10 @@ @meindex unwind:@- +@slindex valueWithUnwind @item unwind:@- returnValue -Return execution to the last context marked as an unwind point, returning -returnValue on that stack. +Return execution to the innermost @-#valueWithUnwind call, passing it +returnValue. @end table @@ -8375,6 +8489,11 @@ message that created this context. Fail if the receiver has no parent +@meindex currentFileName +@item currentFileName +Answer the name of the file where the method source code is + + @meindex environment @item environment To create a valid execution environment for the interpreter even before @@ -8569,8 +8688,15 @@ @meindex currentLine @item currentLine Answer the 1-based number of the line that is pointed to by the receiver's -instruction pointer. It is always 1 unless the DebugTools package is -loaded. +instruction pointer. The DebugTools package caches information, +thus making the implementation faster. + + +@meindex currentLineInFile +@item currentLineInFile +Answer the 1-based number of the line that is pointed to by the +receiver's instruction pointer, relative to the method's file. +The implementation is slow unless the DebugTools package is loaded. @meindex debugger @@ -8618,19 +8744,6 @@ -@node ContextPart-exception handling -@subsection ContextPart:@- exception handling - -@table @b -@meindex mark -@item mark -Add the receiver as a possible unwind point - - -@end table - - - @node ContextPart-printing @subsection ContextPart:@- printing @@ -8915,6 +9028,12 @@ @subsection CScalar class:@- instance creation @table @b +@meindex gcValue:@- +@item gcValue:@- anObject +Answer a newly allocated CObject containing the passed value, +anObject, in garbage-collected storage. + + @meindex type @item type Answer a CType for the receiver---for example, CByteType if @@ -9413,6 +9532,13 @@ pointing to the given address (identified by an Integer or CObject). +@meindex gcNew +@item gcNew +Allocate a new CObject with the type (class) identified by the receiver. +The object is movable in memory, but on the other hand it is +garbage-collected automatically. + + @meindex new @item new Allocate a new CObject with the type (class) identified by the receiver. @@ -10722,7 +10848,7 @@ * Dictionary-dictionary enumerating:: (instance) * Dictionary-dictionary removing:: (instance) * Dictionary-dictionary testing:: (instance) -* Dictionary-polymorphism hacks:: (instance) +* Dictionary-namespace protocol:: (instance) * Dictionary-printing:: (instance) * Dictionary-rehashing:: (instance) * Dictionary-storing:: (instance) @@ -10977,13 +11103,83 @@ -@node Dictionary-polymorphism hacks -@subsection Dictionary:@- polymorphism hacks +@node Dictionary-namespace protocol +@subsection Dictionary:@- namespace protocol @table @b +@meindex allSuperspaces +@item allSuperspaces +Answer all the receiver's superspaces in a collection + + +@meindex allSuperspacesDo:@- +@item allSuperspacesDo:@- aBlock +Evaluate aBlock once for each of the receiver's superspaces (which +is none for BindingDictionary). + + +@meindex definedKeys +@item definedKeys +Answer a kind of Set containing the keys of the receiver + + +@meindex definesKey:@- +@item definesKey:@- key +Answer whether the receiver defines the given key. `Defines' +means that the receiver's superspaces, if any, are not considered. + + +@meindex hereAssociationAt:@- +@item hereAssociationAt:@- key +Return the association for the variable named as specified +by `key' *in this namespace*. If the key is not found search will +*not* be carried on in superspaces and the method will fail. + + +@meindex hereAssociationAt:@-ifAbsent:@- +@item hereAssociationAt:@- key ifAbsent:@- aBlock +Return the association for the variable named as specified +by `key' *in this namespace*. If the key is not found search will +*not* be carried on in superspaces and aBlock will be immediately +evaluated. + + +@meindex hereAt:@- +@item hereAt:@- key +Return the value associated to the variable named as specified +by `key' *in this namespace*. If the key is not found search will +*not* be carried on in superspaces and the method will fail. + + +@meindex hereAt:@-ifAbsent:@- +@item hereAt:@- key ifAbsent:@- aBlock +Return the value associated to the variable named as specified +by `key' *in this namespace*. If the key is not found search will +*not* be carried on in superspaces and aBlock will be immediately +evaluated. + + +@meindex inheritsFrom:@- +@item inheritsFrom:@- aNamespace +Answer whether aNamespace is one of the receiver's direct and +indirect superspaces + + +@meindex superspace +@item superspace +Answer the receiver's superspace, which is nil for BindingDictionary. + + @meindex withAllSuperspaces @item withAllSuperspaces -This method is needed by the compiler +Answer the receiver and all of its superspaces in a collection, +which is none for BindingDictionary + + +@meindex withAllSuperspacesDo:@- +@item withAllSuperspacesDo:@- aBlock +Invokes aBlock for the receiver and all superspaces, both direct +and indirect (though a BindingDictionary does not have any). @end table @@ -11192,7 +11388,7 @@ @table @b @item Defined in namespace Smalltalk -@itemx Superclass: File +@itemx Superclass: Object @itemx Category: Streams-Files I am the counterpart of File in a tree-structured file system:@- I can iterate through the file that I contain and construct new instances @@ -11205,8 +11401,6 @@ * Directory class-file name management:: (class) * Directory class-file operations:: (class) * Directory class-reading system defaults:: (class) -* Directory-accessing:: (instance) -* Directory-enumerating:: (instance) @end menu @@ -11286,7 +11480,7 @@ @meindex kernel @item kernel Answer the path in which a local version of the GNU Smalltalk kernel's -Smalltalk source files were searched when the image was created +Smalltalk source files were searched when the image was created. @meindex libexec @@ -11297,7 +11491,7 @@ @meindex localKernel @item localKernel Answer the path to the GNU Smalltalk kernel's Smalltalk source files. -Same as `Directory kernel' since GNU Smalltalk 2.4. +Same as `Directory kernel' since GNU Smalltalk 3.0. @meindex module @@ -11307,8 +11501,7 @@ @meindex systemKernel @item systemKernel -Answer the path to the GNU Smalltalk kernel's Smalltalk source files. -Same as `Directory kernel' since GNU Smalltalk 2.4. +Answer the path to the installed Smalltalk kernel source files. @meindex temporary @@ -11325,97 +11518,6 @@ @end table - - -@node Directory-accessing -@subsection Directory:@- accessing - -@table @b -@meindex at:@- -@item at:@- aName -Answer a File or Directory object as appropriate for a file named -'aName' in the directory represented by the receiver. - - -@meindex directoryAt:@- -@item directoryAt:@- aName -Answer a Directory object for a file named `aName' residing in the -directory represented by the receiver. - - -@meindex fileAt:@- -@item fileAt:@- aName -Answer a File object for a file named `aName' residing in the -directory represented by the receiver. - - -@meindex fullNameAt:@- -@item fullNameAt:@- aName -Answer a String containing the full path to a file named `aName' which -resides in the directory represented by the receiver. - - -@meindex includes:@- -@item includes:@- aName -Answer whether a file named `aName' exists in the directory represented -by the receiver. - - -@meindex nameAt:@- -@item nameAt:@- aName -Answer a String containing the path to a file named `aName' which -resides in the directory represented by the receiver. - - -@meindex pathTo:@- -@item pathTo:@- destName -Compute the relative path from the receiver to destName. - - -@end table - - - -@node Directory-enumerating -@subsection Directory:@- enumerating - -@table @b -@meindex allFilesMatching:@-do:@- -@slindex match:@- -@item allFilesMatching:@- aPattern do:@- aBlock -Evaluate aBlock on the File objects that match aPattern (according to -String>>@-#match:@-) in the directory named by the receiver. Recursively -descend into directories. - - -@meindex contents -@item contents -Answer an Array with the names of the files in the directory -represented by the receiver. - - -@meindex do:@- -@item do:@- aBlock -Evaluate aBlock once for each file in the directory represented by the -receiver, passing its name. aBlock should not return. - - -@meindex filesMatching:@-do:@- -@slindex match:@- -@item filesMatching:@- aPattern do:@- block -Evaluate block on the File objects that match aPattern (according to -String>>@-#match:@-) in the directory named by the receiver. - - -@meindex namesMatching:@-do:@- -@slindex match:@- -@item namesMatching:@- aPattern do:@- block -Evaluate block on the file names that match aPattern (according to -String>>@-#match:@-) in the directory named by the receiver. - - -@end table - @node DLD @section DLD @clindex DLD @@ -12102,25 +12204,24 @@ @table @b @item Defined in namespace Smalltalk -@itemx Superclass: Object +@itemx Superclass: FilePath @itemx Category: Streams-Files -I expose the syntax of file names, including paths. I know how to -manipulate such a path by splitting it into its components. In addition, -I expose information about files (both real and virtual) such as their -size and timestamps. +I enable access to the properties of files that are on disk. @end table @menu * File class-C functions:: (class) -* File class-file name management:: (class) * File class-file operations:: (class) +* File class-initialization:: (class) * File class-instance creation:: (class) * File class-reading system defaults:: (class) * File class-testing:: (class) * File-accessing:: (instance) +* File-basic:: (instance) +* File-directory operations:: (instance) * File-file name management:: (instance) * File-file operations:: (instance) -* File-printing:: (instance) +* File-still unclassified:: (instance) * File-testing:: (instance) @end menu @@ -12144,65 +12245,6 @@ -@node File class-file name management -@subsection File class:@- file name management - -@table @b -@meindex extensionFor:@- -@item extensionFor:@- aString -Answer the extension of a file named `aString'. Note:@- the extension -includes an initial dot. - - -@meindex fullNameFor:@- -@item fullNameFor:@- aString -Answer the full path to a file called `aString', resolving the `.' and -`..' directory entries, and answer the result. `/..' is the same as '/'. - - -@meindex pathFor:@- -@item pathFor:@- aString -Determine the path of the name of a file called `aString', and -answer the result. With the exception of the root directory, the -final slash is stripped. - - -@meindex pathFor:@-ifNone:@- -@item pathFor:@- aString ifNone:@- aBlock -Determine the path of the name of a file called `aString', and -answer the result. With the exception of the root directory, the -final slash is stripped. If there is no path, evaluate aBlock and -return the result. - - -@meindex pathFrom:@-to:@- -@item pathFrom:@- srcName to:@- destName -Answer the relative path to destName when the current -directory is srcName's directory. - - -@meindex stripExtensionFrom:@- -@item stripExtensionFrom:@- aString -Remove the extension from the name of a file called `aString', and -answer the result. - - -@meindex stripFileNameFor:@- -@item stripFileNameFor:@- aString -Determine the path of the name of a file called `aString', and -answer the result as a directory name including the final slash. - - -@meindex stripPathFrom:@- -@item stripPathFrom:@- aString -Remove the path from the name of a file called `aString', and -answer the file name plus extension. - - -@end table - - - @node File class-file operations @subsection File class:@- file operations @@ -12249,20 +12291,33 @@ +@node File class-initialization +@subsection File class:@- initialization + +@table @b +@meindex initialize +@item initialize +Initialize the receiver's class variables + + +@end table + + + @node File class-instance creation @subsection File class:@- instance creation @table @b @meindex name:@- @item name:@- aName -Answer a new file with the given path. The path is not validated until -some of the fields of the newly created objects are accessed +Answer a new file with the given path. The path is turned into +an absolute path. -@meindex on:@- -@item on:@- aVFSHandler -Answer a new file with the given path. The handler that returns -the information is aVFSHandler +@meindex path:@- +@item path:@- aString +Answer a new file with the given path. The path is not validated until +some of the fields of the newly created objects are accessed @end table @@ -12324,6 +12379,17 @@ @subsection File:@- accessing @table @b +@meindex asString +@item asString +Answer the name of the file identified by the receiver + + +@meindex at:@- +@item at:@- aString +Answer a File or Directory object as appropriate for a file named +'aName' in the directory represented by the receiver. + + @meindex creationTime @item creationTime Answer the creation time of the file identified by the receiver. @@ -12332,21 +12398,24 @@ like). -@meindex lastAccessTime -@item lastAccessTime -Answer the last access time of the file identified by the receiver +@meindex isDirectory +@item isDirectory +Answer whether the file is a directory. -@meindex lastAccessTime:@- -@item lastAccessTime:@- aDateTime -Update the last access time of the file corresponding to the receiver, -to be aDateTime. +@meindex isSocket +@item isSocket +Answer whether the file is an AF_UNIX socket. -@meindex lastAccessTime:@-lastModifyTime:@- -@item lastAccessTime:@- accessDateTime lastModifyTime:@- modifyDateTime -Update the timestamps of the file corresponding to the receiver, to be -accessDateTime and modifyDateTime. +@meindex isSymbolicLink +@item isSymbolicLink +Answer whether the file is a symbolic link. + + +@meindex lastAccessTime +@item lastAccessTime +Answer the last access time of the file identified by the receiver @meindex lastChangeTime @@ -12363,12 +12432,6 @@ (the `last modify time' has to do with the actual file contents). -@meindex lastModifyTime:@- -@item lastModifyTime:@- aDateTime -Update the last modification timestamp of the file corresponding to the -receiver, to be aDateTime. - - @meindex mode @item mode Answer the permission bits for the file identified by the receiver @@ -12385,6 +12448,11 @@ Answer the name of the file identified by the receiver +@meindex pathTo:@- +@item pathTo:@- destName +Compute the relative path from the receiver to destName. + + @meindex refresh @item refresh Refresh the statistics for the receiver @@ -12399,104 +12467,91 @@ -@node File-file name management -@subsection File:@- file name management +@node File-basic +@subsection File:@- basic @table @b -@meindex directory -@item directory -Answer the Directory object for the receiver's path +@meindex = +@item = aFile +Answer whether the receiver represents the same file as the receiver. -@meindex extension -@item extension -Answer the extension of the receiver +@meindex hash +@item hash +Answer a hash value for the receiver. -@meindex fullName -@item fullName -Answer the full name of the receiver, resolving the `.' and -`..' directory entries, and answer the result. Answer nil if the -name is invalid (such as '/usr/../../badname') +@end table -@meindex path -@item path -Answer the path (if any) of the receiver +@node File-directory operations +@subsection File:@- directory operations -@meindex stripExtension -@item stripExtension -Answer the path (if any) and file name of the receiver +@table @b +@meindex createDirectories +@item createDirectories +Create the receiver as a directory, together with all its parents. -@meindex stripFileName -@item stripFileName -Answer the path of the receiver, always including a directory -name (possibly `.') and the final directory separator +@meindex createDirectory +@item createDirectory +Create the receiver as a directory. -@meindex stripPath -@item stripPath -Answer the file name and extension (if any) of the receiver +@meindex namesDo:@- +@item namesDo:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing its name. aBlock should not return. @end table -@node File-file operations -@subsection File:@- file operations +@node File-file name management +@subsection File:@- file name management @table @b -@meindex contents -@item contents -Open a read-only FileStream on the receiver, read its contents, -close the stream and answer the contents +@meindex full +@item full +Answer the full name of the receiver, resolving the `.' and +`..' directory entries, and answer the result. Answer nil if the +name is invalid (such as '/usr/../../badname') -@meindex open:@- -@item open:@- mode -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +@end table -@meindex open:@-ifFail:@- -@item open:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods). Upon failure, evaluate aBlock. +@node File-file operations +@subsection File:@- file operations -@meindex openDescriptor:@- -@item openDescriptor:@- mode -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +@table @b +@meindex lastAccessTime:@-lastModifyTime:@- +@item lastAccessTime:@- accessDateTime lastModifyTime:@- modifyDateTime +Set the receiver's timestamps to be accessDateTime and modifyDateTime. -@meindex openDescriptor:@-ifFail:@- -@item openDescriptor:@- mode ifFail:@- aBlock +@meindex open:@-mode:@-ifFail:@- +@item open:@- class mode:@- mode ifFail:@- aBlock Open the receiver in the given mode (as answered by FileStream's -class constant methods). Upon failure, evaluate aBlock. +class constant methods) @meindex pathFrom:@- -@item pathFrom:@- dirName +@item pathFrom:@- dir Compute the relative path from the directory dirName to the receiver -@meindex readStream -@item readStream -Open a read-only FileStream on the receiver - - @meindex remove @item remove -Remove the file identified by the receiver +Remove the file with the given path name @meindex renameTo:@- -@item renameTo:@- newName -Rename the file identified by the receiver to newName +@item renameTo:@- newFileName +Rename the file with the given path name to newFileName @meindex symlinkAs:@- @@ -12507,48 +12562,21 @@ @meindex symlinkFrom:@- @item symlinkFrom:@- srcName -Create the receiver as a symbolic link from srcName (relative to the -path of the receiver). +Create the receiver as a symlink from path destName -@meindex touch -@item touch -Update the timestamp of the file corresponding to the receiver. +@end table -@meindex withReadStreamDo:@- -@item withReadStreamDo:@- aBlock -Invoke aBlock with a reading stream open on me, closing it -when the dynamic extent of aBlock ends. - -@meindex withWriteStreamDo:@- -@item withWriteStreamDo:@- aBlock -Invoke aBlock with a writing stream open on me, closing it -when the dynamic extent of aBlock ends. - - -@meindex writeStream -@item writeStream -Open a write-only FileStream on the receiver - - -@end table - - - -@node File-printing -@subsection File:@- printing +@node File-still unclassified +@subsection File:@- still unclassified @table @b -@meindex displayOn:@- -@item displayOn:@- aStream -Print a representation of the receiver on aStream. - - -@meindex printOn:@- -@item printOn:@- aStream -Print a representation of the receiver on aStream. +@meindex , +@item , aName +Answer an object of the same kind as the receiver, whose name +is suffixed with aName. @end table @@ -12564,16 +12592,15 @@ Answer whether a file with the name contained in the receiver does exist. -@meindex isAccessible -@item isAccessible -Answer whether a directory with the name contained in the receiver does -exist and can be accessed +@meindex isAbsolute +@item isAbsolute +Answer whether the receiver identifies an absolute path. -@meindex isDirectory -@item isDirectory -Answer whether a file with the name contained in the receiver does exist -and identifies a directory. +@meindex isAccessible +@item isAccessible +Answer whether a directory with the name contained in the receiver +does exist and is accessible @meindex isExecutable @@ -12582,10 +12609,9 @@ and is executable -@meindex isFile -@item isFile -Answer whether a file with the name contained in the receiver does exist -and does not identify a directory. +@meindex isFileSystemPath +@item isFileSystemPath +Answer whether the receiver corresponds to a real filesystem path. @meindex isReadable @@ -12594,12 +12620,6 @@ and is readable -@meindex isSymbolicLink -@item isSymbolicLink -Answer whether a file with the name contained in the receiver does exist -and does not identify a directory. - - @meindex isWriteable @item isWriteable Answer whether a file with the name contained in the receiver does exist @@ -12614,7 +12634,7 @@ @table @b @item Defined in namespace Smalltalk -@itemx Superclass: ByteStream +@itemx Superclass: Stream @itemx Category: Streams-Files My instances are what conventional programmers think of as files. My instance creation methods accept the name of a disk file (or any named @@ -12630,11 +12650,14 @@ * FileDescriptor class-still unclassified:: (class) * FileDescriptor-accessing:: (instance) * FileDescriptor-basic:: (instance) +* FileDescriptor-binary I/O:: (instance) * FileDescriptor-built ins:: (instance) * FileDescriptor-class type methods:: (instance) * FileDescriptor-initialize-release:: (instance) * FileDescriptor-low-level access:: (instance) * FileDescriptor-overriding inherited methods:: (instance) +* FileDescriptor-polymorphism:: (instance) +* FileDescriptor-positioning:: (instance) * FileDescriptor-printing:: (instance) * FileDescriptor-testing:: (instance) @end menu @@ -12888,11 +12911,22 @@ Return the OS file descriptor of the file +@meindex file +@item file +Return the name of the file + + @meindex isOpen @item isOpen Answer whether the file is still open +@meindex isPeerAlive +@item isPeerAlive +Present for compatibility with sockets. For files, it answers +whether the file is still open + + @meindex isPipe @item isPipe Answer whether the file is a pipe or an actual disk file @@ -12966,11 +13000,6 @@ Store aCharacter on the file -@meindex nextPutByte:@- -@item nextPutByte:@- anInteger -Store the byte, anInteger, on the file - - @meindex nextPutByteArray:@- @item nextPutByteArray:@- aByteArray Store aByteArray on the file @@ -12982,6 +13011,12 @@ Returns nil when at end of stream. +@meindex peekFor:@- +@item peekFor:@- anObject +Returns whether the next element of the stream is equal to anObject, +without moving the pointer if it is not. + + @meindex position @item position Answer the zero-based position from the start of the file @@ -13017,10 +13052,111 @@ +@node FileDescriptor-binary I/O +@subsection FileDescriptor:@- binary I/O + +@table @b +@meindex nextByteArray:@- +@item nextByteArray:@- numBytes +Return the next numBytes bytes in the byte array + + +@meindex nextDouble +@item nextDouble +Return the next 64-bit float in the byte array + + +@meindex nextFloat +@item nextFloat +Return the next 32-bit float in the byte array + + +@meindex nextLong +@item nextLong +Return the next 4 bytes in the byte array, interpreted as a 32 bit signed int + + +@meindex nextLongLong +@item nextLongLong +Return the next 8 bytes in the byte array, interpreted as a 64 bit signed int + + +@meindex nextPutByte:@- +@item nextPutByte:@- anInteger +Store anInteger (range:@- -128..255) on the byte array + + +@meindex nextPutDouble:@- +@item nextPutDouble:@- aDouble +Store aDouble as a 64-bit float in the byte array + + +@meindex nextPutFloat:@- +@item nextPutFloat:@- aFloat +Return the next 32-bit float in the byte array + + +@meindex nextPutInt64:@- +@item nextPutInt64:@- anInteger +Store anInteger (range:@- -2^63..2^64-1) on the byte array as 4 bytes + + +@meindex nextPutLong:@- +@item nextPutLong:@- anInteger +Store anInteger (range:@- -2^31..2^32-1) on the byte array as 4 bytes + + +@meindex nextPutShort:@- +@item nextPutShort:@- anInteger +Store anInteger (range:@- -32768..65535) on the byte array as 2 bytes + + +@meindex nextShort +@item nextShort +Return the next 2 bytes in the byte array, interpreted as a 16 bit signed int + + +@meindex nextSignedByte +@item nextSignedByte +Return the next byte in the byte array, interpreted as a 8 bit signed number + + +@meindex nextUint64 +@item nextUint64 +Return the next 8 bytes in the byte array, interpreted as a 64 bit unsigned int + + +@meindex nextUlong +@item nextUlong +Return the next 4 bytes in the byte array, interpreted as a 32 bit unsigned int + + +@meindex nextUshort +@item nextUshort +Return the next 2 bytes in the byte array, interpreted as a 16 bit unsigned int + + +@end table + + + @node FileDescriptor-built ins @subsection FileDescriptor:@- built ins @table @b +@meindex fileIn +@item fileIn +File in the contents of the receiver. +During a file in operation, global variables (starting with an +uppercase letter) that are not declared don't yield an `unknown +variable' error. Instead, they are defined as nil in the `Undeclared' +dictionary (a global variable residing in Smalltalk). +As soon as you add the variable to a namespace (for example by creating +a class) the Association will be removed from Undeclared and reused +in the namespace, so that the old references will automagically point +to the new value. + + @meindex fileOp:@- @item fileOp:@- ioFuncIndex Private - Used to limit the number of primitives used by FileStreams @@ -13112,11 +13248,6 @@ Initialize the receiver's instance variables -@meindex newBuffer -@item newBuffer -Private - Answer a String to be used as the receiver's buffer - - @meindex readStream @item readStream Answer myself, or an alternate stream coerced for reading. @@ -13135,49 +13266,17 @@ @subsection FileDescriptor:@- low-level access @table @b -@meindex nextHunk -@item nextHunk -Answer the next buffers worth of stuff in the Stream represented -by the receiver. Do at most one actual input operation. - - -@meindex read:@- -@item read:@- byteArray -Ignoring any buffering, try to fill byteArray with the -contents of the file - - -@meindex read:@-from:@-to:@- -@item read:@- byteArray from:@- position to:@- end -Ignoring any buffering, try to fill the given range of byteArray -with the contents of the file +@meindex next:@-putAll:@-startingAt:@- +@item next:@- n putAll:@- aCollection startingAt:@- position +Put the characters in the supplied range of aCollection in the file -@meindex read:@-numBytes:@- -@item read:@- byteArray numBytes:@- anInteger -Ignoring any buffering, try to fill anInteger bytes of byteArray +@meindex nextAvailable:@-into:@-startingAt:@- +@item nextAvailable:@- n into:@- aCollection startingAt:@- position +Ignoring any buffering, try to fill the given range of aCollection with the contents of the file -@meindex write:@- -@item write:@- byteArray -Ignoring any buffering, try to write the contents of byteArray in the -file - - -@meindex write:@-from:@-to:@- -@item write:@- byteArray from:@- position to:@- end -Ignoring any buffering, try to write to the file the given range -of byteArray, starting at the position-th element and ending -at the end-th. - - -@meindex write:@-numBytes:@- -@item write:@- byteArray numBytes:@- anInteger -Ignoring any buffering, try to write to the file the first anInteger -bytes of byteArray - - @end table @@ -13191,19 +13290,9 @@ Answer whether the receiver is empty -@meindex next:@- -@item next:@- anInteger -Return the next 'anInteger' characters from the stream, as a String. - - -@meindex next:@-putAll:@-startingAt:@- -@item next:@- n putAll:@- aCollection startingAt:@- position -Put the characters in the supplied range of aCollection in the file - - -@meindex nextByteArray:@- -@item nextByteArray:@- anInteger -Return the next 'anInteger' bytes from the stream, as a ByteArray. +@meindex nextPutAllOn:@- +@item nextPutAllOn:@- aStream +Put all the characters of the receiver in aStream. @meindex reverseContents @@ -13225,6 +13314,33 @@ +@node FileDescriptor-polymorphism +@subsection FileDescriptor:@- polymorphism + +@table @b +@meindex pastEnd +@item pastEnd +The end of the stream has been reached. Signal a Notification. + + +@end table + + + +@node FileDescriptor-positioning +@subsection FileDescriptor:@- positioning + +@table @b +@meindex isPositionable +@slindex skip:@- +@item isPositionable +Answer true if the stream supports moving backwards with @-#skip:@-. + + +@end table + + + @node FileDescriptor-printing @subsection FileDescriptor:@- printing @@ -13249,307 +13365,927 @@ @end table -@node FileSegment -@section FileSegment -@clindex FileSegment +@node FilePath +@section FilePath +@clindex FilePath @table @b @item Defined in namespace Smalltalk @itemx Superclass: Object -@itemx Category: Language-Implementation -My instances represent sections of files. I am primarily used by the -compiler to record source code locations. I am not a part of the normal -Smalltalk-80 kernel; I am specific to the GNU Smalltalk implementation. +@itemx Category: Streams-Files +I expose the syntax of file names, including paths. I know how to +manipulate such a path by splitting it into its components. In addition, +I expose information about files (both real and virtual) such as their +size and timestamps. @end table @menu -* FileSegment class-basic:: (class) -* FileSegment class-installing:: (class) -* FileSegment-basic:: (instance) -* FileSegment-equality:: (instance) +* FilePath class-file name management:: (class) +* FilePath class-still unclassified:: (class) +* FilePath-accessing:: (instance) +* FilePath-converting:: (instance) +* FilePath-decoration:: (instance) +* FilePath-directory operations:: (instance) +* FilePath-enumerating:: (instance) +* FilePath-file name management:: (instance) +* FilePath-file operations:: (instance) +* FilePath-printing:: (instance) +* FilePath-still unclassified:: (instance) +* FilePath-testing:: (instance) +* FilePath-virtual filesystems:: (instance) @end menu -@node FileSegment class-basic -@subsection FileSegment class:@- basic +@node FilePath class-file name management +@subsection FilePath class:@- file name management @table @b -@meindex on:@-startingAt:@-for:@- -@item on:@- aFile startingAt:@- startPos for:@- sizeInteger -Create a new FileSegment referring to the contents of the given file, -from the startPos-th byte and for sizeInteger bytes - - -@end table +@meindex append:@-to:@- +@item append:@- fileName to:@- directory +Answer the name of a file named `fileName' which resides in a directory +named `directory'. +@meindex extensionFor:@- +@item extensionFor:@- aString +Answer the extension of a file named `aString'. Note:@- the extension +includes an initial dot. -@node FileSegment class-installing -@subsection FileSegment class:@- installing -@table @b -@meindex relocateFrom:@-to:@- -@item relocateFrom:@- startPath to:@- endPath -Remove startPath from all paths that start with it, and replace it -with endPath. Needed to support $(DESTDIR) when installing +@meindex fullNameFor:@- +@item fullNameFor:@- aString +Answer the full path to a file called `aString', resolving the `.' and +`..' directory entries, and answer the result. `/..' is the same as '/'. -@end table +@meindex pathFor:@- +@item pathFor:@- aString +Determine the path of the name of a file called `aString', and +answer the result. With the exception of the root directory, the +final slash is stripped. +@meindex pathFor:@-ifNone:@- +@item pathFor:@- aString ifNone:@- aBlock +Determine the path of the name of a file called `aString', and +answer the result. With the exception of the root directory, the +final slash is stripped. If there is no path, evaluate aBlock and +return the result. -@node FileSegment-basic -@subsection FileSegment:@- basic -@table @b -@meindex asString -@item asString -Answer a String containing the required segment of the file +@meindex pathFrom:@-to:@- +@item pathFrom:@- srcName to:@- destName +Answer the relative path to destName when the current +directory is srcName's directory. -@meindex copyFrom:@-to:@- -@item copyFrom:@- from to:@- to -Answer a String containing the given subsegment of the file. As for -streams, from and to are 0-based. +@meindex stripExtensionFrom:@- +@item stripExtensionFrom:@- aString +Remove the extension from the name of a file called `aString', and +answer the result. -@meindex fileName -@item fileName -Answer the name of the file containing the segment +@meindex stripFileNameFor:@- +@item stripFileNameFor:@- aString +Determine the path of the name of a file called `aString', and +answer the result as a directory name including the final slash. -@meindex filePos -@item filePos -Answer the position in the file where the segment starts +@meindex stripPathFrom:@- +@item stripPathFrom:@- aString +Remove the path from the name of a file called `aString', and +answer the file name plus extension. -@meindex relocateFrom:@-to:@-map:@- -@item relocateFrom:@- startPath to:@- endPath map:@- map -If the path starts with startPath, remove that part of the path -and replace it with endPath. map is a Dictionary that is used -so that equal filenames stay equal, without increasing the amount -of memory that the image uses. +@end table -@meindex size -@item size -Answer the length of the segment +@node FilePath class-still unclassified +@subsection FilePath class:@- still unclassified -@meindex withFileDo:@- -@item withFileDo:@- aBlock -Evaluate aBlock passing it the FileStream in which the segment -identified by the receiver is stored +@table @b +@meindex isAbsolute:@- +@item isAbsolute:@- aString +Answer whether aString is an absolute ptah. @end table -@node FileSegment-equality -@subsection FileSegment:@- equality +@node FilePath-accessing +@subsection FilePath:@- accessing @table @b -@meindex = -@item = aFileSegment -Answer whether the receiver and aFileSegment are equal. - +@meindex at:@- +@item at:@- aName +Answer a File or Directory object as appropriate for a file named +'aName' in the directory represented by the receiver. -@meindex hash -@item hash -Answer an hash value for the receiver. +@meindex creationTime +@item creationTime +Answer the creation time of the file identified by the receiver. +On some operating systems, this could actually be the last change time +(the `last change time' has to do with permissions, ownership and the +like). -@end table -@node FileStream -@section FileStream -@clindex FileStream +@meindex includes:@- +@item includes:@- aName +Answer whether a file named `aName' exists in the directory represented +by the receiver. -@table @b -@item Defined in namespace Smalltalk -@itemx Superclass: FileDescriptor -@itemx Category: Streams-Files -My instances are what conventional programmers think of as files. -My instance creation methods accept the name of a disk file (or any named -file object, such as /dev/rmt0 on UNIX or MTA0:@- on VMS). -@end table -@menu -* FileStream class-file-in:: (class) -* FileStream class-standard streams:: (class) -* FileStream-basic:: (instance) -* FileStream-buffering:: (instance) -* FileStream-compiling:: (instance) -* FileStream-overriding inherited methods:: (instance) -* FileStream-testing:: (instance) -@end menu +@meindex lastAccessTime +@item lastAccessTime +Answer the last access time of the file identified by the receiver +@meindex lastAccessTime:@- +@item lastAccessTime:@- aDateTime +Update the last access time of the file corresponding to the receiver, +to be aDateTime. -@node FileStream class-file-in -@subsection FileStream class:@- file-in -@table @b -@meindex fileIn:@- -@item fileIn:@- aFileName -File in the aFileName file. During a file in operation, global variables -(starting with an uppercase letter) that are not declared yet don't yield -an `unknown variable' error. Instead, they are defined as nil in the -`Undeclared' dictionary (a global variable residing in Smalltalk). -As soon as you add the variable to a namespace (for example by creating -a class) the Association will be removed from Undeclared and reused -in the namespace, so that the old references will automagically point -to the new value. +@meindex lastAccessTime:@-lastModifyTime:@- +@item lastAccessTime:@- accessDateTime lastModifyTime:@- modifyDateTime +Update the timestamps of the file corresponding to the receiver, to be +accessDateTime and modifyDateTime. -@meindex fileIn:@-ifMissing:@- -@item fileIn:@- aFileName ifMissing:@- aSymbol -Conditionally do a file in, only if the key (often a class) specified -by 'aSymbol' is not present in the Smalltalk system dictionary already. -During a file in operation, global variables (starting with an -uppercase letter) that are not declared don't yield an `unknown -variable' error. Instead, they are defined as nil in the `Undeclared' -dictionary (a global variable residing in Smalltalk). -As soon as you add the variable to a namespace (for example by creating -a class) the Association will be removed from Undeclared and reused -in the namespace, so that the old references will automagically point -to the new value. +@meindex lastChangeTime +@item lastChangeTime +Answer the last change time of the file identified by the receiver +(the `last change time' has to do with permissions, ownership and the +like). On some operating systems, this could actually be the +file creation time. -@meindex fileIn:@-ifTrue:@- -@item fileIn:@- aFileName ifTrue:@- aBoolean -Conditionally do a file in, only if the supplied boolean is true. -During a file in operation, global variables (starting with an -uppercase letter) that are not declared don't yield an `unknown -variable' error. Instead, they are defined as nil in the `Undeclared' -dictionary (a global variable residing in Smalltalk). -As soon as you add the variable to a namespace (for example by creating -a class) the Association will be removed from Undeclared and reused -in the namespace, so that the old references will automagically point -to the new value. +@meindex lastModifyTime +@item lastModifyTime +Answer the last modify time of the file identified by the receiver +(the `last modify time' has to do with the actual file contents). -@meindex fileIn:@-line:@-from:@-at:@- -@item fileIn:@- aFileName line:@- lineInteger from:@- realFileName at:@- aCharPos -File in the aFileName file giving errors such as if it was loaded -from the given line, file name and starting position (instead of 1). +@meindex lastModifyTime:@- +@item lastModifyTime:@- aDateTime +Update the last modification timestamp of the file corresponding to the +receiver, to be aDateTime. -@meindex generateMakefileOnto:@- -@item generateMakefileOnto:@- aStream -Generate a make file for the file-ins since record was last set to true. -Store it on aStream +@meindex mode +@item mode +Answer the permission bits for the file identified by the receiver -@meindex initialize -@item initialize -Private - Initialize the receiver's class variables +@meindex mode:@- +@item mode:@- anInteger +Set the permission bits for the file identified by the receiver to be +anInteger. -@meindex record:@- -@slindex generateMakefileOnto:@- -@item record:@- recordFlag -Set whether Smalltalk should record information about nested file-ins. -When recording is enabled, use @-#generateMakefileOnto:@- to automatically -generate a valid makefile for the intervening file-ins. +@meindex pathTo:@- +@item pathTo:@- destName +Compute the relative path from the receiver to destName. -@meindex require:@- -@item require:@- assoc -Conditionally do a file in from the value of assoc, only if the -key of assoc is not present in the Smalltalk system dictionary already. -During a file in operation, global variables (starting with an -uppercase letter) that are not declared don't yield an `unknown -variable' error. Instead, they are defined as nil in the `Undeclared' -dictionary (a global variable residing in Smalltalk). -As soon as you add the variable to a namespace (for example by creating -a class) the Association will be removed from Undeclared and reused -in the namespace, so that the old references will automagically point -to the new value. +@meindex refresh +@item refresh +Refresh the statistics for the receiver -@meindex verbose:@- -@item verbose:@- verboseFlag -Set whether Smalltalk should output debugging messages when filing in +@meindex size +@item size +Answer the size of the file identified by the receiver @end table -@node FileStream class-standard streams -@subsection FileStream class:@- standard streams +@node FilePath-converting +@subsection FilePath:@- converting @table @b -@meindex stderr -@item stderr -Answer a FileStream that is attached the Smalltalk program's standard -error file handle, which can be used for error messages and diagnostics -issued by the program. +@meindex asFile +@item asFile +Answer the receiver. -@meindex stdin -@item stdin -Answer a FileStream that is attached the Smalltalk program's standard -input file handle, which is the normal source of input for the program. +@end table -@meindex stdout -@item stdout -Answer a FileStream that is attached the Smalltalk program's standard -output file handle; this is used for normal output from the program. + +@node FilePath-decoration +@subsection FilePath:@- decoration + +@table @b +@meindex all +@item all +Return a decorator of the receiver that will provide recursive +descent into directories for iteration methods. @end table -@node FileStream-basic -@subsection FileStream:@- basic +@node FilePath-directory operations +@subsection FilePath:@- directory operations @table @b -@meindex bufferStart -@item bufferStart -Private - Answer the offset from the start of the file corresponding -to the beginning of the read buffer. +@meindex nameAt:@- +@item nameAt:@- aName +Answer a FilePath for a file named `aName' residing in the directory +represented by the receiver. -@meindex copyFrom:@-to:@- -@item copyFrom:@- from to:@- to -Answer the contents of the file between the two given positions +@end table -@meindex next -@item next -Return the next character in the file, or nil at eof +@node FilePath-enumerating +@subsection FilePath:@- enumerating -@meindex nextByte -@item nextByte -Return the next byte in the file, or nil at eof +@table @b +@meindex allFilesMatching:@-do:@- +@slindex match:@- +@item allFilesMatching:@- aPattern do:@- aBlock +Evaluate aBlock on the File objects that match aPattern (according to +String>>@-#match:@-) in the directory named by the receiver. Recursively +descend into directories. -@meindex nextPut:@- -@item nextPut:@- aCharacter -Store aCharacter on the file +@meindex directories +@item directories +Answer an Array with Directory objects for the subdirectories +of the directory represented by the receiver. -@meindex peek -@item peek -Return the next character in the file, or nil at eof. -Don't advance the file pointer. +@meindex do:@- +@item do:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing its name. -@meindex position -@item position -Answer the zero-based position from the start of the file +@meindex entries +@item entries +Answer an Array with File or Directory objects for the contents +of the directory represented by the receiver. -@meindex position:@- -@item position:@- n -Set the file pointer to the zero-based position n +@meindex entryNames +@item entryNames +Answer an Array with the names of the files in the directory +represented by the receiver. + + +@meindex files +@item files +Answer an Array with File objects for the contents of the directory +represented by the receiver. + + +@meindex filesMatching:@- +@item filesMatching:@- aPattern +Evaluate aBlock once for each file in the directory represented by the +receiver, passing a File or Directory object to aBlock. Returns the +*names* of the files for which aBlock returns true. + + +@meindex filesMatching:@-do:@- +@slindex match:@- +@item filesMatching:@- aPattern do:@- block +Evaluate block on the File objects that match aPattern (according to +String>>@-#match:@-) in the directory named by the receiver. + + +@meindex namesDo:@- +@item namesDo:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing its name. + + +@meindex namesMatching:@-do:@- +@slindex match:@- +@item namesMatching:@- aPattern do:@- block +Evaluate block on the file names that match aPattern (according to +String>>@-#match:@-) in the directory named by the receiver. + + +@meindex reject:@- +@item reject:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing a File or Directory object to aBlock. Returns the +*names* of the files for which aBlock returns true. + + +@meindex select:@- +@item select:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing a File or Directory object to aBlock. Returns the +*names* of the files for which aBlock returns true. + + +@end table + + + +@node FilePath-file name management +@subsection FilePath:@- file name management + +@table @b +@meindex directory +@item directory +Answer the Directory object for the receiver's path + + +@meindex extension +@item extension +Answer the extension of the receiver + + +@meindex full +@item full +Answer the full name of the receiver, resolving the `.' and +`..' directory entries, and answer the result. Answer nil if the +name is invalid (such as '/usr/../../badname') + + +@meindex name +@item name +Answer the full path to the receiver + + +@meindex parent +@item parent +Answer the Directory object for the receiver's path + + +@meindex path +@item path +Answer the path (if any) of the receiver + + +@meindex stripExtension +@item stripExtension +Answer the path (if any) and file name of the receiver + + +@meindex stripFileName +@item stripFileName +Answer the path of the receiver, always including a directory +name (possibly `.') and the final directory separator + + +@meindex stripPath +@item stripPath +Answer the file name and extension (if any) of the receiver + + +@end table + + + +@node FilePath-file operations +@subsection FilePath:@- file operations + +@table @b +@meindex contents +@item contents +Open a read-only FileStream on the receiver, read its contents, +close the stream and answer the contents + + +@meindex fileIn +@item fileIn +File in the receiver + + +@meindex open:@- +@item open:@- mode +Open the receiver in the given mode (as answered by FileStream's +class constant methods) + + +@meindex open:@-ifFail:@- +@item open:@- mode ifFail:@- aBlock +Open the receiver in the given mode (as answered by FileStream's +class constant methods). Upon failure, evaluate aBlock. + + +@meindex open:@-mode:@-ifFail:@- +@item open:@- class mode:@- mode ifFail:@- aBlock +Open the receiver in the given mode (as answered by FileStream's +class constant methods) + + +@meindex openDescriptor:@- +@item openDescriptor:@- mode +Open the receiver in the given mode (as answered by FileStream's +class constant methods) + + +@meindex openDescriptor:@-ifFail:@- +@item openDescriptor:@- mode ifFail:@- aBlock +Open the receiver in the given mode (as answered by FileStream's +class constant methods). Upon failure, evaluate aBlock. + + +@meindex pathFrom:@- +@item pathFrom:@- dirName +Compute the relative path from the directory dirName to the receiver + + +@meindex readStream +@item readStream +Open a read-only FileStream on the receiver + + +@meindex remove +@item remove +Remove the file identified by the receiver + + +@meindex renameTo:@- +@item renameTo:@- newName +Rename the file identified by the receiver to newName + + +@meindex symlinkAs:@- +@item symlinkAs:@- destName +Create destName as a symbolic link of the receiver. The appropriate +relative path is computed automatically. + + +@meindex symlinkFrom:@- +@item symlinkFrom:@- srcName +Create the receiver as a symbolic link from srcName (relative to the +path of the receiver). + + +@meindex touch +@item touch +Update the timestamp of the file corresponding to the receiver. + + +@meindex withReadStreamDo:@- +@item withReadStreamDo:@- aBlock +Invoke aBlock with a reading stream open on me, closing it +when the dynamic extent of aBlock ends. + + +@meindex withWriteStreamDo:@- +@item withWriteStreamDo:@- aBlock +Invoke aBlock with a writing stream open on me, closing it +when the dynamic extent of aBlock ends. + + +@meindex writeStream +@item writeStream +Open a write-only FileStream on the receiver + + +@end table + + + +@node FilePath-printing +@subsection FilePath:@- printing + +@table @b +@meindex displayOn:@- +@item displayOn:@- aStream +Print a representation of the receiver on aStream. + + +@meindex printOn:@- +@item printOn:@- aStream +Print a representation of the receiver on aStream. + + +@end table + + + +@node FilePath-still unclassified +@subsection FilePath:@- still unclassified + +@table @b +@meindex / +@item / aName +Answer a File or Directory object as appropriate for a file named +'aName' in the directory represented by the receiver. + + +@end table + + + +@node FilePath-testing +@subsection FilePath:@- testing + +@table @b +@meindex exists +@item exists +Answer whether a file with the name contained in the receiver does exist. + + +@meindex isAbsolute +@item isAbsolute +Answer whether the receiver identifies an absolute path. + + +@meindex isAccessible +@item isAccessible +Answer whether a directory with the name contained in the receiver does +exist and can be accessed + + +@meindex isDirectory +@item isDirectory +Answer whether a file with the name contained in the receiver does exist +and identifies a directory. + + +@meindex isExecutable +@item isExecutable +Answer whether a file with the name contained in the receiver does exist +and is executable + + +@meindex isFile +@item isFile +Answer whether a file with the name contained in the receiver does exist +and does not identify a directory. + + +@meindex isFileSystemPath +@item isFileSystemPath +Answer whether the receiver corresponds to a real filesystem path. + + +@meindex isReadable +@item isReadable +Answer whether a file with the name contained in the receiver does exist +and is readable + + +@meindex isRelative +@item isRelative +Answer whether the receiver identifies a relative path. + + +@meindex isSymbolicLink +@item isSymbolicLink +Answer whether a file with the name contained in the receiver does exist +and identifies a symbolic link. + + +@meindex isWriteable +@item isWriteable +Answer whether a file with the name contained in the receiver does exist +and is writeable + + +@end table + + + +@node FilePath-virtual filesystems +@subsection FilePath:@- virtual filesystems + +@table @b +@meindex zip +@item zip +Not commented. + +@end table + +@node FileSegment +@section FileSegment +@clindex FileSegment + +@table @b +@item Defined in namespace Smalltalk +@itemx Superclass: Object +@itemx Category: Language-Implementation +My instances represent sections of files. I am primarily used by the +compiler to record source code locations. I am not a part of the normal +Smalltalk-80 kernel; I am specific to the GNU Smalltalk implementation. +@end table + +@menu +* FileSegment class-basic:: (class) +* FileSegment class-installing:: (class) +* FileSegment-basic:: (instance) +* FileSegment-equality:: (instance) +* FileSegment-printing:: (instance) +@end menu + + + +@node FileSegment class-basic +@subsection FileSegment class:@- basic + +@table @b +@meindex on:@-startingAt:@-for:@- +@item on:@- aFile startingAt:@- startPos for:@- sizeInteger +Create a new FileSegment referring to the contents of the given file, +from the startPos-th byte and for sizeInteger bytes. Note that +FileSegments should always be created with full paths because +relative paths are interpreted to be relative to the kernel +directory. + + +@end table + + + +@node FileSegment class-installing +@subsection FileSegment class:@- installing + +@table @b +@meindex relocate +@item relocate +Remove the kernel path from all paths that start with it. Needed to +support $(DESTDIR) and relocatable installation. + + +@end table + + + +@node FileSegment-basic +@subsection FileSegment:@- basic + +@table @b +@meindex asString +@item asString +Answer a String containing the required segment of the file + + +@meindex copyFrom:@-to:@- +@item copyFrom:@- from to:@- to +Answer a String containing the given subsegment of the file. As for +streams, from and to are 0-based. + + +@meindex file +@item file +Answer the File object for the file containing the segment + + +@meindex fileName +@item fileName +Answer the name of the file containing the segment + + +@meindex filePos +@item filePos +Answer the position in the file where the segment starts + + +@meindex relocateFrom:@-map:@- +@item relocateFrom:@- startPath map:@- map +If the path starts with startPath, remove that part of the path. +map is a Dictionary that is used so that equal filenames stay equal, +without increasing the amount of memory that the image uses. + + +@meindex size +@item size +Answer the length of the segment + + +@meindex withFileDo:@- +@item withFileDo:@- aBlock +Evaluate aBlock passing it the FileStream in which the segment +identified by the receiver is stored + + +@end table + + + +@node FileSegment-equality +@subsection FileSegment:@- equality + +@table @b +@meindex = +@item = aFileSegment +Answer whether the receiver and aFileSegment are equal. + + +@meindex hash +@item hash +Answer an hash value for the receiver. + + +@end table + + + +@node FileSegment-printing +@subsection FileSegment:@- printing + +@table @b +@meindex printedFileName +@item printedFileName +Answer a printed representation of the file containing the segment. +While introducing some ambiguity, this representation is compact +eliminates the path for kernel files, and produces a relative path +from the current working directory for other files. + + +@end table + +@node FileStream +@section FileStream +@clindex FileStream + +@table @b +@item Defined in namespace Smalltalk +@itemx Superclass: FileDescriptor +@itemx Category: Streams-Files +My instances are what conventional programmers think of as files. +My instance creation methods accept the name of a disk file (or any named +file object, such as /dev/rmt0 on UNIX or MTA0:@- on VMS). +@end table + +@menu +* FileStream class-file-in:: (class) +* FileStream class-standard streams:: (class) +* FileStream-basic:: (instance) +* FileStream-buffering:: (instance) +* FileStream-compiling:: (instance) +* FileStream-initialize-release:: (instance) +* FileStream-overriding inherited methods:: (instance) +* FileStream-testing:: (instance) +@end menu + + + +@node FileStream class-file-in +@subsection FileStream class:@- file-in + +@table @b +@meindex fileIn:@- +@item fileIn:@- aFileName +File in the aFileName file. During a file in operation, global variables +(starting with an uppercase letter) that are not declared yet don't yield +an `unknown variable' error. Instead, they are defined as nil in the +`Undeclared' dictionary (a global variable residing in Smalltalk). +As soon as you add the variable to a namespace (for example by creating +a class) the Association will be removed from Undeclared and reused +in the namespace, so that the old references will automagically point +to the new value. + + +@meindex fileIn:@-ifMissing:@- +@item fileIn:@- aFileName ifMissing:@- aSymbol +Conditionally do a file in, only if the key (often a class) specified +by 'aSymbol' is not present in the Smalltalk system dictionary already. +During a file in operation, global variables (starting with an +uppercase letter) that are not declared don't yield an `unknown +variable' error. Instead, they are defined as nil in the `Undeclared' +dictionary (a global variable residing in Smalltalk). +As soon as you add the variable to a namespace (for example by creating +a class) the Association will be removed from Undeclared and reused +in the namespace, so that the old references will automagically point +to the new value. + + +@meindex fileIn:@-ifTrue:@- +@item fileIn:@- aFileName ifTrue:@- aBoolean +Conditionally do a file in, only if the supplied boolean is true. +During a file in operation, global variables (starting with an +uppercase letter) that are not declared don't yield an `unknown +variable' error. Instead, they are defined as nil in the `Undeclared' +dictionary (a global variable residing in Smalltalk). +As soon as you add the variable to a namespace (for example by creating +a class) the Association will be removed from Undeclared and reused +in the namespace, so that the old references will automagically point +to the new value. + + +@meindex fileIn:@-line:@-from:@-at:@- +@item fileIn:@- aFileName line:@- lineInteger from:@- realFileName at:@- aCharPos +File in the aFileName file giving errors such as if it was loaded +from the given line, file name and starting position (instead of 1). + + +@meindex generateMakefileOnto:@- +@item generateMakefileOnto:@- aStream +Generate a make file for the file-ins since record was last set to true. +Store it on aStream + + +@meindex initialize +@item initialize +Private - Initialize the receiver's class variables + + +@meindex record:@- +@slindex generateMakefileOnto:@- +@item record:@- recordFlag +Set whether Smalltalk should record information about nested file-ins. +When recording is enabled, use @-#generateMakefileOnto:@- to automatically +generate a valid makefile for the intervening file-ins. + + +@meindex require:@- +@item require:@- assoc +Conditionally do a file in from the value of assoc, only if the +key of assoc is not present in the Smalltalk system dictionary already. +During a file in operation, global variables (starting with an +uppercase letter) that are not declared don't yield an `unknown +variable' error. Instead, they are defined as nil in the `Undeclared' +dictionary (a global variable residing in Smalltalk). +As soon as you add the variable to a namespace (for example by creating +a class) the Association will be removed from Undeclared and reused +in the namespace, so that the old references will automagically point +to the new value. + + +@meindex verbose:@- +@item verbose:@- verboseFlag +Set whether Smalltalk should output debugging messages when filing in + + +@end table + + + +@node FileStream class-standard streams +@subsection FileStream class:@- standard streams + +@table @b +@meindex stderr +@item stderr +Answer a FileStream that is attached the Smalltalk program's standard +error file handle, which can be used for error messages and diagnostics +issued by the program. + + +@meindex stdin +@item stdin +Answer a FileStream that is attached the Smalltalk program's standard +input file handle, which is the normal source of input for the program. + + +@meindex stdout +@item stdout +Answer a FileStream that is attached the Smalltalk program's standard +output file handle; this is used for normal output from the program. + + +@end table + + + +@node FileStream-basic +@subsection FileStream:@- basic + +@table @b +@meindex bufferStart +@item bufferStart +Private - Answer the offset from the start of the file corresponding +to the beginning of the read buffer. + + +@meindex copyFrom:@-to:@- +@item copyFrom:@- from to:@- to +Answer the contents of the file between the two given positions + + +@meindex next +@item next +Return the next character in the file, or nil at eof + + +@meindex nextPut:@- +@item nextPut:@- aCharacter +Store aCharacter on the file + + +@meindex peek +@item peek +Return the next character in the file, or nil at eof. +Don't advance the file pointer. + + +@meindex position +@item position +Answer the zero-based position from the start of the file + + +@meindex position:@- +@item position:@- n +Set the file pointer to the zero-based position n @meindex size @@ -13606,18 +14342,16 @@ n characters of aCollection in the buffer, starting from the pos-th. -@meindex next:@-into:@- -@item next:@- anInteger into:@- answer -Private - Read up to anInteger bytes from the stream and store them -into answer. Return `answer' itself, possibly truncated if we could not -read the full amount of data. +@meindex nextAvailable:@-into:@-startingAt:@- +@item nextAvailable:@- anInteger into:@- aCollection startingAt:@- pos +Read up to anInteger bytes from the stream and store them +into aCollection. Return the number of bytes read. -@meindex nextHunk -@item nextHunk -Answer the next buffers worth of stuff in the Stream represented -by the receiver. For n consecutive calls to this method, we do -n - 1 or n actual input operation. +@meindex nextAvailable:@-putAllOn:@- +@item nextAvailable:@- anInteger putAllOn:@- aStream +Copy up to anInteger bytes from the stream into +aStream. Return the number of bytes read. @meindex pendingWrite @@ -13644,25 +14378,28 @@ -@node FileStream-overriding inherited methods -@subsection FileStream:@- overriding inherited methods +@node FileStream-initialize-release +@subsection FileStream:@- initialize-release @table @b -@meindex next:@- -@item next:@- anInteger -Return the next 'anInteger' characters from the stream, as a String. +@meindex initialize +@item initialize +Initialize the receiver's instance variables +@end table + + + +@node FileStream-overriding inherited methods +@subsection FileStream:@- overriding inherited methods + +@table @b @meindex next:@-putAll:@-startingAt:@- @item next:@- n putAll:@- aCollection startingAt:@- pos Write n values from aCollection, the first being at pos. -@meindex nextByteArray:@- -@item nextByteArray:@- anInteger -Return the next 'anInteger' bytes from the stream, as a ByteArray. - - @meindex nextLine @item nextLine Returns a collection of the same type that the stream accesses, containing @@ -13670,6 +14407,18 @@ stream's contents if no new-line character is found. +@meindex nextPutAllOn:@- +@item nextPutAllOn:@- aStream +Put all the characters of the receiver in aStream. + + +@meindex upTo:@- +@item upTo:@- aCharacter +Returns a collection of the same type that the stream accesses, +containing data up to aCharacter. Returns the entire rest of +the stream's contents if no such character is found. + + @end table @@ -16281,6 +17030,159 @@ @end table +@node Iterable +@section Iterable +@clindex Iterable + +@table @b +@item Defined in namespace Smalltalk +@itemx Superclass: Object +@itemx Category: Collections +I am an abstract class. My instances are collections of objects +that can be iterated. The details on how they can be mutated (if at +all possible) are left to the subclasses. +@end table + +@menu +* Iterable class-multibyte encodings:: (class) +* Iterable-enumeration:: (instance) +* Iterable-streaming:: (instance) +@end menu + + + +@node Iterable class-multibyte encodings +@subsection Iterable class:@- multibyte encodings + +@table @b +@meindex isUnicode +@item isUnicode +Answer true; the receiver is able to store arbitrary +Unicode characters. + + +@end table + + + +@node Iterable-enumeration +@subsection Iterable:@- enumeration + +@table @b +@meindex allSatisfy:@- +@item allSatisfy:@- aBlock +Search the receiver for an element for which aBlock returns false. +Answer true if none does, false otherwise. + + +@meindex anySatisfy:@- +@item anySatisfy:@- aBlock +Search the receiver for an element for which aBlock returns true. +Answer true if some does, false otherwise. + + +@meindex collect:@- +@item collect:@- aBlock +Answer a new instance of a Collection containing all the results +of evaluating aBlock passing each of the receiver's elements + + +@meindex conform:@- +@item conform:@- aBlock +Search the receiver for an element for which aBlock returns false. +Answer true if none does, false otherwise. + + +@meindex contains:@- +@item contains:@- aBlock +Search the receiver for an element for which aBlock returns true. +Answer true if some does, false otherwise. + + +@meindex count:@- +@item count:@- aBlock +Count the elements of the receiver for which aBlock returns true, +and return their number. + + +@meindex detect:@- +@item detect:@- aBlock +Search the receiver for an element for which aBlock returns true. +If some does, answer it. If none does, fail + + +@meindex detect:@-ifNone:@- +@item detect:@- aBlock ifNone:@- exceptionBlock +Search the receiver for an element for which aBlock returns true. +If some does, answer it. If none does, answer the result of evaluating +aBlock + + +@meindex do:@- +@item do:@- aBlock +Enumerate each object of the receiver, passing them to aBlock + + +@meindex do:@-separatedBy:@- +@item do:@- aBlock separatedBy:@- separatorBlock +Enumerate each object of the receiver, passing them to aBlock. +Between every two invocations of aBlock, invoke separatorBlock + + +@meindex fold:@- +@item fold:@- binaryBlock +First, pass to binaryBlock the first and second elements of the +receiver; for each subsequent element, pass the result of the previous +evaluation and an element. Answer the result of the last invocation, +or the first element if the collection has size 1. Fail if the collection +is empty. + + +@meindex inject:@-into:@- +@item inject:@- thisValue into:@- binaryBlock +First, pass to binaryBlock thisValue and the first element of the +receiver; for each subsequent element, pass the result of the previous +evaluation and an element. Answer the result of the last invocation. + + +@meindex noneSatisfy:@- +@item noneSatisfy:@- aBlock +Search the receiver for an element for which aBlock returns true. +Answer true if none does, false otherwise. + + +@meindex reject:@- +@item reject:@- aBlock +Answer a new instance of a Collection containing all the elements +in the receiver which, when passed to aBlock, don't answer true + + +@meindex select:@- +@item select:@- aBlock +Answer a new instance of a Collection containing all the elements +in the receiver which, when passed to aBlock, answer true + + +@end table + + + +@node Iterable-streaming +@subsection Iterable:@- streaming + +@table @b +@meindex nextPutAllOn:@- +@item nextPutAllOn:@- aStream +Write all the objects in the receiver to aStream + + +@meindex readStream +@item readStream +Return a stream with the same contents as the receiver. + + +@end table + @node LargeArray @section LargeArray @clindex LargeArray @@ -18300,6 +19202,7 @@ * Metaclass class-instance creation:: (class) * Metaclass-accessing:: (instance) * Metaclass-basic:: (instance) +* Metaclass-compiling methods:: (instance) * Metaclass-delegation:: (instance) * Metaclass-filing:: (instance) * Metaclass-printing:: (instance) @@ -18376,6 +19279,19 @@ +@node Metaclass-compiling methods +@subsection Metaclass:@- compiling methods + +@table @b +@meindex poolResolution +@item poolResolution +Use my instance's poolResolution. + + +@end table + + + @node Metaclass-delegation @subsection Metaclass:@- delegation @@ -18396,6 +19312,12 @@ and in each of the superclasses' class pool dictionaries +@meindex allSharedPoolDictionariesDo:@- +@item allSharedPoolDictionariesDo:@- aBlock +Answer the shared pools visible from methods in the metaclass, +in the correct search order. + + @meindex allSharedPools @item allSharedPools Return the names of the shared pools defined by the class and any of @@ -18586,6 +19508,15 @@ created only by @-#ensure:@-. +@meindex mark +@slindex valueWithUnwind +@item mark +To create a valid execution environment for the interpreter even +before it starts, GST creates a fake context which invokes a special +``termination'' method. A similar context is created by +@-#valueWithUnwind, by using this method. + + @meindex sender @item sender Return the context from which the receiver was sent @@ -19084,6 +20015,7 @@ * NetClients.URL-copying:: (instance) * NetClients.URL-initialize-release:: (instance) * NetClients.URL-printing:: (instance) +* NetClients.URL-still unclassified:: (instance) * NetClients.URL-testing:: (instance) * NetClients.URL-utilities:: (instance) @end menu @@ -19372,6 +20304,22 @@ +@node NetClients.URL-still unclassified +@subsection NetClients.URL:@- still unclassified + +@table @b +@meindex contents +@item contents +Not commented. + +@meindex readStream +@item readStream +Not commented. + +@end table + + + @node NetClients.URL-testing @subsection NetClients.URL:@- testing @@ -21103,6 +22051,10 @@ @item isBehavior Answer `false'. +@meindex isCObject +@item isCObject +Answer `false'. + @meindex isCharacter @item isCharacter Answer `false'. @@ -21567,11 +22519,6 @@ return the last value). -@meindex snapshot:@- -@item snapshot:@- aString -Save an image on the aString file - - @meindex spaceGrowRate @item spaceGrowRate Answer the rate with which the amount of memory used by the system grows @@ -21612,6 +22559,11 @@ Save a snapshot on the image file that was loaded on startup. +@meindex snapshot:@- +@item snapshot:@- aString +Save an image on the aString file + + @end table @@ -21923,6 +22875,16 @@ Store anObject at the anIndex-th item of the receiver, answer anObject +@meindex first +@item first +Answer the first item of the receiver + + +@meindex last +@item last +Answer the last item of the receiver + + @meindex size @item size Return the number of objects in the receiver @@ -22202,6 +23164,26 @@ the package, to dir. +@meindex startScript +@item startScript +Answer the start script for the package. + + +@meindex startScript:@- +@item startScript:@- aString +Set the start script for the package to aString. + + +@meindex stopScript +@item stopScript +Answer the start script for the package. + + +@meindex stopScript:@- +@item stopScript:@- aString +Set the stop script for the package to aString. + + @meindex sunitScripts @item sunitScripts Answer a (modifiable) OrderedCollection of SUnit scripts that @@ -22262,7 +23244,7 @@ @meindex directoryFor:@- @item directoryFor:@- package -Answer a complete path to the given package's files +Answer a Directory object to the given package's files @meindex featuresFor:@- @@ -22967,6 +23949,7 @@ * PositionableStream-class type methods:: (instance) * PositionableStream-compiling:: (instance) * PositionableStream-positioning:: (instance) +* PositionableStream-still unclassified:: (instance) * PositionableStream-testing:: (instance) * PositionableStream-truncating:: (instance) @end menu @@ -23022,6 +24005,19 @@ Answer the next item of the receiver. Returns nil when at end of stream. +@meindex nextAvailable:@-into:@-startingAt:@- +@item nextAvailable:@- anInteger into:@- aCollection startingAt:@- pos +Place up to anInteger objects from the receiver into +aCollection, starting from position pos in the collection +and stopping if no more data is available. + + +@meindex nextAvailable:@-putAllOn:@- +@item nextAvailable:@- anInteger putAllOn:@- aStream +Copy up to anInteger objects from the receiver into +aStream, stopping if no more data is available. + + @meindex peek @item peek Returns the next element of the stream without moving the pointer. @@ -23138,15 +24134,17 @@ backwards. -@meindex skipSeparators -@slindex next -@slindex skipSeparators -@item skipSeparators -Advance the receiver until we find a character that is not a -separator. Answer false if we reach the end of the stream, -else answer true; in this case, sending @-#next will return the -first non-separator character (possibly the same to which the -stream pointed before @-#skipSeparators was sent). +@end table + + + +@node PositionableStream-still unclassified +@subsection PositionableStream:@- still unclassified + +@table @b +@meindex nextPutAllOn:@- +@item nextPutAllOn:@- aStream +Write all the objects in the receiver to aStream. @end table @@ -23352,41 +24350,199 @@ Resume the receiver's execution -@meindex singleStepWaitingOn:@- -@item singleStepWaitingOn:@- aSemaphore -Execute a limited amount of code (usually a bytecode, or up to the -next backward jump, or up to the next message send) of the receiver, -which must in a ready-to-run state (neither executing nor terminating -nor suspended), then restart running the current process. aSemaphore -is used as a means to synchronize the execution of the current process -and the receiver and should have no signals on it. The current process -should have higher priority than the receiver. +@meindex singleStepWaitingOn:@- +@item singleStepWaitingOn:@- aSemaphore +Execute a limited amount of code (usually a bytecode, or up to the +next backward jump, or up to the next message send) of the receiver, +which must in a ready-to-run state (neither executing nor terminating +nor suspended), then restart running the current process. aSemaphore +is used as a means to synchronize the execution of the current process +and the receiver and should have no signals on it. The current process +should have higher priority than the receiver. + + +@meindex suspend +@item suspend +Do nothing if we're already suspended. Note that the blue book made +suspend a primitive - but the real primitive is yielding control to +another process. Suspending is nothing more than taking ourselves out +of every scheduling list and THEN yielding control to another process + + +@meindex yield +@item yield +Yield control from the receiver to other processes + + +@end table + + + +@node Process-printing +@subsection Process:@- printing + +@table @b +@meindex printOn:@- +@item printOn:@- aStream +Print a representation of the receiver on aStream + + +@end table + +@node ProcessEnvironment +@section ProcessEnvironment +@clindex ProcessEnvironment + +@table @b +@item Defined in namespace Smalltalk +@itemx Superclass: Object +@itemx Category: Language-Processes +I represent a proxy for thread-local variables defined for +Smalltalk processes. Associations requested to me retrieve the thread-local +value for the current process. For now, I don't provide the full protocol of +a Dictionary; in particular the iteration protocol is absent. +@end table + +@menu +* ProcessEnvironment class-disabled:: (class) +* ProcessEnvironment class-singleton:: (class) +* ProcessEnvironment-accessing:: (instance) +* ProcessEnvironment-dictionary removing:: (instance) +* ProcessEnvironment-dictionary testing:: (instance) +@end menu + + + +@node ProcessEnvironment class-disabled +@subsection ProcessEnvironment class:@- disabled + +@table @b +@meindex new +@item new +This method should not be called for instances of this class. + +@end table + + + +@node ProcessEnvironment class-singleton +@subsection ProcessEnvironment class:@- singleton + +@table @b +@meindex uniqueInstance +@item uniqueInstance +Return the singleton instance of ProcessEnvironment. + + +@end table + + + +@node ProcessEnvironment-accessing +@subsection ProcessEnvironment:@- accessing + +@table @b +@meindex add:@- +@item add:@- newObject +Add the newObject association to the receiver + + +@meindex associationAt:@- +@item associationAt:@- key +Answer the value associated to the given key, or the result of evaluating +aBlock if the key is not found + + +@meindex associationAt:@-ifAbsent:@- +@item associationAt:@- key ifAbsent:@- aBlock +Answer the value associated to the given key, or the result of evaluating +aBlock if the key is not found + + +@meindex at:@- +@item at:@- key +Answer the value associated to the given key. Return nil if the key +is not found + + +@meindex at:@-ifAbsent:@- +@item at:@- key ifAbsent:@- aBlock +Answer the value associated to the given key, or the result of evaluating +aBlock if the key is not found + + +@meindex at:@-ifAbsentPut:@- +@item at:@- key ifAbsentPut:@- aBlock +Answer the value associated to the given key, setting it to +the result of evaluating aBlock if the key is not found. + + +@meindex at:@-ifPresent:@- +@item at:@- key ifPresent:@- aBlock +Answer the value associated to the given key, or the result of evaluating +aBlock if the key is not found + + +@meindex at:@-put:@- +@item at:@- key put:@- value +Store value as associated to the given key + + +@meindex keys +@item keys +Answer a kind of Set containing the keys of the receiver + + +@end table + + + +@node ProcessEnvironment-dictionary removing +@subsection ProcessEnvironment:@- dictionary removing + +@table @b +@meindex remove:@- +@item remove:@- anAssociation +Remove anAssociation's key from the dictionary + + +@meindex remove:@-ifAbsent:@- +@item remove:@- anAssociation ifAbsent:@- aBlock +Remove anAssociation's key from the dictionary + + +@meindex removeAllKeys:@- +@item removeAllKeys:@- keys +Remove all the keys in keys, without raising any errors -@meindex suspend -@item suspend -Do nothing if we're already suspended. Note that the blue book made -suspend a primitive - but the real primitive is yielding control to -another process. Suspending is nothing more than taking ourselves out -of every scheduling list and THEN yielding control to another process +@meindex removeAllKeys:@-ifAbsent:@- +@item removeAllKeys:@- keys ifAbsent:@- aBlock +Remove all the keys in keys, passing the missing keys as parameters +to aBlock as they're encountered -@meindex yield -@item yield -Yield control from the receiver to other processes +@meindex removeKey:@- +@item removeKey:@- aSymbol +Remove the aSymbol key from the dictionary + + +@meindex removeKey:@-ifAbsent:@- +@item removeKey:@- aSymbol ifAbsent:@- aBlock +Remove the aSymbol key from the dictionary @end table -@node Process-printing -@subsection Process:@- printing +@node ProcessEnvironment-dictionary testing +@subsection ProcessEnvironment:@- dictionary testing @table @b -@meindex printOn:@- -@item printOn:@- aStream -Print a representation of the receiver on aStream +@meindex includesKey:@- +@item includesKey:@- key +Answer whether the receiver contains the given key @end table @@ -23447,6 +24603,17 @@ Answer the active process +@meindex processEnvironment +@slindex associationAt:@- +@item processEnvironment +Answer another singleton object hosting thread-local variables +for the Smalltalk processes. This acts like a normal Dictionary +with a couple of differences:@- a) using @-#associationAt:@- will +return special associations that retrieve a thread-local value; +b) requesting missing keys will return nil, and removing them +will be a nop. + + @meindex processesAt:@- @item processesAt:@- aPriority Answer a linked list of processes at the given priority @@ -23666,7 +24833,7 @@ @meindex signal:@-onInterrupt:@- @item signal:@- aSemaphore onInterrupt:@- anIntegerSignalNumber -Private - signal 'aSemaphore' when the given C signal occurs +Signal 'aSemaphore' when the given C signal occurs. @end table @@ -24635,6 +25802,12 @@ @subsection RegexResults:@- accessing @table @b +@meindex asArray +@item asArray +If the regular expression was matched, return an Array with +the subexpressions that were present in the regular expression. + + @meindex at:@- @item at:@- anIndex If the regular expression was matched, return the text of the @@ -25538,11 +26711,13 @@ @menu * SequenceableCollection class-instance creation:: (class) * SequenceableCollection-basic:: (instance) +* SequenceableCollection-comparing:: (instance) * SequenceableCollection-concatenating:: (instance) * SequenceableCollection-copying SequenceableCollections:: (instance) * SequenceableCollection-enumerating:: (instance) * SequenceableCollection-replacing items:: (instance) * SequenceableCollection-sorting:: (instance) +* SequenceableCollection-still unclassified:: (instance) * SequenceableCollection-testing:: (instance) @end menu @@ -25764,23 +26939,28 @@ -@node SequenceableCollection-concatenating -@subsection SequenceableCollection:@- concatenating +@node SequenceableCollection-comparing +@subsection SequenceableCollection:@- comparing @table @b -@meindex join -@item join -Answer a new collection like my first element, with all the -elements (in order) of all my elements, which should be -collections. +@meindex endsWith:@- +@item endsWith:@- aSequenceableCollection +Returns true if the receiver ends with the same characters as aSequenceableCollection. -I use my first element instead of myself as a prototype because -my elements are more likely to share the desired properties than -I am, such as in:@- -@-#('hello, ' 'world') join => 'hello, world' +@meindex startsWith:@- +@item startsWith:@- aSequenceableCollection +Returns true if the receiver starts with the same characters as aSequenceableCollection. + + +@end table + +@node SequenceableCollection-concatenating +@subsection SequenceableCollection:@- concatenating + +@table @b @meindex join:@- @item join:@- sepCollection Answer a new collection like my first element, with all the @@ -26086,6 +27266,19 @@ +@node SequenceableCollection-still unclassified +@subsection SequenceableCollection:@- still unclassified + +@table @b +@meindex nextPutAllOn:@- +@item nextPutAllOn:@- aStream +Write all the objects in the receiver to aStream + + +@end table + + + @node SequenceableCollection-testing @subsection SequenceableCollection:@- testing @@ -27051,7 +28244,7 @@ @table @b @item Defined in namespace Smalltalk -@itemx Superclass: Object +@itemx Superclass: Iterable @itemx Category: Streams I am an abstract class that provides interruptable sequential access to objects. I can return successive objects from a source, or accept @@ -27064,6 +28257,7 @@ * Stream-accessing-reading:: (instance) * Stream-accessing-writing:: (instance) * Stream-basic:: (instance) +* Stream-buffering:: (instance) * Stream-built ins:: (instance) * Stream-character writing:: (instance) * Stream-concatenating:: (instance) @@ -27073,7 +28267,9 @@ * Stream-polymorphism:: (instance) * Stream-positioning:: (instance) * Stream-printing:: (instance) +* Stream-still unclassified:: (instance) * Stream-storing:: (instance) +* Stream-streaming protocol:: (instance) * Stream-testing:: (instance) @end menu @@ -27106,8 +28302,30 @@ @meindex nextAvailable:@- @item nextAvailable:@- anInteger -Return up to anInteger objects in the receiver, stopping if -the end of the stream is reached +Return up to anInteger objects in the receiver. Besides stopping if +the end of the stream is reached, this may return less than this +number of bytes for various reasons. For example, on files and sockets +this operation could be non-blocking, or could do at most one I/O +operation. + + +@meindex nextAvailable:@-into:@-startingAt:@- +@item nextAvailable:@- anInteger into:@- aCollection startingAt:@- pos +Place the next anInteger objects from the receiver into aCollection, +starting at position pos. Return the number of items stored. +Besides stopping if the end of the stream is reached, this may +return less than this number of bytes for various reasons. +For example, on files and sockets this operation could be +non-blocking, or could do at most one I/O operation. + + +@meindex nextAvailable:@-putAllOn:@- +@item nextAvailable:@- anInteger putAllOn:@- aStream +Copy up to anInteger objects in the receiver to aStream. Besides +stopping if the end of the stream is reached, this may return +less than this number of bytes for various reasons. For example, +on files and sockets this operation could be non-blocking, +or could do at most one I/O operation. @meindex nextLine @@ -27205,6 +28423,28 @@ +@node Stream-buffering +@subsection Stream:@- buffering + +@table @b +@meindex next:@-into:@-startingAt:@- +@item next:@- anInteger into:@- answer startingAt:@- pos +Read up to anInteger bytes from the stream and store them +into answer. Return the number of bytes that were read, raising +an exception if we could not read the full amount of data. + + +@meindex next:@-putAllOn:@- +@item next:@- anInteger putAllOn:@- aStream +Read up to anInteger bytes from the stream and store them +into aStream. Return the number of bytes that were read, raising +an exception if we could not read the full amount of data. + + +@end table + + + @node Stream-built ins @subsection Stream:@- built ins @@ -27222,6 +28462,14 @@ to the new value. +@meindex fileInLine:@-file:@-at:@- +@slindex line +@slindex fileIn +@item fileInLine:@- lineNum file:@- aFile at:@- charPosInt +Private - Much like a preprocessor @-#line directive; it is used internally +by @-#fileIn, and explicitly by the Emacs Smalltalk mode. + + @meindex fileInLine:@-fileName:@-at:@- @slindex line @slindex fileIn @@ -27376,22 +28624,6 @@ with possibly surprising results. -@meindex fold:@- -@item fold:@- aBlock -First, pass to binaryBlock the first and second elements of the -receiver; for each subsequent element, pass the result of the previous -evaluation and an element. Answer the result of the last invocation, -or the first element if the stream has a single element. - - -@meindex inject:@-into:@- -@item inject:@- value into:@- aBlock -First, pass to binaryBlock value and the first element of the -receiver; for each subsequent element, pass the result of the previous -evaluation and an element. Answer the result of the last invocation, -or value if the stream is empty. - - @meindex lines @item lines Answer a new stream that answers lines from the receiver. @@ -27461,20 +28693,22 @@ Answer true if the stream supports moving backwards with @-#skip:@-. -@meindex nextHunk -@item nextHunk -Answer a more-or-less arbitrary amount of data. When used on files, this -does at most one I/O operation. For other kinds of stream, the definition -may vary. This method is used by the VM when loading data from a Smalltalk -stream, and by various kind of Stream decorators supplied with GNU -Smalltalk (including zlib streams). - - @meindex skip:@- @item skip:@- anInteger Move the position forwards by anInteger places +@meindex skipSeparators +@slindex next +@slindex skipSeparators +@item skipSeparators +Advance the receiver until we find a character that is not a +separator. Answer false if we reach the end of the stream, +else answer true; in this case, sending @-#next will return the +first non-separator character (possibly the same to which the +stream pointed before @-#skipSeparators was sent). + + @meindex skipTo:@- @item skipTo:@- anObject Move the current position to after the next occurrence of anObject @@ -27524,6 +28758,19 @@ +@node Stream-still unclassified +@subsection Stream:@- still unclassified + +@table @b +@meindex nextPutAllOn:@- +@item nextPutAllOn:@- aStream +Write all the objects in the receiver to aStream + + +@end table + + + @node Stream-storing @subsection Stream:@- storing @@ -27539,6 +28786,22 @@ +@node Stream-streaming protocol +@subsection Stream:@- streaming protocol + +@table @b +@meindex nextAvailablePutAllOn:@- +@item nextAvailablePutAllOn:@- aStream +Copy to aStream a more-or-less arbitrary amount of data. When used +on files, this does at most one I/O operation. For other kinds of +stream, the definition may vary. This method is used to do +stream-to-stream copies. + + +@end table + + + @node Stream-testing @subsection Stream:@- testing @@ -27595,6 +28858,7 @@ * String-basic:: (instance) * String-built ins:: (instance) * String-converting:: (instance) +* String-filesystem:: (instance) * String-printing:: (instance) * String-regex:: (instance) * String-testing functionality:: (instance) @@ -27666,7 +28930,7 @@ @meindex = -@item = aString +@item = aCollection Answer whether the receiver's items match those in aCollection @@ -27710,14 +28974,6 @@ Answer an hash value for the receiver -@meindex primReplaceFrom:@-to:@-with:@-startingAt:@- -@item primReplaceFrom:@- start to:@- stop with:@- replacementString startingAt:@- replaceStart -Private - Replace the characters from start to stop with new -characters contained in replacementString (which, actually, can be -any variable byte class, starting at the replaceStart location of -replacementString - - @meindex replaceFrom:@-to:@-with:@-startingAt:@- @item replaceFrom:@- start to:@- stop with:@- aString startingAt:@- replaceStart Replace the characters from start to stop with new characters whose @@ -27777,6 +29033,25 @@ +@node String-filesystem +@subsection String:@- filesystem + +@table @b +@meindex / +@item / aName +Answer a File object as appropriate for a file named +'aName' in the directory represented by the receiver. + + +@meindex asFile +@item asFile +Answer a File object for the file whose name is in the receiver. + + +@end table + + + @node String-printing @subsection String:@- printing @@ -27863,36 +29138,42 @@ @meindex copyFrom:@-to:@-replacingAllRegex:@-with:@- @slindex % -@item copyFrom:@- from to:@- to replacingAllRegex:@- pattern with:@- str +@item copyFrom:@- from to:@- to replacingAllRegex:@- pattern with:@- aStringOrBlock Returns the substring of the receiver between from and to. -Any match of pattern in that part of the string is replaced with -str after substituting %n sequences with the captured subexpressions -of the match (as in @-#%). +Any match of pattern in that part of the string is replaced +using aStringOrBlock as follows:@- if it is a block, a RegexResults +object is passed, while if it is a string, %n sequences are +replaced with the captured subexpressions of the match (as in @-#%). @meindex copyFrom:@-to:@-replacingRegex:@-with:@- @slindex % -@item copyFrom:@- from to:@- to replacingRegex:@- pattern with:@- str +@item copyFrom:@- from to:@- to replacingRegex:@- pattern with:@- aStringOrBlock Returns the substring of the receiver between from and to. If pattern has a match in that part of the string, the match -is replaced with str after substituting %n sequences with the -captured subexpressions of the match (as in @-#%). +is replaced using aStringOrBlock as follows:@- if it is +a block, a RegexResults object is passed, while if it is a string, +%n sequences are replaced with the captured subexpressions of the +match (as in @-#%). @meindex copyReplacingAllRegex:@-with:@- @slindex % -@item copyReplacingAllRegex:@- pattern with:@- str +@item copyReplacingAllRegex:@- pattern with:@- aStringOrBlock Returns the receiver after replacing all the matches of pattern (if -any) with str. %n sequences present in str are substituted with the -captured subexpressions of the match (as in @-#%). +any) using aStringOrBlock as follows:@- if it is a block, a RegexResults +object is passed, while if it is a string, %n sequences are +replaced with the captured subexpressions of the match (as in @-#%). @meindex copyReplacingRegex:@-with:@- @slindex % -@item copyReplacingRegex:@- pattern with:@- str +@item copyReplacingRegex:@- pattern with:@- aStringOrBlock Returns the receiver after replacing the first match of pattern (if -any) with str. %n sequences present in str are substituted with the -captured subexpressions of the match (as in @-#%). +any) using aStringOrBlock as follows:@- if it is a block, a +RegexResults object is passed, while if it is a string, %n +sequences are replaced with the captured subexpressions of the +match (as in @-#%). @meindex indexOfRegex:@- @@ -27983,19 +29264,23 @@ @meindex replacingAllRegex:@-with:@- @slindex % -@item replacingAllRegex:@- pattern with:@- str +@item replacingAllRegex:@- pattern with:@- aStringOrBlock Returns the receiver if the pattern has no match in it. Otherwise, -any match of pattern in that part of the string is replaced with -str after substituting %n sequences with the captured subexpressions -of the match (as in @-#%). +any match of pattern in that part of the string is replaced +using aStringOrBlock as follows:@- if it is a block, a RegexResults +object is passed, while if it is a string, %n sequences are +replaced with the captured subexpressions of the match (as +in @-#%). @meindex replacingRegex:@-with:@- @slindex % -@item replacingRegex:@- pattern with:@- str +@item replacingRegex:@- pattern with:@- aStringOrBlock Returns the receiver if the pattern has no match in it. If it has -a match, it is replaced with str after substituting %n sequences -with the captured subexpressions of the match (as in @-#%). +a match, it is replaced using aStringOrBlock as follows:@- if it is +a block, a RegexResults object is passed, while if it is a string, +%n sequences are replaced with the captured subexpressions of the +match (as in @-#%). @meindex searchRegex:@- @@ -29748,6 +31033,40 @@ @end table +@node SystemExceptions.UnhandledException +@section SystemExceptions.UnhandledException +@clindex SystemExceptions.UnhandledException + +@table @b +@item Defined in namespace Smalltalk.SystemExceptions +@itemx Superclass: Exception +@itemx Category: Language-Exception +I am raised when a backtrace is shown to terminate the +current process. +@end table + +@menu +* SystemExceptions.UnhandledException-accessing:: (instance) +@end menu + + + +@node SystemExceptions.UnhandledException-accessing +@subsection SystemExceptions.UnhandledException:@- accessing + +@table @b +@meindex defaultAction +@item defaultAction +Terminate the currrent process. + + +@meindex description +@item description +Answer a textual description of the exception. + + +@end table + @node SystemExceptions.UserInterrupt @section SystemExceptions.UserInterrupt @clindex SystemExceptions.UserInterrupt @@ -30880,6 +32199,7 @@ @menu * UnicodeCharacter class-built ins:: (class) +* UnicodeCharacter-coercion methods:: (instance) @end menu @@ -30904,6 +32224,19 @@ @end table + + +@node UnicodeCharacter-coercion methods +@subsection UnicodeCharacter:@- coercion methods + +@table @b +@meindex * +@item * aNumber +Returns a String with aNumber occurrences of the receiver. + + +@end table + @node UnicodeString @section UnicodeString @clindex UnicodeString @@ -31322,54 +32655,55 @@ @end table -@node VFS.ArchiveFileHandler -@section VFS.ArchiveFileHandler -@clindex VFS.ArchiveFileHandler +@node VFS.ArchiveFile +@section VFS.ArchiveFile +@clindex VFS.ArchiveFile @table @b @item Defined in namespace Smalltalk.VFS -@itemx Superclass: VFS.FileHandlerWrapper +@itemx Superclass: VFS.FileWrapper @itemx Category: Streams-Files -ArchiveFileHandler handles +ArchiveFile handles virtual filesystems that have a directory structure of their own. The directories and files in the archive are -instances of ArchiveMemberHandler, but the functionality -resides entirely in ArchiveFileHandler because the members +instances of ArchiveMember, but the functionality +resides entirely in ArchiveFile because the members will still ask the archive to get directory information on them, to extract them to a real file, and so on. @end table @menu -* VFS.ArchiveFileHandler-ArchiveMemberHandler protocol:: (instance) -* VFS.ArchiveFileHandler-directory operations:: (instance) -* VFS.ArchiveFileHandler-querying:: (instance) -* VFS.ArchiveFileHandler-TmpFileArchiveMemberHandler protocol:: (instance) +* VFS.ArchiveFile-ArchiveMember protocol:: (instance) +* VFS.ArchiveFile-directory operations:: (instance) +* VFS.ArchiveFile-querying:: (instance) +* VFS.ArchiveFile-still unclassified:: (instance) +* VFS.ArchiveFile-TmpFileArchiveMember protocol:: (instance) @end menu -@node VFS.ArchiveFileHandler-ArchiveMemberHandler protocol -@subsection VFS.ArchiveFileHandler:@- ArchiveMemberHandler protocol +@node VFS.ArchiveFile-ArchiveMember protocol +@subsection VFS.ArchiveFile:@- ArchiveMember protocol @table @b @meindex fillMember:@- @slindex size:@-stCtime:@-stMtime:@-stAtime:@-isDirectory:@- -@item fillMember:@- anArchiveMemberHandler -Extract the information on anArchiveMemberHandler. Answer +@item fillMember:@- anArchiveMember +Extract the information on anArchiveMember. Answer false if it actually does not exist in the archive; otherwise, -answer true after having told anArchiveMemberHandler about them +answer true after having told anArchiveMember about them by sending @-#size:@-stCtime:@-stMtime:@-stAtime:@-isDirectory:@- to it. @meindex member:@-do:@- -@item member:@- anArchiveMemberHandler do:@- aBlock +@item member:@- anArchiveMember do:@- aBlock Evaluate aBlock once for each file in the directory represented by -anArchiveMemberHandler, passing its name. +anArchiveMember, passing its name. @meindex member:@-mode:@- -@item member:@- anArchiveMemberHandler mode:@- bits -Set the permission bits for the file in anArchiveMemberHandler. +@item member:@- anArchiveMember mode:@- bits +Set the permission bits for the file in anArchiveMember. @meindex refresh @@ -31378,13 +32712,13 @@ @meindex removeMember:@- -@item removeMember:@- anArchiveMemberHandler -Remove the member represented by anArchiveMemberHandler. +@item removeMember:@- anArchiveMember +Remove the member represented by anArchiveMember. @meindex updateMember:@- -@item updateMember:@- anArchiveMemberHandler -Update the member represented by anArchiveMemberHandler by +@item updateMember:@- anArchiveMember +Update the member represented by anArchiveMember by copying the file into which it was extracted back to the archive. @@ -31393,18 +32727,24 @@ -@node VFS.ArchiveFileHandler-directory operations -@subsection VFS.ArchiveFileHandler:@- directory operations +@node VFS.ArchiveFile-directory operations +@subsection VFS.ArchiveFile:@- directory operations @table @b @meindex at:@- @item at:@- aName -Answer a VFSHandler for a file named `aName' residing in the directory +Answer a FilePath for a file named `aName' residing in the directory represented by the receiver. -@meindex do:@- -@item do:@- aBlock +@meindex nameAt:@- +@item nameAt:@- aString +Answer a FilePath for a file named `aName' residing in the directory +represented by the receiver. + + +@meindex namesDo:@- +@item namesDo:@- aBlock Evaluate aBlock once for each file in the directory represented by the receiver, passing its name. @@ -31419,8 +32759,8 @@ -@node VFS.ArchiveFileHandler-querying -@subsection VFS.ArchiveFileHandler:@- querying +@node VFS.ArchiveFile-querying +@subsection VFS.ArchiveFile:@- querying @table @b @meindex isAccessible @@ -31437,496 +32777,80 @@ @end table - -@node VFS.ArchiveFileHandler-TmpFileArchiveMemberHandler protocol -@subsection VFS.ArchiveFileHandler:@- TmpFileArchiveMemberHandler protocol - -@table @b -@meindex extractMember:@- -@item extractMember:@- anArchiveMemberHandler -Extract the contents of anArchiveMemberHandler into a file -that resides on disk, and answer the name of the file. - - -@meindex extractMember:@-into:@- -@item extractMember:@- anArchiveMemberHandler into:@- file -Extract the contents of anArchiveMemberHandler into a file -that resides on disk, and answer the name of the file. - - -@end table - -@node VFS.ArchiveMemberHandler -@section VFS.ArchiveMemberHandler -@clindex VFS.ArchiveMemberHandler - -@table @b -@item Defined in namespace Smalltalk.VFS -@itemx Superclass: VFS.VFSHandler -@itemx Category: Streams-Files -TmpFileArchiveMemberHandler is a handler -class for members of archive files that creates temporary files when -extracting files from an archive. -@end table - -@menu -* VFS.ArchiveMemberHandler-accessing:: (instance) -* VFS.ArchiveMemberHandler-directory operations:: (instance) -* VFS.ArchiveMemberHandler-file operations:: (instance) -* VFS.ArchiveMemberHandler-initializing:: (instance) -* VFS.ArchiveMemberHandler-testing:: (instance) -@end menu - - - -@node VFS.ArchiveMemberHandler-accessing -@subsection VFS.ArchiveMemberHandler:@- accessing - -@table @b -@meindex creationTime -@item creationTime -Answer the creation time of the file identified by the receiver. -On some operating systems, this could actually be the last change time -(the `last change time' has to do with permissions, ownership and the -like). - - -@meindex fullName -@slindex name -@item fullName -Answer the name of the file identified by the receiver as answered by -File>>@-#name. - - -@meindex lastAccessTime -@item lastAccessTime -Answer the last access time of the file identified by the receiver - - -@meindex lastChangeTime -@item lastChangeTime -Answer the last change time of the file identified by the receiver -(the `last change time' has to do with permissions, ownership and the -like). On some operating systems, this could actually be the -file creation time. - - -@meindex lastModifyTime -@item lastModifyTime -Answer the last modify time of the file identified by the receiver -(the `last modify time' has to do with the actual file contents). - - -@meindex name -@item name -Answer the receiver's file name. - - -@meindex name:@- -@item name:@- aName -Set the receiver's file name to aName. - - -@meindex parent -@item parent -Answer the archive of which the receiver is a member. - - -@meindex realFileName -@item realFileName -Answer `nil'. - -@meindex refresh -@item refresh -Refresh the statistics for the receiver - - -@meindex size -@item size -Answer the size of the file identified by the receiver - - -@end table - - - -@node VFS.ArchiveMemberHandler-directory operations -@subsection VFS.ArchiveMemberHandler:@- directory operations - -@table @b -@meindex at:@- -@item at:@- aName -Answer a VFSHandler for a file named `aName' residing in the directory -represented by the receiver. - - -@meindex createDir:@- -@item createDir:@- dirName -Create a subdirectory of the receiver, naming it dirName. - - -@meindex do:@- -@item do:@- aBlock -Evaluate aBlock once for each file in the directory represented by the -receiver, passing its name. - - -@end table - - - -@node VFS.ArchiveMemberHandler-file operations -@subsection VFS.ArchiveMemberHandler:@- file operations - -@table @b -@meindex open:@-mode:@-ifFail:@- -@item open:@- class mode:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) - - -@meindex remove -@item remove -Remove the file with the given path name - - -@meindex renameTo:@- -@item renameTo:@- newFileName -Rename the file with the given path name oldFileName to newFileName - - -@meindex update:@- -@item update:@- aspect -Private - Update the in-archive version of the file before closing. - - -@end table - - - -@node VFS.ArchiveMemberHandler-initializing -@subsection VFS.ArchiveMemberHandler:@- initializing - -@table @b -@meindex fillFrom:@- -@item fillFrom:@- data -Called back by the receiver's parent when the ArchiveMemberHandler -asks for file information. - - -@meindex parent:@- -@item parent:@- anArchiveFileHandler -Set the archive of which the receiver is a member. - - -@meindex size:@-stCtime:@-stMtime:@-stAtime:@-mode:@- -@item size:@- bytes stCtime:@- ctime stMtime:@- mtime stAtime:@- atime mode:@- modeBits -Set the file information for the receiver. - - -@meindex size:@-stMtime:@-mode:@- -@item size:@- bytes stMtime:@- mtime mode:@- modeBits -Set the file information for the receiver. - - -@end table - - - -@node VFS.ArchiveMemberHandler-testing -@subsection VFS.ArchiveMemberHandler:@- testing - -@table @b -@meindex exists -@item exists -Answer whether a file with the name contained in the receiver does exist. - - -@meindex isAccessible -@item isAccessible -Answer whether a directory with the name contained in the receiver does exist -and is accessible - - -@meindex isDirectory -@item isDirectory -Answer whether a file with the name contained in the receiver does exist -and identifies a directory. - - -@meindex isExecutable -@item isExecutable -Answer whether a file with the name contained in the receiver does exist -and is executable - - -@meindex isReadable -@item isReadable -Answer whether a file with the name contained in the receiver does exist -and is readable - - -@meindex isWriteable -@item isWriteable -Answer whether a file with the name contained in the receiver does exist -and is writeable - - -@meindex mode -@item mode -Answer the octal permissions for the file. - - -@meindex mode:@- -@item mode:@- mode -Set the octal permissions for the file to be `mode'. - - -@end table - -@node VFS.CStatStruct -@section VFS.CStatStruct -@clindex VFS.CStatStruct - -@table @b -@item Defined in namespace Smalltalk.VFS -@itemx Superclass: CStruct -@itemx Category: Streams-Files - -@end table - -@menu -* VFS.CStatStruct class-accessing:: (class) -* VFS.CStatStruct-accessing:: (instance) -* VFS.CStatStruct-debugging:: (instance) -@end menu - - - -@node VFS.CStatStruct class-accessing -@subsection VFS.CStatStruct class:@- accessing - -@table @b -@meindex alignof -@item alignof -Not commented. - -@meindex sizeof -@item sizeof -Not commented. - -@end table - - - -@node VFS.CStatStruct-accessing -@subsection VFS.CStatStruct:@- accessing - -@table @b -@meindex alignof -@item alignof -Not commented. - -@meindex sizeof -@item sizeof -Not commented. - -@meindex stAtime -@item stAtime -Not commented. - -@meindex stCtime -@item stCtime -Not commented. - -@meindex stMode -@item stMode -Not commented. - -@meindex stMtime -@item stMtime -Not commented. - -@meindex stSize -@item stSize -Not commented. - -@end table - - - -@node VFS.CStatStruct-debugging -@subsection VFS.CStatStruct:@- debugging - -@table @b -@meindex inspectSelectorList -@item inspectSelectorList -Not commented. - -@end table - -@node VFS.DecodedFileHandler -@section VFS.DecodedFileHandler -@clindex VFS.DecodedFileHandler - -@table @b -@item Defined in namespace Smalltalk.VFS -@itemx Superclass: VFS.FileHandlerWrapper -@itemx Category: Streams-Files - -@end table - -@menu -* VFS.DecodedFileHandler class-registering:: (class) -* VFS.DecodedFileHandler-files:: (instance) -@end menu - - - -@node VFS.DecodedFileHandler class-registering -@subsection VFS.DecodedFileHandler class:@- registering - -@table @b -@meindex defaultFileTypes -@item defaultFileTypes -Return the default virtual filesystems and the associated -filter commands. - - -@meindex fileSystems -@slindex gz -@slindex ugz -@slindex Z -@slindex uZ -@slindex bz2 -@slindex ubz2 -@slindex tar -@slindex tgz -@slindex nop -@slindex strings -@item fileSystems -Answer the virtual file systems that can be processed by this subclass. -These are @-#gz (gzip a file), @-#ugz (uncompress a gzipped file), -@-#Z (compress a file via Unix compress), @-#uZ (uncompress a compressed -file), @-#bz2 (compress a file via bzip2), @-#ubz2 (uncompress a file via -bzip2), @-#tar (make a tar archive out of a directory), @-#tgz (make a -gzipped tar archive out of a directory), @-#nop (do nothing, used for -testing) and @-#strings (use the `strings' utility to extract printable -strings from a file). - - -@meindex fileTypes -@item fileTypes -Return the valid virtual filesystems and the associated -filter commands. - - -@meindex priority -@item priority -Answer the priority for this class (higher number = higher priority) in -case multiple classes implement the same file system. - - -@end table - - - -@node VFS.DecodedFileHandler-files -@subsection VFS.DecodedFileHandler:@- files - -@table @b -@meindex at:@- -@item at:@- aName -Signal an error, as this can't represent a file container. - - -@meindex open:@-mode:@-ifFail:@- -@item open:@- class mode:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) - - -@meindex parent:@-fsName:@- -@item parent:@- containerFileHandler fsName:@- aString -Private - Initialize a new object storing the contents of the -virtualFileName file into temporaryFileName. - - -@meindex realFileName -@item realFileName -Answer the real file name which holds the file contents, -or nil if it does not apply. - - -@meindex release -@item release -Release the resources used by the receiver that don't survive when -reloading a snapshot. - - -@end table - -@node VFS.FileHandlerWrapper -@section VFS.FileHandlerWrapper -@clindex VFS.FileHandlerWrapper - + +@node VFS.ArchiveFile-still unclassified +@subsection VFS.ArchiveFile:@- still unclassified + @table @b -@item Defined in namespace Smalltalk.VFS -@itemx Superclass: VFS.VFSHandler -@itemx Category: Streams-Files -DecodedFileHandler handles -virtual filesystems that take a file that is on-disk, run a -command on it, and then read from the result. -@end table +@meindex displayOn:@- +@item displayOn:@- aStream +Print a representation of the file identified by the receiver. -@menu -* VFS.FileHandlerWrapper class-instance creation:: (class) -* VFS.FileHandlerWrapper-accessing:: (instance) -* VFS.FileHandlerWrapper-delegation:: (instance) -@end menu + +@end table -@node VFS.FileHandlerWrapper class-instance creation -@subsection VFS.FileHandlerWrapper class:@- instance creation +@node VFS.ArchiveFile-TmpFileArchiveMember protocol +@subsection VFS.ArchiveFile:@- TmpFileArchiveMember protocol @table @b -@meindex vfsFor:@-name:@- -@item vfsFor:@- parent name:@- fsName -Create an instance of this class representing the contents of the given -file, under the virtual filesystem fsName. +@meindex extractMember:@- +@item extractMember:@- anArchiveMember +Extract the contents of anArchiveMember into a file +that resides on disk, and answer the name of the file. -@end table +@meindex extractMember:@-into:@- +@item extractMember:@- anArchiveMember into:@- file +Extract the contents of anArchiveMember into a file +that resides on disk, and answer the name of the file. +@end table -@node VFS.FileHandlerWrapper-accessing -@subsection VFS.FileHandlerWrapper:@- accessing +@node VFS.ArchiveMember +@section VFS.ArchiveMember +@clindex VFS.ArchiveMember @table @b -@meindex name -@item name -Answer the VFS name for my file. +@item Defined in namespace Smalltalk.VFS +@itemx Superclass: FilePath +@itemx Category: Streams-Files +TmpFileArchiveMember is a handler +class for members of archive files that creates temporary files when +extracting files from an archive. +@end table +@menu +* VFS.ArchiveMember-accessing:: (instance) +* VFS.ArchiveMember-basic:: (instance) +* VFS.ArchiveMember-delegation:: (instance) +* VFS.ArchiveMember-directory operations:: (instance) +* VFS.ArchiveMember-file operations:: (instance) +* VFS.ArchiveMember-initializing:: (instance) +* VFS.ArchiveMember-still unclassified:: (instance) +* VFS.ArchiveMember-testing:: (instance) +@end menu -@meindex parent -@item parent -Answer `parent'. -@meindex realFileName -@item realFileName -Answer the container file containing me. +@node VFS.ArchiveMember-accessing +@subsection VFS.ArchiveMember:@- accessing -@end table +@table @b +@meindex archive +@item archive +Answer the archive of which the receiver is a member. +@meindex asString +@slindex name +@item asString +Answer the name of the file identified by the receiver as answered by +File>>@-#name. -@node VFS.FileHandlerWrapper-delegation -@subsection VFS.FileHandlerWrapper:@- delegation -@table @b @meindex creationTime @item creationTime Answer the creation time of the file identified by the receiver. @@ -31935,24 +32859,6 @@ like). -@meindex isExecutable -@item isExecutable -Answer whether a file with the name contained in the receiver does exist -and is executable - - -@meindex isReadable -@item isReadable -Answer whether a file with the name contained in the receiver does exist -and is readable - - -@meindex isWriteable -@item isWriteable -Answer whether a file with the name contained in the receiver does exist -and is writeable - - @meindex lastAccessTime @item lastAccessTime Answer the last access time of the file identified by the receiver @@ -31972,15 +32878,19 @@ (the `last modify time' has to do with the actual file contents). -@meindex open:@-mode:@-ifFail:@- -@item open:@- class mode:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +@meindex name +@item name +Answer the receiver's file name. -@meindex remove -@item remove -Remove the file with the given path name +@meindex name:@- +@item name:@- aName +Set the receiver's file name to aName. + + +@meindex refresh +@item refresh +Refresh the statistics for the receiver @meindex size @@ -31990,196 +32900,148 @@ @end table -@node VFS.RealFileHandler -@section VFS.RealFileHandler -@clindex VFS.RealFileHandler - -@table @b -@item Defined in namespace Smalltalk.VFS -@itemx Superclass: VFS.VFSHandler -@itemx Category: Streams-Files -RealFileHandler is an handler for -files that are on disk, as well as for virtual files that end -up being on disk when they are opened for the first time. -@end table -@menu -* VFS.RealFileHandler class-C call-outs:: (class) -* VFS.RealFileHandler class-initialization:: (class) -* VFS.RealFileHandler-accessing:: (instance) -* VFS.RealFileHandler-directory operations:: (instance) -* VFS.RealFileHandler-file operations:: (instance) -* VFS.RealFileHandler-testing:: (instance) -@end menu +@node VFS.ArchiveMember-basic +@subsection VFS.ArchiveMember:@- basic +@table @b +@meindex = +@item = aFile +Answer whether the receiver represents the same file as the receiver. -@node VFS.RealFileHandler class-C call-outs -@subsection VFS.RealFileHandler class:@- C call-outs -@table @b -@meindex working -@item working -Answer the working directory. +@meindex hash +@item hash +Answer a hash value for the receiver. @end table -@node VFS.RealFileHandler class-initialization -@subsection VFS.RealFileHandler class:@- initialization +@node VFS.ArchiveMember-delegation +@subsection VFS.ArchiveMember:@- delegation @table @b -@meindex initialize -@item initialize -Initialize the receiver's class variables +@meindex full +@item full +Answer the size of the file identified by the receiver @end table -@node VFS.RealFileHandler-accessing -@subsection VFS.RealFileHandler:@- accessing +@node VFS.ArchiveMember-directory operations +@subsection VFS.ArchiveMember:@- directory operations @table @b -@meindex creationTime -@item creationTime -Answer the creation time of the file identified by the receiver. -On some operating systems, this could actually be the last change time -(the `last change time' has to do with permissions, ownership and the -like). - - -@meindex finalize -@item finalize -Free the statistics for the receiver - - -@meindex isDirectory -@item isDirectory -Answer whether the file is a directory. - - -@meindex isSymbolicLink -@item isSymbolicLink -Answer whether the file is a symbolic link. - - -@meindex lastAccessTime -@item lastAccessTime -Answer the last access time of the file identified by the receiver - - -@meindex lastChangeTime -@item lastChangeTime -Answer the last change time of the file identified by the receiver -(the `last change time' has to do with permissions, ownership and the -like). On some operating systems, this could actually be the -file creation time. +@meindex at:@- +@item at:@- aName +Answer a FilePath for a file named `aName' residing in the directory +represented by the receiver. -@meindex lastModifyTime -@item lastModifyTime -Answer the last modify time of the file identified by the receiver -(the `last modify time' has to do with the actual file contents). +@meindex createDirectory:@- +@item createDirectory:@- dirName +Create a subdirectory of the receiver, naming it dirName. -@meindex mode -@item mode -Answer the octal permissions for the file. +@meindex namesDo:@- +@item namesDo:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing its name. -@meindex mode:@- -@item mode:@- mode -Set the octal permissions for the file to be `mode'. +@end table -@meindex name -@item name -Answer the name of the file identified by the receiver +@node VFS.ArchiveMember-file operations +@subsection VFS.ArchiveMember:@- file operations -@meindex name:@- -@item name:@- aName -Private - Initialize the receiver's instance variables +@table @b +@meindex open:@-mode:@-ifFail:@- +@item open:@- class mode:@- mode ifFail:@- aBlock +Open the receiver in the given mode (as answered by FileStream's +class constant methods) -@meindex realFileName -@item realFileName -Answer the real file name for the file identified by the receiver +@meindex remove +@item remove +Remove the file with the given path name -@meindex refresh -@item refresh -Refresh the statistics for the receiver +@meindex renameTo:@- +@item renameTo:@- newFileName +Rename the file with the given path name oldFileName to newFileName -@meindex size -@item size -Answer the size of the file identified by the receiver +@meindex update:@- +@item update:@- aspect +Private - Update the in-archive version of the file before closing. @end table -@node VFS.RealFileHandler-directory operations -@subsection VFS.RealFileHandler:@- directory operations +@node VFS.ArchiveMember-initializing +@subsection VFS.ArchiveMember:@- initializing @table @b -@meindex createDir:@- -@item createDir:@- dirName -Create a subdirectory of the receiver, naming it dirName. +@meindex archive:@- +@item archive:@- anArchiveFile +Set the archive of which the receiver is a member. -@meindex do:@- -@item do:@- aBlock -Evaluate aBlock once for each file in the directory represented by the -receiver, passing its name. aBlock should not return. +@meindex fillFrom:@- +@item fillFrom:@- data +Called back by the receiver's archive when the ArchiveMember +asks for file information. -@end table +@meindex size:@-stCtime:@-stMtime:@-stAtime:@-mode:@- +@item size:@- bytes stCtime:@- ctime stMtime:@- mtime stAtime:@- atime mode:@- modeBits +Set the file information for the receiver. +@meindex size:@-stMtime:@-mode:@- +@item size:@- bytes stMtime:@- mtime mode:@- modeBits +Set the file information for the receiver. -@node VFS.RealFileHandler-file operations -@subsection VFS.RealFileHandler:@- file operations -@table @b -@meindex lastAccessTime:@-lastModifyTime:@- -@item lastAccessTime:@- accessDateTime lastModifyTime:@- modifyDateTime -Set the receiver's timestamps to be accessDateTime and modifyDateTime. +@end table -@meindex open:@-mode:@-ifFail:@- -@item open:@- class mode:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +@node VFS.ArchiveMember-still unclassified +@subsection VFS.ArchiveMember:@- still unclassified -@meindex remove -@item remove -Remove the file with the given path name +@table @b +@meindex , +@item , aName +Answer an object of the same kind as the receiver, whose name +is suffixed with aName. -@meindex renameTo:@- -@item renameTo:@- newFileName -Rename the file with the given path name to newFileName +@meindex displayOn:@- +@item displayOn:@- aStream +Print a representation of the file identified by the receiver. -@meindex symlinkFrom:@- -@item symlinkFrom:@- srcName -Create the receiver as a symlink from path destName +@meindex isAbsolute +@item isAbsolute +Answer whether the receiver identifies an absolute path. @end table -@node VFS.RealFileHandler-testing -@subsection VFS.RealFileHandler:@- testing +@node VFS.ArchiveMember-testing +@subsection VFS.ArchiveMember:@- testing @table @b @meindex exists @@ -32187,6 +33049,18 @@ Answer whether a file with the name contained in the receiver does exist. +@meindex isAccessible +@item isAccessible +Answer whether a directory with the name contained in the receiver does exist +and is accessible + + +@meindex isDirectory +@item isDirectory +Answer whether a file with the name contained in the receiver does exist +and identifies a directory. + + @meindex isExecutable @item isExecutable Answer whether a file with the name contained in the receiver does exist @@ -32199,147 +33073,143 @@ and is readable +@meindex isSymbolicLink +@item isSymbolicLink +Answer whether a file with the name contained in the receiver does exist +and identifies a symbolic link. + + @meindex isWriteable @item isWriteable Answer whether a file with the name contained in the receiver does exist and is writeable +@meindex mode +@item mode +Answer the octal permissions for the file. + + +@meindex mode:@- +@item mode:@- mode +Set the octal permissions for the file to be `mode'. + + @end table -@node VFS.TmpFileArchiveMemberHandler -@section VFS.TmpFileArchiveMemberHandler -@clindex VFS.TmpFileArchiveMemberHandler +@node VFS.FileWrapper +@section VFS.FileWrapper +@clindex VFS.FileWrapper @table @b @item Defined in namespace Smalltalk.VFS -@itemx Superclass: VFS.ArchiveMemberHandler +@itemx Superclass: FilePath @itemx Category: Streams-Files - +FileWrapper gives information for +virtual files that refer to a real file on disk. @end table @menu -* VFS.TmpFileArchiveMemberHandler-directory operations:: (instance) -* VFS.TmpFileArchiveMemberHandler-finalization:: (instance) +* VFS.FileWrapper class-initializing:: (class) +* VFS.FileWrapper class-instance creation:: (class) +* VFS.FileWrapper-accessing:: (instance) +* VFS.FileWrapper-basic:: (instance) +* VFS.FileWrapper-delegation:: (instance) +* VFS.FileWrapper-enumerating:: (instance) +* VFS.FileWrapper-file operations:: (instance) +* VFS.FileWrapper-testing:: (instance) @end menu -@node VFS.TmpFileArchiveMemberHandler-directory operations -@subsection VFS.TmpFileArchiveMemberHandler:@- directory operations +@node VFS.FileWrapper class-initializing +@subsection VFS.FileWrapper class:@- initializing @table @b -@meindex open:@-mode:@-ifFail:@- -@item open:@- class mode:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +@meindex initialize +@item initialize +Register the receiver with ObjectMemory -@meindex realFileName -@item realFileName -Answer the real file name which holds the file contents, -or nil if it does not apply. +@meindex update:@- +@item update:@- aspect +Private - Remove the files before quitting, and register the virtual +filesystems specified by the subclasses upon image load. @end table -@node VFS.TmpFileArchiveMemberHandler-finalization -@subsection VFS.TmpFileArchiveMemberHandler:@- finalization +@node VFS.FileWrapper class-instance creation +@subsection VFS.FileWrapper class:@- instance creation @table @b -@meindex release -@item release -Release the resources used by the receiver that don't survive when -reloading a snapshot. - - -@end table +@meindex on:@- +@item on:@- file +Create an instance of this class representing the contents of the given +file, under the virtual filesystem fsName. -@node VFS.VFSHandler -@section VFS.VFSHandler -@clindex VFS.VFSHandler -@table @b -@item Defined in namespace Smalltalk.VFS -@itemx Superclass: Object -@itemx Category: Streams-Files -VFSHandler is the abstract class for -implementations of File and Directory. These classes only -delegate to the appropriate handler, which is in charge of -actually accessing or ``molding'' the filesystem. @end table -@menu -* VFS.VFSHandler class-initializing:: (class) -* VFS.VFSHandler class-instance creation:: (class) -* VFS.VFSHandler-accessing:: (instance) -* VFS.VFSHandler-directory operations:: (instance) -* VFS.VFSHandler-file operations:: (instance) -* VFS.VFSHandler-releasing:: (instance) -* VFS.VFSHandler-testing:: (instance) -@end menu - -@node VFS.VFSHandler class-initializing -@subsection VFS.VFSHandler class:@- initializing +@node VFS.FileWrapper-accessing +@subsection VFS.FileWrapper:@- accessing @table @b -@meindex fileSystems -@slindex vfsFor:@-name:@-subPath:@- -@item fileSystems -Answer the virtual file systems that can be processed by this subclass. -The default is to answer an empty array, but subclasses can override -this. If you do so, you should override @-#vfsFor:@-name:@-subPath:@- as well -or you risk infinite loops. +@meindex asString +@item asString +Answer the string representation of the receiver's path. -@meindex initialize -@item initialize -Register the receiver with ObjectMemory +@meindex at:@- +@item at:@- aName +Answer a File or Directory object as appropriate for a file named +'aName' in the directory represented by the receiver. -@meindex priority -@item priority -Answer the priority for this class (higher number = higher priority) in -case multiple classes implement the same file system. The default is 0. +@meindex lastAccessTime:@-lastModifyTime:@- +@item lastAccessTime:@- accessDateTime lastModifyTime:@- modifyDateTime +Update the timestamps of the file corresponding to the receiver, to be +accessDateTime and modifyDateTime. -@meindex register:@-forClass:@- -@slindex fileSystems -@item register:@- fileSystem forClass:@- vfsHandlerClass -Register the given file system to be handled by an instance of -vfsHandlerClass. This is automatically called if the class overrides -@-#fileSystems. +@meindex name +@item name +Answer the full path to the receiver. -@meindex update:@- -@item update:@- aspect -Private - Remove the files before quitting, and register the virtual -filesystems specified by the subclasses upon image load. +@meindex pathTo:@- +@item pathTo:@- destName +Compute the relative path from the receiver to destName. @end table -@node VFS.VFSHandler class-instance creation -@subsection VFS.VFSHandler class:@- instance creation +@node VFS.FileWrapper-basic +@subsection VFS.FileWrapper:@- basic @table @b -@meindex for:@- -@item for:@- fileName -Answer the (real or virtual) file handler for the file named fileName +@meindex = +@item = aFile +Answer whether the receiver represents the same file as the receiver. + + +@meindex hash +@item hash +Answer a hash value for the receiver. @end table -@node VFS.VFSHandler-accessing -@subsection VFS.VFSHandler:@- accessing +@node VFS.FileWrapper-delegation +@subsection VFS.FileWrapper:@- delegation @table @b @meindex creationTime @@ -32350,11 +33220,27 @@ like). -@meindex fullName -@slindex name -@item fullName -Answer the name of the file identified by the receiver as answered by -File>>@-#name. +@meindex full +@item full +Answer the size of the file identified by the receiver + + +@meindex isExecutable +@item isExecutable +Answer whether a file with the name contained in the receiver does exist +and is executable + + +@meindex isReadable +@item isReadable +Answer whether a file with the name contained in the receiver does exist +and is readable + + +@meindex isWriteable +@item isWriteable +Answer whether a file with the name contained in the receiver does exist +and is writeable @meindex lastAccessTime @@ -32376,20 +33262,25 @@ (the `last modify time' has to do with the actual file contents). -@meindex name -@item name -Answer the name of the file identified by the receiver +@meindex mode +@item mode +Answer the permission bits for the file identified by the receiver -@meindex realFileName -@item realFileName -Answer the real file name which holds the file contents, -or nil if it does not apply. +@meindex mode:@- +@item mode:@- anInteger +Answer the permission bits for the file identified by the receiver -@meindex refresh -@item refresh -Refresh the statistics for the receiver +@meindex open:@-mode:@-ifFail:@- +@item open:@- class mode:@- mode ifFail:@- aBlock +Open the receiver in the given mode (as answered by FileStream's +class constant methods) + + +@meindex remove +@item remove +Remove the file with the given path name @meindex size @@ -32401,135 +33292,251 @@ -@node VFS.VFSHandler-directory operations -@subsection VFS.VFSHandler:@- directory operations +@node VFS.FileWrapper-enumerating +@subsection VFS.FileWrapper:@- enumerating @table @b -@meindex at:@- -@item at:@- aName -Answer a VFSHandler for a file named `aName' residing in the directory -represented by the receiver. +@meindex namesDo:@- +@item namesDo:@- aBlock +Evaluate aBlock once for each file in the directory represented by the +receiver, passing its name. -@meindex createDir:@- -@item createDir:@- dirName -Create a subdirectory of the receiver, naming it dirName. +@end table -@meindex do:@- -@item do:@- aBlock -Evaluate aBlock once for each file in the directory represented by the -receiver, passing its name. aBlock should not return. + +@node VFS.FileWrapper-file operations +@subsection VFS.FileWrapper:@- file operations + +@table @b +@meindex pathFrom:@- +@item pathFrom:@- dirName +Compute the relative path from the directory dirName to the receiver + + +@meindex renameTo:@- +@item renameTo:@- newName +Rename the file identified by the receiver to newName + + +@meindex symlinkAs:@- +@item symlinkAs:@- destName +Create destName as a symbolic link of the receiver. The appropriate +relative path is computed automatically. + + +@meindex symlinkFrom:@- +@item symlinkFrom:@- srcName +Create the receiver as a symbolic link from srcName (relative to the +path of the receiver). @end table -@node VFS.VFSHandler-file operations -@subsection VFS.VFSHandler:@- file operations +@node VFS.FileWrapper-testing +@subsection VFS.FileWrapper:@- testing @table @b -@meindex lastAccessTime:@-lastModifyTime:@- -@item lastAccessTime:@- accessDateTime lastModifyTime:@- modifyDateTime -Set the receiver's timestamps to be accessDateTime and modifyDateTime. -If your file system does not support distinct access and modification -times, you should discard accessDateTime. +@meindex exists +@item exists +Answer whether a file with the name contained in the receiver +does exist. -@meindex open:@-ifFail:@- -@item open:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +@meindex isAbsolute +@item isAbsolute +Answer whether the receiver identifies an absolute path. + +@meindex isAccessible +@item isAccessible +Answer whether a directory with the name contained in the receiver does +exist and can be accessed + + +@meindex isDirectory +@item isDirectory +Answer whether a file with the name contained in the receiver +does exist identifies a directory. + + +@meindex isSymbolicLink +@item isSymbolicLink +Answer whether a file with the name contained in the receiver +does exist and identifies a symbolic link. + + +@end table + +@node VFS.StoredZipMember +@section VFS.StoredZipMember +@clindex VFS.StoredZipMember + +@table @b +@item Defined in namespace Smalltalk.VFS +@itemx Superclass: VFS.TmpFileArchiveMember +@itemx Category: Streams-Files +ArchiveMember is the handler +class for stored ZIP archive members, which are optimized. +@end table + +@menu +* VFS.StoredZipMember-accessing:: (instance) +* VFS.StoredZipMember-opening:: (instance) +@end menu + + + +@node VFS.StoredZipMember-accessing +@subsection VFS.StoredZipMember:@- accessing + +@table @b +@meindex offset +@item offset +Answer `offset'. + +@meindex offset:@- +@item offset:@- anInteger +Not commented. + +@end table + + +@node VFS.StoredZipMember-opening +@subsection VFS.StoredZipMember:@- opening + +@table @b @meindex open:@-mode:@-ifFail:@- @item open:@- class mode:@- mode ifFail:@- aBlock -Open the receiver in the given mode (as answered by FileStream's -class constant methods) +Not commented. + +@end table +@node VFS.TmpFileArchiveMember +@section VFS.TmpFileArchiveMember +@clindex VFS.TmpFileArchiveMember -@meindex openDescriptor:@-ifFail:@- -@item openDescriptor:@- mode ifFail:@- aBlock +@table @b +@item Defined in namespace Smalltalk.VFS +@itemx Superclass: VFS.ArchiveMember +@itemx Category: Streams-Files + +@end table + +@menu +* VFS.TmpFileArchiveMember-directory operations:: (instance) +* VFS.TmpFileArchiveMember-finalization:: (instance) +* VFS.TmpFileArchiveMember-still unclassified:: (instance) +@end menu + + + +@node VFS.TmpFileArchiveMember-directory operations +@subsection VFS.TmpFileArchiveMember:@- directory operations + +@table @b +@meindex file +@item file +Answer the real file name which holds the file contents, +or nil if it does not apply. + + +@meindex open:@-mode:@-ifFail:@- +@item open:@- class mode:@- mode ifFail:@- aBlock Open the receiver in the given mode (as answered by FileStream's class constant methods) -@meindex remove -@item remove -Remove the file with the given path name +@end table -@meindex renameTo:@- -@item renameTo:@- newFileName -Rename the file with the given path name oldFileName to newFileName +@node VFS.TmpFileArchiveMember-finalization +@subsection VFS.TmpFileArchiveMember:@- finalization -@meindex symlinkFrom:@- -@item symlinkFrom:@- srcName -Create the receiver as a symlink from the relative path srcName +@table @b +@meindex release +@item release +Release the resources used by the receiver that don't survive when +reloading a snapshot. @end table -@node VFS.VFSHandler-releasing -@subsection VFS.VFSHandler:@- releasing +@node VFS.TmpFileArchiveMember-still unclassified +@subsection VFS.TmpFileArchiveMember:@- still unclassified @table @b -@meindex finalize -@item finalize -Upon finalization, we remove the file that was temporarily holding the file -contents +@meindex extracted +@item extracted +Answer whether the file has already been extracted to disk. @end table +@node VFS.ZipFile +@section VFS.ZipFile +@clindex VFS.ZipFile +@table @b +@item Defined in namespace Smalltalk.VFS +@itemx Superclass: VFS.ArchiveFile +@itemx Category: Streams-Files +ZipFile transparently extracts +files from a ZIP archive. +@end table -@node VFS.VFSHandler-testing -@subsection VFS.VFSHandler:@- testing +@menu +* VFS.ZipFile-members:: (instance) +@end menu -@table @b -@meindex exists -@item exists -Answer whether a file with the name contained in the receiver does exist. -@meindex isAccessible -@item isAccessible -Answer whether a directory with the name contained in the receiver does -exist and can be accessed +@node VFS.ZipFile-members +@subsection VFS.ZipFile:@- members +@table @b +@meindex centralDirectoryRangeIn:@- +@item centralDirectoryRangeIn:@- f +Not commented. -@meindex isDirectory -@item isDirectory -Answer whether a file with the name contained in the receiver does exist -and identifies a directory. +@meindex createDirectory:@- +@item createDirectory:@- dirName +Create a subdirectory of the receiver, naming it dirName. -@meindex isExecutable -@item isExecutable -Answer whether a file with the name contained in the receiver does exist -and is executable +@meindex extractMember:@-into:@- +@item extractMember:@- anArchiveMember into:@- temp +Extract the contents of anArchiveMember into a file +that resides on disk, and answer the name of the file. -@meindex isReadable -@item isReadable -Answer whether a file with the name contained in the receiver does exist -and is readable +@meindex fileData +@item fileData +Extract the directory listing from the archive -@meindex isSymbolicLink -@item isSymbolicLink -Answer whether the file is a symbolic link. +@meindex member:@-mode:@- +@item member:@- anArchiveMember mode:@- bits +Set the permission bits for the file in anArchiveMember. -@meindex isWriteable -@item isWriteable -Answer whether a file with the name contained in the receiver does exist -and is writeable +@meindex removeMember:@- +@item removeMember:@- anArchiveMember +Remove the member represented by anArchiveMember. + + +@meindex updateMember:@- +@item updateMember:@- anArchiveMember +Update the member represented by anArchiveMember by +copying the file into which it was extracted back to the +archive. @end table diff -rNu smalltalk-3.0.3/doc/gst-base.info smalltalk-3.0.4/doc/gst-base.info --- smalltalk-3.0.3/doc/gst-base.info 2008-05-14 12:35:05.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-base.info 2008-08-09 15:31:03.000000000 +0200 @@ -16,1129 +16,1177 @@  Indirect: gst-base.info-1: 691 -gst-base.info-2: 300026 -gst-base.info-3: 599722 -gst-base.info-4: 779467 -gst-base.info-5: 1233018 +gst-base.info-2: 299711 +gst-base.info-3: 599467 +gst-base.info-4: 803435 +gst-base.info-5: 1267830  Tag Table: (Indirect) Node: Top691 Node: Base classes1627 -Node: AbstractNamespace11665 -Node: AbstractNamespace class-instance creation12420 -Node: AbstractNamespace-accessing12859 -Node: AbstractNamespace-basic & copying14097 -Node: AbstractNamespace-copying14651 -Node: AbstractNamespace-namespace hierarchy15107 -Node: AbstractNamespace-overrides for superspaces17904 -Node: AbstractNamespace-printing19634 -Node: AbstractNamespace-testing20219 -Node: AlternativeObjectProxy20470 -Node: AlternativeObjectProxy class-instance creation21212 -Node: AlternativeObjectProxy-accessing22157 -Node: ArithmeticError22721 -Node: ArithmeticError-description23180 -Node: Array23398 -Node: Array class-instance creation24080 -Node: Array-mutating objects24402 -Node: Array-printing24752 -Node: Array-testing25246 -Node: ArrayedCollection25399 -Node: ArrayedCollection class-instance creation26284 -Node: ArrayedCollection-basic27981 -Node: ArrayedCollection-built ins29119 -Node: ArrayedCollection-copying Collections29395 -Node: ArrayedCollection-enumerating the elements of a collection31160 -Node: ArrayedCollection-enumeration32323 -Node: ArrayedCollection-storing32864 -Node: ArrayedCollection-streams33166 -Node: Association33414 -Node: Association class-basic34099 -Node: Association-accessing34350 -Node: Association-finalization34970 -Node: Association-printing35203 -Node: Association-storing35463 -Node: Association-testing35729 -Node: Autoload36227 -Node: Autoload class-instance creation36895 -Node: Autoload-accessing37411 -Node: Bag37751 -Node: Bag class-basic38459 -Node: Bag-adding38728 -Node: Bag-enumerating the elements of a collection39221 -Node: Bag-extracting items39591 -Node: Bag-printing39883 -Node: Bag-removing40100 -Node: Bag-storing40422 -Node: Bag-testing collections40652 -Node: Behavior41150 -Node: Behavior-accessing class hierarchy42876 -Node: Behavior-accessing instances and variables43615 -Node: Behavior-accessing the methodDictionary44914 -Node: Behavior-built ins46327 -Node: Behavior-builtin48036 -Node: Behavior-compilation (alternative)48806 -Node: Behavior-compiling methods49637 -Node: Behavior-creating a class hierarchy50110 -Node: Behavior-enumerating50559 -Node: Behavior-evaluating51625 -Node: Behavior-instance creation52924 -Node: Behavior-instance variables53718 -Node: Behavior-method dictionary54283 -Node: Behavior-parsing class declarations57858 -Node: Behavior-pluggable behavior (not yet implemented)58536 -Node: Behavior-printing hierarchy59683 -Node: Behavior-still unclassified60278 -Node: Behavior-support for lightweight classes60872 -Node: Behavior-testing functionality62062 -Node: Behavior-testing the class hierarchy62345 -Node: Behavior-testing the form of the instances63415 -Node: Behavior-testing the method dictionary64352 -Node: BindingDictionary65753 -Node: BindingDictionary-accessing66610 -Node: BindingDictionary-copying68506 -Node: BindingDictionary-forward declarations69181 -Node: BindingDictionary-printing69619 -Node: BindingDictionary-testing70027 -Node: BlockClosure70256 -Node: BlockClosure class-instance creation71489 -Node: BlockClosure class-testing72371 -Node: BlockClosure-accessing72679 -Node: BlockClosure-built ins74281 -Node: BlockClosure-control structures74931 -Node: BlockClosure-exception handling75612 -Node: BlockClosure-multiple process77628 -Node: BlockClosure-overriding79085 -Node: BlockClosure-testing79362 -Node: BlockClosure-unwind protection79636 -Node: BlockContext81121 -Node: BlockContext-accessing81950 -Node: BlockContext-debugging83477 -Node: BlockContext-printing83896 -Node: Boolean84135 -Node: Boolean class-testing84896 -Node: Boolean-basic85213 -Node: Boolean-C hacks86509 -Node: Boolean-overriding86771 -Node: Boolean-storing87014 -Node: ByteArray87430 -Node: ByteArray class-instance creation88062 -Node: ByteArray-built ins88398 -Node: ByteArray-converting89737 -Node: ByteArray-more advanced accessing90196 -Node: ByteArray-storing97116 -Node: ByteStream97540 -Node: ByteStream-basic97929 -Node: CAggregate99718 -Node: CAggregate class-accessing100023 -Node: CAggregate-accessing100313 -Node: CallinProcess100551 -Node: CArray101079 -Node: CArray-accessing101332 -Node: CArrayCType101539 -Node: CArrayCType class-instance creation101886 -Node: CArrayCType-accessing102581 -Node: CArrayCType-storing102987 -Node: CBoolean103182 -Node: CBoolean-accessing103489 -Node: CByte103820 -Node: CByte class-conversion104133 -Node: CByte-accessing104426 -Node: CChar104838 -Node: CChar class-accessing105142 -Node: CChar-accessing105509 -Node: CChar-conversion105854 -Node: CCompound106255 -Node: CCompound class-instance creation106607 -Node: CCompound class-subclass creation106937 -Node: CCompound-instance creation108564 -Node: CDouble108917 -Node: CDouble class-accessing109199 -Node: CDouble-accessing109576 -Node: CFloat109906 -Node: CFloat class-accessing110194 -Node: CFloat-accessing110566 -Node: CFunctionDescriptor110891 -Node: CFunctionDescriptor class-instance creation111676 -Node: CFunctionDescriptor class-testing112038 -Node: CFunctionDescriptor-accessing112549 -Node: CFunctionDescriptor-calling113181 -Node: CFunctionDescriptor-printing115079 -Node: Character115352 -Node: Character class-built ins116655 -Node: Character class-constants117309 -Node: Character class-initializing lookup tables118117 -Node: Character class-instance creation118767 -Node: Character class-testing119139 -Node: Character-built ins119429 -Node: Character-coercion methods120218 -Node: Character-comparing120922 -Node: Character-converting121569 -Node: Character-printing121958 -Node: Character-storing122446 -Node: Character-testing122790 -Node: Character-testing functionality123678 -Node: CharacterArray123926 -Node: CharacterArray class-basic124663 -Node: CharacterArray class-multibyte encodings125150 -Node: CharacterArray-built ins125533 -Node: CharacterArray-comparing125982 -Node: CharacterArray-converting128401 -Node: CharacterArray-multibyte encodings129943 -Node: CharacterArray-string processing130518 -Node: CharacterArray-testing functionality133659 -Node: CInt133919 -Node: CInt class-accessing134190 -Node: CInt-accessing134532 -Node: Class134867 -Node: Class class-initialize135820 -Node: Class-accessing instances and variables136067 -Node: Class-filing138021 -Node: Class-instance creation138453 -Node: Class-instance creation - alternative141414 -Node: Class-pragmas143592 -Node: Class-printing144106 -Node: Class-saving and loading144503 -Node: Class-security145885 -Node: Class-testing146185 -Node: Class-testing functionality146430 -Node: ClassDescription146663 -Node: ClassDescription-compiling147447 -Node: ClassDescription-conversion148289 -Node: ClassDescription-copying148756 -Node: ClassDescription-filing149967 -Node: ClassDescription-organization of messages and classes150764 -Node: ClassDescription-parsing class declarations152193 -Node: ClassDescription-printing152702 -Node: ClassDescription-still unclassified153499 -Node: CLong154052 -Node: CLong class-accessing154336 -Node: CLong-accessing154703 -Node: CLongDouble155023 -Node: CLongDouble class-accessing155322 -Node: CLongDouble-accessing155719 -Node: CObject156069 -Node: CObject class-conversion156974 -Node: CObject class-instance creation157238 -Node: CObject class-subclassing157858 -Node: CObject-accessing158128 -Node: CObject-C data access158571 -Node: CObject-conversion159189 -Node: CObject-finalization159852 -Node: CObject-pointer-like behavior160330 -Node: Collection162604 -Node: Collection class-instance creation163591 -Node: Collection class-multibyte encodings165039 -Node: Collection-adding165379 -Node: Collection-converting165742 -Node: Collection-copying Collections167013 -Node: Collection-enumeration167565 -Node: Collection-finalization171208 -Node: Collection-printing171527 -Node: Collection-removing171884 -Node: Collection-storing172838 -Node: Collection-testing collections173111 -Node: CompiledBlock173875 -Node: CompiledBlock class-instance creation174383 -Node: CompiledBlock-accessing175152 -Node: CompiledBlock-basic176225 -Node: CompiledBlock-printing176948 -Node: CompiledBlock-saving and loading177229 -Node: CompiledCode177664 -Node: CompiledCode class-cache flushing178527 -Node: CompiledCode class-instance creation178897 -Node: CompiledCode class-tables179496 -Node: CompiledCode-accessing180731 -Node: CompiledCode-basic182251 -Node: CompiledCode-copying183016 -Node: CompiledCode-debugging183255 -Node: CompiledCode-decoding bytecodes183528 -Node: CompiledCode-literals - iteration183953 -Node: CompiledCode-security184515 -Node: CompiledCode-testing accesses184847 -Node: CompiledCode-translation186014 -Node: CompiledMethod186288 -Node: CompiledMethod class-instance creation187285 -Node: CompiledMethod class-lean images188161 -Node: CompiledMethod-accessing188496 -Node: CompiledMethod-attributes190198 -Node: CompiledMethod-basic191154 -Node: CompiledMethod-c call-outs191471 -Node: CompiledMethod-compiling192021 -Node: CompiledMethod-invoking192871 -Node: CompiledMethod-printing193918 -Node: CompiledMethod-saving and loading194276 -Node: CompiledMethod-source code194746 -Node: CompiledMethod-testing195452 -Node: ContextPart196045 -Node: ContextPart class-built ins196913 -Node: ContextPart class-exception handling197228 -Node: ContextPart-accessing198224 -Node: ContextPart-built ins201567 -Node: ContextPart-copying202267 -Node: ContextPart-debugging202627 -Node: ContextPart-enumerating203485 -Node: ContextPart-exception handling204103 -Node: ContextPart-printing204379 -Node: ContextPart-security checks204792 -Node: Continuation205360 -Node: Continuation class-instance creation206030 -Node: Continuation-invocation206704 -Node: CPtr208071 -Node: CPtr-accessing208313 -Node: CPtrCType208862 -Node: CPtrCType class-instance creation209190 -Node: CPtrCType-accessing209561 -Node: CPtrCType-storing210062 -Node: CScalar210247 -Node: CScalar class-instance creation210543 -Node: CScalar-accessing211015 -Node: CScalarCType211544 -Node: CScalarCType-accessing211842 -Node: CScalarCType-storing212184 -Node: CShort212420 -Node: CShort class-accessing212704 -Node: CShort-accessing213076 -Node: CSmalltalk213401 -Node: CSmalltalk class-accessing213696 -Node: CSmalltalk-accessing214088 -Node: CString214433 -Node: CString class-accessing215481 -Node: CString class-instance creation215775 -Node: CString-accessing216279 -Node: CStringCType216808 -Node: CStringCType-accessing217077 -Node: CStruct217292 -Node: CStruct class-subclass creation217552 -Node: CType217793 -Node: CType class-C instance creation218957 -Node: CType class-initialization219651 -Node: CType-accessing219908 -Node: CType-C instance creation220760 -Node: CType-storing221285 -Node: CUChar221496 -Node: CUChar class-getting info221771 -Node: CUChar-accessing222152 -Node: CUInt222480 -Node: CUInt class-accessing222749 -Node: CUInt-accessing223116 -Node: CULong223436 -Node: CULong class-accessing223709 -Node: CULong-accessing224081 -Node: CUnion224406 -Node: CUnion class-subclass creation224658 -Node: CUShort224895 -Node: CUShort class-accessing225172 -Node: CUShort-accessing225549 -Node: Date225879 -Node: Date class-basic227351 -Node: Date class-instance creation (ANSI)228479 -Node: Date class-instance creation (Blue Book)228969 -Node: Date-basic230289 -Node: Date-compatibility (non-ANSI)230833 -Node: Date-date computations231246 -Node: Date-printing232957 -Node: Date-storing233185 -Node: Date-testing233408 -Node: DateTime233727 -Node: DateTime class-information234389 -Node: DateTime class-instance creation234680 -Node: DateTime class-instance creation (non-ANSI)235981 -Node: DateTime-basic236722 -Node: DateTime-computations237069 -Node: DateTime-printing237761 -Node: DateTime-splitting in dates & times238027 -Node: DateTime-storing238626 -Node: DateTime-testing238891 -Node: DateTime-time zones239266 -Node: DeferredVariableBinding240396 -Node: DeferredVariableBinding class-basic240997 -Node: DeferredVariableBinding-basic241636 -Node: DeferredVariableBinding-storing242124 -Node: Delay242505 -Node: Delay class-instance creation243319 -Node: Delay class-timer process243796 -Node: Delay-accessing244620 -Node: Delay-comparing244907 -Node: Delay-delaying245188 -Node: Delay-initialization245504 -Node: Delay-instance creation245777 -Node: DelayedAdaptor246054 -Node: DelayedAdaptor-accessing246590 -Node: Dictionary246969 -Node: Dictionary class-instance creation248177 -Node: Dictionary-accessing248621 -Node: Dictionary-awful ST-80 compatibility hacks250599 -Node: Dictionary-dictionary enumerating251062 -Node: Dictionary-dictionary removing252150 -Node: Dictionary-dictionary testing253019 -Node: Dictionary-polymorphism hacks253693 -Node: Dictionary-printing253978 -Node: Dictionary-rehashing254342 -Node: Dictionary-storing254559 -Node: Dictionary-testing254821 -Node: DirectedMessage255097 -Node: DirectedMessage class-creating instances255673 -Node: DirectedMessage-accessing256399 -Node: DirectedMessage-basic256707 -Node: DirectedMessage-multiple process257131 -Node: DirectedMessage-saving and loading257729 -Node: Directory258167 -Node: Directory class-file name management258907 -Node: Directory class-file operations259446 -Node: Directory class-reading system defaults260131 -Node: Directory-accessing261346 -Node: Directory-enumerating262447 -Node: DLD263422 -Node: DLD class-C call-outs264102 -Node: DLD class-dynamic linking264354 -Node: DumperProxy265700 -Node: DumperProxy class-accessing266236 -Node: DumperProxy class-instance creation266701 -Node: DumperProxy-saving and restoring267206 -Node: Duration267621 -Node: Duration class-instance creation268032 -Node: Duration class-instance creation (non ANSI)268532 -Node: Duration-arithmetics269011 -Node: Error270199 -Node: Error-exception description270524 -Node: Exception270865 -Node: Exception class-comparison272003 -Node: Exception class-creating ExceptionCollections272467 -Node: Exception class-initialization272891 -Node: Exception class-instance creation273273 -Node: Exception class-interoperability with TrappableEvents273857 -Node: Exception-comparison274331 -Node: Exception-exception description274779 -Node: Exception-exception signaling275222 -Node: ExceptionSet275615 -Node: ExceptionSet class-instance creation276197 -Node: ExceptionSet-enumerating276462 -Node: False277026 -Node: False-basic277425 -Node: False-C hacks278419 -Node: False-printing278599 -Node: File278800 -Node: File class-C functions279663 -Node: File class-file name management279944 -Node: File class-file operations281483 -Node: File class-instance creation282414 -Node: File class-reading system defaults282916 -Node: File class-testing283270 -Node: File-accessing283922 -Node: File-file name management285648 -Node: File-file operations286502 -Node: File-printing288332 -Node: File-testing288636 -Node: FileDescriptor289696 -Node: FileDescriptor class-initialization290910 -Node: FileDescriptor class-instance creation291248 -Node: FileDescriptor class-still unclassified296344 -Node: FileDescriptor-accessing297414 -Node: FileDescriptor-basic298575 -Node: FileDescriptor-built ins300026 -Node: FileDescriptor-class type methods301542 -Node: FileDescriptor-initialize-release301972 -Node: FileDescriptor-low-level access302564 -Node: FileDescriptor-overriding inherited methods303792 -Node: FileDescriptor-printing304638 -Node: FileDescriptor-testing304938 -Node: FileSegment305162 -Node: FileSegment class-basic305781 -Node: FileSegment class-installing306138 -Node: FileSegment-basic306524 -Node: FileSegment-equality307523 -Node: FileStream307806 -Node: FileStream class-file-in308522 -Node: FileStream class-standard streams312059 -Node: FileStream-basic312799 -Node: FileStream-buffering313748 -Node: FileStream-compiling314961 -Node: FileStream-overriding inherited methods315336 -Node: FileStream-testing316117 -Node: Float316339 -Node: Float class-byte-order dependancies317253 -Node: Float class-characterization317533 -Node: Float-arithmetic318555 -Node: Float-basic318965 -Node: Float-built ins319160 -Node: Float-coercing320101 -Node: Float-coercion320605 -Node: Float-comparing320868 -Node: Float-printing321518 -Node: Float-storing321743 -Node: Float-testing322153 -Node: Float-testing functionality322922 -Node: Float-transcendental operations323160 -Node: FloatD323645 -Node: FloatD class-byte-order dependencies324150 -Node: FloatD class-characterization324545 -Node: FloatD class-converting325819 -Node: FloatD-built ins326075 -Node: FloatD-coercing327312 -Node: FloatE327715 -Node: FloatE class-byte-order dependancies328270 -Node: FloatE class-byte-order dependencies328562 -Node: FloatE class-characterization328928 -Node: FloatE class-converting330490 -Node: FloatE-built ins330746 -Node: FloatE-coercing331983 -Node: FloatQ332386 -Node: FloatQ class-byte-order dependancies332932 -Node: FloatQ class-characterization333217 -Node: FloatQ class-converting334779 -Node: FloatQ-built ins335035 -Node: FloatQ-coercing336272 -Node: FloatQ-misc math336700 -Node: Fraction336897 -Node: Fraction class-converting337688 -Node: Fraction class-instance creation337932 -Node: Fraction-accessing338317 -Node: Fraction-arithmetic338607 -Node: Fraction-coercing339331 -Node: Fraction-coercion339969 -Node: Fraction-comparing340250 -Node: Fraction-converting340752 -Node: Fraction-optimized cases341253 -Node: Fraction-printing341687 -Node: Fraction-testing342019 -Node: Generator342226 -Node: Generator class-instance creation344532 -Node: Generator-stream protocol345279 -Node: Getopt346342 -Node: Getopt class-instance creation346708 -Node: Halt349347 -Node: Halt-description349641 -Node: HashedCollection349892 -Node: HashedCollection class-instance creation350753 -Node: HashedCollection-accessing351225 -Node: HashedCollection-builtins351805 -Node: HashedCollection-copying352582 -Node: HashedCollection-enumerating the elements of a collection353060 -Node: HashedCollection-rehashing353436 -Node: HashedCollection-removing353722 -Node: HashedCollection-saving and loading354131 -Node: HashedCollection-storing354645 -Node: HashedCollection-testing collections354972 -Node: HomedAssociation355919 -Node: HomedAssociation class-basic356489 -Node: HomedAssociation-accessing356791 -Node: HomedAssociation-finalization357157 -Node: HomedAssociation-storing357777 -Node: IdentityDictionary358046 -Node: IdentitySet358439 -Node: IdentitySet-testing358838 -Node: Integer359099 -Node: Integer class-converting359928 -Node: Integer-accessing360289 -Node: Integer-basic360528 -Node: Integer-bit operators360738 -Node: Integer-converting362106 -Node: Integer-extension362832 -Node: Integer-iterators363145 -Node: Integer-math methods363511 -Node: Integer-printing364412 -Node: Integer-storing365658 -Node: Integer-testing functionality365985 -Node: Interval366259 -Node: Interval class-instance creation366855 -Node: Interval-basic367457 -Node: Interval-printing368143 -Node: Interval-storing368476 -Node: Interval-testing368723 -Node: LargeArray368994 -Node: LargeArray-overridden369397 -Node: LargeArrayedCollection369589 -Node: LargeArrayedCollection class-instance creation370129 -Node: LargeArrayedCollection-accessing370488 -Node: LargeArrayedCollection-basic370992 -Node: LargeByteArray371393 -Node: LargeByteArray-overridden371821 -Node: LargeInteger372262 -Node: LargeInteger-accessing373097 -Node: LargeInteger-arithmetic373336 -Node: LargeInteger-bit operations374463 -Node: LargeInteger-built-ins375138 -Node: LargeInteger-coercion376217 -Node: LargeInteger-disabled376763 -Node: LargeInteger-primitive operations377138 -Node: LargeInteger-testing377618 -Node: LargeNegativeInteger378262 -Node: LargeNegativeInteger-converting378964 -Node: LargeNegativeInteger-numeric testing379352 -Node: LargeNegativeInteger-reverting to LargePositiveInteger379887 -Node: LargePositiveInteger380459 -Node: LargePositiveInteger-arithmetic381336 -Node: LargePositiveInteger-converting381812 -Node: LargePositiveInteger-helper byte-level methods382366 -Node: LargePositiveInteger-numeric testing384103 -Node: LargePositiveInteger-primitive operations384639 -Node: LargeWordArray385333 -Node: LargeWordArray-overridden385763 -Node: LargeZeroInteger386062 -Node: LargeZeroInteger-accessing386890 -Node: LargeZeroInteger-arithmetic387155 -Node: LargeZeroInteger-numeric testing388085 -Node: LargeZeroInteger-printing388422 -Node: Link388720 -Node: Link class-instance creation389265 -Node: Link-basic389497 -Node: Link-iteration389750 -Node: LinkedList390211 -Node: LinkedList-accessing390819 -Node: LinkedList-adding391135 -Node: LinkedList-enumerating391868 -Node: LinkedList-testing392348 -Node: LookupKey392704 -Node: LookupKey class-basic393258 -Node: LookupKey-accessing393500 -Node: LookupKey-printing393765 -Node: LookupKey-storing394012 -Node: LookupKey-testing394268 -Node: LookupTable394702 -Node: LookupTable class-instance creation395577 -Node: LookupTable-accessing395839 -Node: LookupTable-enumerating396648 -Node: LookupTable-hashing397173 -Node: LookupTable-rehashing397414 -Node: LookupTable-removing397639 -Node: LookupTable-storing398141 -Node: Magnitude398380 -Node: Magnitude-basic398836 -Node: Magnitude-misc methods399368 -Node: MappedCollection399784 -Node: MappedCollection class-instance creation401159 -Node: MappedCollection-basic401612 -Node: Memory403367 -Node: Memory class-accessing403927 -Node: Message408059 -Node: Message class-creating instances408735 -Node: Message-accessing409128 -Node: Message-basic409570 -Node: Message-printing409869 -Node: MessageNotUnderstood410201 -Node: MessageNotUnderstood-accessing410695 -Node: MessageNotUnderstood-description411034 -Node: Metaclass411315 -Node: Metaclass class-instance creation412314 -Node: Metaclass-accessing412599 -Node: Metaclass-basic413045 -Node: Metaclass-delegation414389 -Node: Metaclass-filing415918 -Node: Metaclass-printing416209 -Node: Metaclass-testing functionality416764 -Node: MethodContext417025 -Node: MethodContext-accessing417567 -Node: MethodContext-debugging418877 -Node: MethodContext-printing419659 -Node: MethodDictionary419905 -Node: MethodDictionary-adding420436 -Node: MethodDictionary-rehashing420685 -Node: MethodDictionary-removing420939 -Node: MethodInfo421351 -Node: MethodInfo-accessing421837 -Node: MethodInfo-equality422782 -Node: Namespace423075 -Node: Namespace class-accessing423683 -Node: Namespace class-disabling instance creation424086 -Node: Namespace class-initialization424482 -Node: Namespace-accessing424919 -Node: Namespace-namespace hierarchy425208 -Node: Namespace-overrides for superspaces425706 -Node: Namespace-printing427503 -Node: NetClients.URIResolver428007 -Node: NetClients.URIResolver class-api428462 -Node: NetClients.URIResolver class-instance creation429612 -Node: NetClients.URL429989 -Node: NetClients.URL class-encoding URLs430710 -Node: NetClients.URL class-instance creation431215 -Node: NetClients.URL-accessing432040 -Node: NetClients.URL-comparing434765 -Node: NetClients.URL-copying435291 -Node: NetClients.URL-initialize-release435828 -Node: NetClients.URL-printing436127 -Node: NetClients.URL-testing436421 -Node: NetClients.URL-utilities437197 -Node: Notification437507 -Node: Notification-exception description437960 -Node: NullProxy438422 -Node: NullProxy class-instance creation439034 -Node: NullProxy-accessing439305 -Node: NullValueHolder439557 -Node: NullValueHolder class-creating instances440146 -Node: NullValueHolder-accessing440493 -Node: Number440841 -Node: Number class-converting441769 -Node: Number class-testing442229 -Node: Number-arithmetic442497 -Node: Number-coercion443829 -Node: Number-comparing444102 -Node: Number-converting444653 -Node: Number-copying446008 -Node: Number-error raising446323 -Node: Number-misc math446694 -Node: Number-point creation448859 -Node: Number-retrying449156 -Node: Number-shortcuts and iterators450961 -Node: Number-testing452210 -Node: Number-truncation and round off453646 -Node: Object454461 -Node: Object class-initialization455417 -Node: Object-built ins456016 -Node: Object-change and update464735 -Node: Object-class type methods465942 -Node: Object-conversion466761 -Node: Object-copying467008 -Node: Object-debugging467672 -Node: Object-dependents access468001 -Node: Object-error raising468705 -Node: Object-finalization469392 -Node: Object-printing470385 -Node: Object-relational operators472130 -Node: Object-saving and loading472494 -Node: Object-storing473497 -Node: Object-syntax shortcuts474195 -Node: Object-testing functionality474522 -Node: Object-VM callbacks476090 -Node: ObjectDumper476575 -Node: ObjectDumper class-establishing proxy classes477780 -Node: ObjectDumper class-instance creation478629 -Node: ObjectDumper class-shortcuts479042 -Node: ObjectDumper class-testing479436 -Node: ObjectDumper-accessing479880 -Node: ObjectDumper-loading/dumping objects480388 -Node: ObjectDumper-stream interface480828 -Node: ObjectMemory481210 -Node: ObjectMemory class-accessing482295 -Node: ObjectMemory class-builtins482562 -Node: ObjectMemory class-initialization485909 -Node: ObjectMemory class-saving the image486239 -Node: ObjectMemory-accessing486567 -Node: ObjectMemory-builtins491521 -Node: ObjectMemory-derived information491806 -Node: OrderedCollection492793 -Node: OrderedCollection class-instance creation493515 -Node: OrderedCollection-accessing493873 -Node: OrderedCollection-adding494340 -Node: OrderedCollection-removing496404 -Node: Package497059 -Node: Package class-instance creation497533 -Node: Package-accessing497789 -Node: PackageLoader500849 -Node: PackageLoader class-accessing501413 -Node: PackageLoader class-loading504034 -Node: PackageLoader class-testing504434 -Node: Permission504725 -Node: Permission class-testing505194 -Node: Permission-accessing505944 -Node: Permission-testing506522 -Node: PluggableAdaptor506772 -Node: PluggableAdaptor class-creating instances507409 -Node: PluggableAdaptor-accessing508505 -Node: PluggableProxy508806 -Node: PluggableProxy class-accessing509444 -Node: PluggableProxy-saving and restoring509894 -Node: Point510329 -Node: Point class-instance creation511068 -Node: Point-accessing511381 -Node: Point-arithmetic511815 -Node: Point-comparing512534 -Node: Point-converting513347 -Node: Point-point functions513866 -Node: Point-printing514814 -Node: Point-storing515048 -Node: Point-truncation and round off515296 -Node: PositionableStream515708 -Node: PositionableStream class-instance creation516672 -Node: PositionableStream-accessing-reading517197 -Node: PositionableStream-class type methods518572 -Node: PositionableStream-compiling519107 -Node: PositionableStream-positioning519601 -Node: PositionableStream-testing520832 -Node: PositionableStream-truncating521314 -Node: Process521614 -Node: Process-accessing522194 -Node: Process-basic523319 -Node: Process-builtins525031 -Node: Process-printing526151 -Node: ProcessorScheduler526365 -Node: ProcessorScheduler class-instance creation527044 -Node: ProcessorScheduler-basic527358 -Node: ProcessorScheduler-built ins528832 -Node: ProcessorScheduler-idle tasks529534 -Node: ProcessorScheduler-printing530038 -Node: ProcessorScheduler-priorities530357 -Node: ProcessorScheduler-storing532023 -Node: ProcessorScheduler-timed invocation532364 -Node: Promise532935 -Node: Promise class-creating instances533562 -Node: Promise-accessing533973 -Node: Promise-initializing534428 -Node: Promise-printing534672 -Node: Promise-still unclassified534914 -Node: Random535170 -Node: Random class-instance creation535631 -Node: Random class-shortcuts536013 -Node: Random-basic536403 -Node: Random-testing536833 -Node: ReadStream537159 -Node: ReadStream class-instance creation537566 -Node: ReadWriteStream537986 -Node: ReadWriteStream class-instance creation538484 -Node: ReadWriteStream-positioning539122 -Node: Rectangle539441 -Node: Rectangle class-instance creation540242 -Node: Rectangle-accessing540800 -Node: Rectangle-copying543214 -Node: Rectangle-printing543448 -Node: Rectangle-rectangle functions543790 -Node: Rectangle-testing545693 -Node: Rectangle-transforming546523 -Node: Rectangle-truncation and round off547163 -Node: RecursionLock547468 -Node: RecursionLock class-instance creation547872 -Node: RecursionLock-accessing548122 -Node: RecursionLock-mutual exclusion548735 -Node: RecursionLock-printing549110 -Node: Regex549376 -Node: Regex class-instance creation550391 -Node: Regex-basic550650 -Node: Regex-conversion551072 -Node: Regex-printing551378 -Node: RegexResults552038 -Node: RegexResults-accessing552656 -Node: RegexResults-testing554169 -Node: RootNamespace555201 -Node: RootNamespace class-instance creation555761 -Node: RootNamespace-namespace hierarchy556110 -Node: RootNamespace-overrides for superspaces556557 -Node: RootNamespace-printing557188 -Node: RunArray557712 -Node: RunArray class-instance creation558685 -Node: RunArray-accessing558973 -Node: RunArray-adding559323 -Node: RunArray-basic560413 -Node: RunArray-copying560734 -Node: RunArray-enumerating561106 -Node: RunArray-removing561582 -Node: RunArray-searching562063 -Node: RunArray-testing562493 -Node: ScaledDecimal562752 -Node: ScaledDecimal class-instance creation563530 -Node: ScaledDecimal-arithmetic563945 -Node: ScaledDecimal-coercion564680 -Node: ScaledDecimal-comparing565711 -Node: ScaledDecimal-constants566363 -Node: ScaledDecimal-printing566681 -Node: ScaledDecimal-storing567157 -Node: SecurityPolicy567598 -Node: SecurityPolicy-modifying568186 -Node: SecurityPolicy-querying568538 -Node: Semaphore568797 -Node: Semaphore class-instance creation569473 -Node: Semaphore-accessing569862 -Node: Semaphore-builtins570362 -Node: Semaphore-mutual exclusion571723 -Node: Semaphore-printing572073 -Node: SequenceableCollection572319 -Node: SequenceableCollection class-instance creation573133 -Node: SequenceableCollection-basic573627 -Node: SequenceableCollection-concatenating578275 -Node: SequenceableCollection-copying SequenceableCollections580063 -Node: SequenceableCollection-enumerating582828 -Node: SequenceableCollection-replacing items586390 -Node: SequenceableCollection-sorting587353 -Node: SequenceableCollection-testing587927 -Node: Set588478 -Node: Set-arithmetic588910 -Node: Set-awful ST-80 compatibility hacks589255 -Node: Set-comparing589632 -Node: SharedQueue590043 -Node: SharedQueue class-instance creation590577 -Node: SharedQueue-accessing590962 -Node: Signal591480 -Node: Signal-accessing592148 -Node: Signal-copying593003 -Node: Signal-exception handling593276 -Node: SingletonProxy595907 -Node: SingletonProxy class-accessing596523 -Node: SingletonProxy class-instance creation596904 -Node: SingletonProxy-saving and restoring597361 -Node: SmallInteger597804 -Node: SmallInteger class-getting limits598541 -Node: SmallInteger class-testing599043 -Node: SmallInteger-bit arithmetic599355 -Node: SmallInteger-built ins599722 -Node: SmallInteger-builtins602152 -Node: SmallInteger-coercion602911 -Node: SmallInteger-coercion methods603225 -Node: SmallInteger-testing functionality603597 -Node: SortedCollection603846 -Node: SortedCollection class-hacking604990 -Node: SortedCollection class-instance creation605275 -Node: SortedCollection-basic605804 -Node: SortedCollection-copying606365 -Node: SortedCollection-disabled606688 -Node: SortedCollection-enumerating607558 -Node: SortedCollection-saving and loading607904 -Node: SortedCollection-searching608266 -Node: Stream608869 -Node: Stream-accessing-reading609908 -Node: Stream-accessing-writing611780 -Node: Stream-basic612493 -Node: Stream-built ins612684 -Node: Stream-character writing613614 -Node: Stream-concatenating614485 -Node: Stream-enumerating615158 -Node: Stream-filing out615536 -Node: Stream-filtering615896 -Node: Stream-polymorphism618067 -Node: Stream-positioning618473 -Node: Stream-printing619655 -Node: Stream-storing620410 -Node: Stream-testing620778 -Node: String621292 -Node: String class-instance creation622364 -Node: String class-multibyte encodings622848 -Node: String-accessing623176 -Node: String-basic623573 -Node: String-built ins623978 -Node: String-converting625841 -Node: String-printing626320 -Node: String-regex627168 -Node: String-testing functionality633721 -Node: Symbol633923 -Node: Symbol class-built ins634761 -Node: Symbol class-instance creation634992 -Node: Symbol class-symbol table636147 -Node: Symbol-basic637572 -Node: Symbol-built ins638341 -Node: Symbol-converting638666 -Node: Symbol-misc639022 -Node: Symbol-storing639202 -Node: Symbol-testing640108 -Node: Symbol-testing functionality640392 -Node: SymLink640629 -Node: SymLink class-instance creation641190 -Node: SymLink-accessing641526 -Node: SymLink-iteration641877 -Node: SymLink-printing642108 -Node: SystemDictionary642324 -Node: SystemDictionary class-initialization643281 -Node: SystemDictionary-basic643556 -Node: SystemDictionary-builtins643899 -Node: SystemDictionary-c call-outs645245 -Node: SystemDictionary-command-line645654 -Node: SystemDictionary-miscellaneous648345 -Node: SystemDictionary-printing648811 -Node: SystemDictionary-special accessing649246 -Node: SystemDictionary-testing649859 -Node: SystemExceptions.AlreadyDefined650209 -Node: SystemExceptions.AlreadyDefined-accessing650735 -Node: SystemExceptions.ArgumentOutOfRange651003 -Node: SystemExceptions.ArgumentOutOfRange class-signaling651603 -Node: SystemExceptions.ArgumentOutOfRange-accessing652025 -Node: SystemExceptions.BadReturn652619 -Node: SystemExceptions.BadReturn-accessing653109 -Node: SystemExceptions.CInterfaceError653369 -Node: SystemExceptions.CInterfaceError-accessing653880 -Node: SystemExceptions.EmptyCollection654164 -Node: SystemExceptions.EmptyCollection-accessing654661 -Node: SystemExceptions.EndOfStream654945 -Node: SystemExceptions.EndOfStream class-signaling655446 -Node: SystemExceptions.EndOfStream-accessing655802 -Node: SystemExceptions.FileError656238 -Node: SystemExceptions.FileError-accessing656727 -Node: SystemExceptions.IndexOutOfRange656987 -Node: SystemExceptions.IndexOutOfRange class-signaling657583 -Node: SystemExceptions.IndexOutOfRange-accessing657965 -Node: SystemExceptions.InvalidArgument658495 -Node: SystemExceptions.InvalidArgument-accessing659002 -Node: SystemExceptions.InvalidProcessState659275 -Node: SystemExceptions.InvalidProcessState-accessing659816 -Node: SystemExceptions.InvalidSize660116 -Node: SystemExceptions.InvalidSize-accessing660593 -Node: SystemExceptions.InvalidValue660861 -Node: SystemExceptions.InvalidValue class-signaling661398 -Node: SystemExceptions.InvalidValue-accessing661863 -Node: SystemExceptions.MustBeBoolean662370 -Node: SystemExceptions.MustBeBoolean class-signaling662861 -Node: SystemExceptions.MutationError663191 -Node: SystemExceptions.MutationError class-instance creation663730 -Node: SystemExceptions.MutationError-accessing664123 -Node: SystemExceptions.NoRunnableProcess664462 -Node: SystemExceptions.NoRunnableProcess-accessing664968 -Node: SystemExceptions.NotEnoughElements665260 -Node: SystemExceptions.NotEnoughElements class-signaling665826 -Node: SystemExceptions.NotEnoughElements-accessing666211 -Node: SystemExceptions.NotFound666763 -Node: SystemExceptions.NotFound class-accessing667289 -Node: SystemExceptions.NotFound-accessing667680 -Node: SystemExceptions.NotImplemented667986 -Node: SystemExceptions.NotImplemented-accessing668454 -Node: SystemExceptions.NotIndexable668734 -Node: SystemExceptions.NotIndexable-accessing669207 -Node: SystemExceptions.NotYetImplemented669479 -Node: SystemExceptions.NotYetImplemented-accessing670005 -Node: SystemExceptions.PackageNotAvailable670297 -Node: SystemExceptions.PackageNotAvailable class-still unclassified670821 -Node: SystemExceptions.PackageNotAvailable-description671259 -Node: SystemExceptions.PrimitiveFailed671696 -Node: SystemExceptions.PrimitiveFailed-accessing672193 -Node: SystemExceptions.ProcessBeingTerminated672477 -Node: SystemExceptions.ProcessBeingTerminated-accessing672971 -Node: SystemExceptions.ProcessTerminated673435 -Node: SystemExceptions.ProcessTerminated-accessing673970 -Node: SystemExceptions.ReadOnlyObject674262 -Node: SystemExceptions.ReadOnlyObject-accessing674748 -Node: SystemExceptions.SecurityError675028 -Node: SystemExceptions.SecurityError class-accessing675602 -Node: SystemExceptions.SecurityError-accessing675998 -Node: SystemExceptions.ShouldNotImplement676484 -Node: SystemExceptions.ShouldNotImplement-accessing677023 -Node: SystemExceptions.SubclassResponsibility677319 -Node: SystemExceptions.SubclassResponsibility-accessing677899 -Node: SystemExceptions.UserInterrupt678211 -Node: SystemExceptions.UserInterrupt-accessing678683 -Node: SystemExceptions.VerificationError678959 -Node: SystemExceptions.VerificationError-accessing679444 -Node: SystemExceptions.VMError679736 -Node: SystemExceptions.VMError-accessing680176 -Node: SystemExceptions.WrongArgumentCount680428 -Node: SystemExceptions.WrongArgumentCount-accessing680994 -Node: SystemExceptions.WrongClass681290 -Node: SystemExceptions.WrongClass class-signaling681918 -Node: SystemExceptions.WrongClass-accessing682590 -Node: SystemExceptions.WrongMessageSent683259 -Node: SystemExceptions.WrongMessageSent class-signaling683916 -Node: SystemExceptions.WrongMessageSent-accessing684349 -Node: TextCollector684954 -Node: TextCollector class-accessing685664 -Node: TextCollector-accessing686177 -Node: TextCollector-printing687012 -Node: TextCollector-set up687360 -Node: TextCollector-storing687939 -Node: Time688283 -Node: Time class-basic (UTC)689067 -Node: Time class-builtins689621 -Node: Time class-clocks690662 -Node: Time class-initialization691233 -Node: Time class-instance creation691593 -Node: Time-accessing (ANSI for DateAndTimes)692486 -Node: Time-accessing (non ANSI & for Durations)693018 -Node: Time-arithmetic693484 -Node: Time-comparing694075 -Node: True694376 -Node: True-basic694756 -Node: True-C hacks695722 -Node: True-printing695898 -Node: UndefinedObject696096 -Node: UndefinedObject-basic696832 -Node: UndefinedObject-class creation - alternative697131 -Node: UndefinedObject-class polymorphism699420 -Node: UndefinedObject-CObject interoperability702512 -Node: UndefinedObject-dependents access702940 -Node: UndefinedObject-printing703329 -Node: UndefinedObject-storing703823 -Node: UndefinedObject-testing704302 -Node: UnicodeCharacter705154 -Node: UnicodeCharacter class-built ins705746 -Node: UnicodeString706281 -Node: UnicodeString class-converting706860 -Node: UnicodeString class-multibyte encodings707238 -Node: UnicodeString-built-ins707737 -Node: UnicodeString-converting708010 -Node: UnicodeString-multibyte encodings708750 -Node: ValueAdaptor709258 -Node: ValueAdaptor class-creating instances709752 -Node: ValueAdaptor-accessing710056 -Node: ValueAdaptor-printing710479 -Node: ValueHolder710708 -Node: ValueHolder class-creating instances711335 -Node: ValueHolder-accessing711734 -Node: ValueHolder-initializing712043 -Node: VariableBinding712282 -Node: VariableBinding-printing712926 -Node: VariableBinding-saving and loading713257 -Node: VariableBinding-storing713730 -Node: VariableBinding-testing714221 -Node: VersionableObjectProxy714495 -Node: VersionableObjectProxy class-saving and restoring715403 -Node: VersionableObjectProxy-saving and restoring716443 -Node: VFS.ArchiveFileHandler716793 -Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol717740 -Node: VFS.ArchiveFileHandler-directory operations718942 -Node: VFS.ArchiveFileHandler-querying719605 -Node: VFS.ArchiveFileHandler-TmpFileArchiveMemberHandler protocol720108 -Node: VFS.ArchiveMemberHandler720745 -Node: VFS.ArchiveMemberHandler-accessing721467 -Node: VFS.ArchiveMemberHandler-directory operations722880 -Node: VFS.ArchiveMemberHandler-file operations723517 -Node: VFS.ArchiveMemberHandler-initializing724199 -Node: VFS.ArchiveMemberHandler-testing724903 -Node: VFS.CStatStruct725929 -Node: VFS.CStatStruct class-accessing726323 -Node: VFS.CStatStruct-accessing726583 -Node: VFS.CStatStruct-debugging727008 -Node: VFS.DecodedFileHandler727234 -Node: VFS.DecodedFileHandler class-registering727625 -Node: VFS.DecodedFileHandler-files728763 -Node: VFS.FileHandlerWrapper729573 -Node: VFS.FileHandlerWrapper class-instance creation730168 -Node: VFS.FileHandlerWrapper-accessing730584 -Node: VFS.FileHandlerWrapper-delegation730994 -Node: VFS.RealFileHandler732562 -Node: VFS.RealFileHandler class-C call-outs733326 -Node: VFS.RealFileHandler class-initialization733610 -Node: VFS.RealFileHandler-accessing733953 -Node: VFS.RealFileHandler-directory operations735609 -Node: VFS.RealFileHandler-file operations736121 -Node: VFS.RealFileHandler-testing736890 -Node: VFS.TmpFileArchiveMemberHandler737526 -Node: VFS.TmpFileArchiveMemberHandler-directory operations737973 -Node: VFS.TmpFileArchiveMemberHandler-finalization738522 -Node: VFS.VFSHandler738915 -Node: VFS.VFSHandler class-initializing739710 -Node: VFS.VFSHandler class-instance creation740793 -Node: VFS.VFSHandler-accessing741152 -Node: VFS.VFSHandler-directory operations742537 -Node: VFS.VFSHandler-file operations743140 -Node: VFS.VFSHandler-releasing744285 -Node: VFS.VFSHandler-testing744607 -Node: Warning745523 -Node: Warning-exception description745854 -Node: WeakArray746074 -Node: WeakArray class-instance creation746579 -Node: WeakArray-accessing746919 -Node: WeakArray-conversion748583 -Node: WeakArray-loading749234 -Node: WeakIdentitySet749515 -Node: WeakIdentitySet-accessing750032 -Node: WeakKeyDictionary750322 -Node: WeakKeyDictionary class-hacks750926 -Node: WeakKeyDictionary-accessing751258 -Node: WeakKeyIdentityDictionary751593 -Node: WeakSet752133 -Node: WeakSet-accessing752665 -Node: WeakSet-copying753046 -Node: WeakSet-loading753440 -Node: WeakValueIdentityDictionary753708 -Node: WeakValueLookupTable754266 -Node: WeakValueLookupTable class-hacks754932 -Node: WeakValueLookupTable-hacks755246 -Node: WeakValueLookupTable-rehashing755860 -Node: WordArray756099 -Node: WriteStream756417 -Node: WriteStream class-instance creation756917 -Node: WriteStream-accessing-writing757611 -Node: WriteStream-positioning758453 -Node: ZeroDivide758679 -Node: ZeroDivide class-instance creation759184 -Node: ZeroDivide-accessing759580 -Node: ZeroDivide-description759849 -Node: Class index760080 -Node: Method index779467 -Node: Cross-reference1233018 +Node: AbstractNamespace11839 +Node: AbstractNamespace class-instance creation12588 +Node: AbstractNamespace-accessing13027 +Node: AbstractNamespace-compiling14259 +Node: AbstractNamespace-copying14870 +Node: AbstractNamespace-namespace hierarchy15320 +Node: AbstractNamespace-overrides for superspaces17716 +Node: AbstractNamespace-printing18742 +Node: AbstractNamespace-testing19327 +Node: AlternativeObjectProxy19578 +Node: AlternativeObjectProxy class-instance creation20320 +Node: AlternativeObjectProxy-accessing21265 +Node: ArithmeticError21829 +Node: ArithmeticError-description22288 +Node: Array22506 +Node: Array class-instance creation23220 +Node: Array-built ins23535 +Node: Array-mutating objects23955 +Node: Array-printing24291 +Node: Array-testing24785 +Node: ArrayedCollection24938 +Node: ArrayedCollection class-instance creation25777 +Node: ArrayedCollection-basic27474 +Node: ArrayedCollection-built ins28612 +Node: ArrayedCollection-copying Collections28888 +Node: ArrayedCollection-enumerating the elements of a collection30653 +Node: ArrayedCollection-storing31812 +Node: ArrayedCollection-streams32143 +Node: Association32391 +Node: Association class-basic33076 +Node: Association-accessing33327 +Node: Association-finalization33947 +Node: Association-printing34180 +Node: Association-storing34440 +Node: Association-testing34706 +Node: Autoload35204 +Node: Autoload class-instance creation35872 +Node: Autoload-accessing36388 +Node: Bag36728 +Node: Bag class-basic37436 +Node: Bag-adding37705 +Node: Bag-enumerating the elements of a collection38198 +Node: Bag-extracting items38568 +Node: Bag-printing38860 +Node: Bag-removing39077 +Node: Bag-storing39399 +Node: Bag-testing collections39629 +Node: Behavior40127 +Node: Behavior-accessing class hierarchy41853 +Node: Behavior-accessing instances and variables42592 +Node: Behavior-accessing the methodDictionary44061 +Node: Behavior-built ins45474 +Node: Behavior-builtin47183 +Node: Behavior-compilation (alternative)47953 +Node: Behavior-compiling methods48784 +Node: Behavior-creating a class hierarchy49392 +Node: Behavior-enumerating49841 +Node: Behavior-evaluating50907 +Node: Behavior-instance creation52206 +Node: Behavior-instance variables53000 +Node: Behavior-method dictionary53565 +Node: Behavior-parsing class declarations57140 +Node: Behavior-pluggable behavior (not yet implemented)57818 +Node: Behavior-printing hierarchy58965 +Node: Behavior-still unclassified59560 +Node: Behavior-support for lightweight classes60293 +Node: Behavior-testing functionality61483 +Node: Behavior-testing the class hierarchy61766 +Node: Behavior-testing the form of the instances62836 +Node: Behavior-testing the method dictionary63773 +Node: BindingDictionary65174 +Node: BindingDictionary-accessing66081 +Node: BindingDictionary-basic & copying67985 +Node: BindingDictionary-copying68541 +Node: BindingDictionary-forward declarations69222 +Node: BindingDictionary-printing69660 +Node: BindingDictionary-testing70068 +Node: BlockClosure70297 +Node: BlockClosure class-instance creation71530 +Node: BlockClosure class-testing72412 +Node: BlockClosure-accessing72720 +Node: BlockClosure-built ins74322 +Node: BlockClosure-control structures75345 +Node: BlockClosure-exception handling76026 +Node: BlockClosure-multiple process78042 +Node: BlockClosure-overriding79410 +Node: BlockClosure-testing79687 +Node: BlockClosure-unwind protection79961 +Node: BlockContext81446 +Node: BlockContext-accessing82275 +Node: BlockContext-debugging83802 +Node: BlockContext-printing84221 +Node: Boolean84460 +Node: Boolean class-testing85221 +Node: Boolean-basic85538 +Node: Boolean-C hacks86834 +Node: Boolean-overriding87096 +Node: Boolean-storing87339 +Node: ByteArray87755 +Node: ByteArray class-instance creation88419 +Node: ByteArray-basic88751 +Node: ByteArray-built ins89017 +Node: ByteArray-converting90062 +Node: ByteArray-more advanced accessing90521 +Node: ByteArray-storing97441 +Node: CAggregate97865 +Node: CAggregate class-accessing98169 +Node: CAggregate-accessing98459 +Node: CallinProcess98697 +Node: CArray99225 +Node: CArray-accessing99478 +Node: CArrayCType99685 +Node: CArrayCType class-instance creation100032 +Node: CArrayCType-accessing100727 +Node: CArrayCType-storing101133 +Node: CBoolean101328 +Node: CBoolean-accessing101635 +Node: CByte101966 +Node: CByte class-conversion102283 +Node: CByte-accessing102576 +Node: CCallable102988 +Node: CCallable class-instance creation103667 +Node: CCallable-accessing104138 +Node: CCallable-calling104432 +Node: CCallable-restoring106271 +Node: CCallbackDescriptor106482 +Node: CCallbackDescriptor class-instance creation107015 +Node: CCallbackDescriptor-accessing107445 +Node: CCallbackDescriptor-restoring107891 +Node: CChar108171 +Node: CChar class-accessing108489 +Node: CChar-accessing108856 +Node: CChar-conversion109201 +Node: CCompound109602 +Node: CCompound class-instance creation109954 +Node: CCompound class-subclass creation110379 +Node: CCompound-instance creation112006 +Node: CDouble112359 +Node: CDouble class-accessing112641 +Node: CDouble-accessing113018 +Node: CFloat113348 +Node: CFloat class-accessing113636 +Node: CFloat-accessing114008 +Node: CFunctionDescriptor114333 +Node: CFunctionDescriptor class-instance creation115123 +Node: CFunctionDescriptor class-testing115559 +Node: CFunctionDescriptor-accessing116070 +Node: CFunctionDescriptor-printing116504 +Node: CFunctionDescriptor-restoring116817 +Node: Character117096 +Node: Character class-built ins118399 +Node: Character class-constants119053 +Node: Character class-initializing lookup tables119861 +Node: Character class-instance creation120511 +Node: Character class-testing120883 +Node: Character-built ins121173 +Node: Character-coercion methods121962 +Node: Character-comparing122741 +Node: Character-converting123388 +Node: Character-printing123777 +Node: Character-storing124265 +Node: Character-testing124609 +Node: Character-testing functionality125497 +Node: CharacterArray125745 +Node: CharacterArray class-basic126482 +Node: CharacterArray class-multibyte encodings126969 +Node: CharacterArray-built ins127352 +Node: CharacterArray-comparing127801 +Node: CharacterArray-converting129984 +Node: CharacterArray-multibyte encodings131526 +Node: CharacterArray-string processing132101 +Node: CharacterArray-testing functionality135242 +Node: CInt135502 +Node: CInt class-accessing135773 +Node: CInt-accessing136115 +Node: Class136450 +Node: Class class-initialize137444 +Node: Class-accessing instances and variables137691 +Node: Class-filing139645 +Node: Class-instance creation140077 +Node: Class-instance creation - alternative143038 +Node: Class-pragmas145216 +Node: Class-printing145730 +Node: Class-saving and loading146127 +Node: Class-security147509 +Node: Class-still unclassified147820 +Node: Class-testing148142 +Node: Class-testing functionality148397 +Node: ClassDescription148630 +Node: ClassDescription-compiling149414 +Node: ClassDescription-conversion150256 +Node: ClassDescription-copying150723 +Node: ClassDescription-filing151934 +Node: ClassDescription-organization of messages and classes152731 +Node: ClassDescription-parsing class declarations154160 +Node: ClassDescription-printing154669 +Node: ClassDescription-still unclassified155466 +Node: CLong156019 +Node: CLong class-accessing156303 +Node: CLong-accessing156670 +Node: CLongDouble156990 +Node: CLongDouble class-accessing157289 +Node: CLongDouble-accessing157686 +Node: CObject158036 +Node: CObject class-conversion159065 +Node: CObject class-instance creation159329 +Node: CObject class-primitive allocation160023 +Node: CObject class-subclassing160465 +Node: CObject-accessing160738 +Node: CObject-basic161683 +Node: CObject-C data access161958 +Node: CObject-conversion162572 +Node: CObject-finalization163235 +Node: CObject-pointer-like behavior163713 +Node: CObject-testing functionality166027 +Node: Collection166251 +Node: Collection class-instance creation167281 +Node: Collection class-multibyte encodings168729 +Node: Collection-adding169069 +Node: Collection-concatenating169435 +Node: Collection-converting169995 +Node: Collection-copying Collections171273 +Node: Collection-enumeration171825 +Node: Collection-finalization173460 +Node: Collection-printing173779 +Node: Collection-removing174136 +Node: Collection-storing175092 +Node: Collection-testing collections175365 +Node: CompiledBlock176129 +Node: CompiledBlock class-instance creation176637 +Node: CompiledBlock-accessing177406 +Node: CompiledBlock-basic178754 +Node: CompiledBlock-printing179477 +Node: CompiledBlock-saving and loading179758 +Node: CompiledCode180193 +Node: CompiledCode class-cache flushing181056 +Node: CompiledCode class-instance creation181426 +Node: CompiledCode class-tables182025 +Node: CompiledCode-accessing183260 +Node: CompiledCode-basic184900 +Node: CompiledCode-copying185665 +Node: CompiledCode-debugging185904 +Node: CompiledCode-decoding bytecodes186177 +Node: CompiledCode-literals - iteration186602 +Node: CompiledCode-security187164 +Node: CompiledCode-testing accesses187496 +Node: CompiledCode-translation188681 +Node: CompiledMethod188955 +Node: CompiledMethod class-c call-outs189998 +Node: CompiledMethod class-instance creation190576 +Node: CompiledMethod class-lean images191493 +Node: CompiledMethod-accessing191828 +Node: CompiledMethod-attributes193650 +Node: CompiledMethod-basic194606 +Node: CompiledMethod-c call-outs194923 +Node: CompiledMethod-compiling195480 +Node: CompiledMethod-invoking196330 +Node: CompiledMethod-printing197377 +Node: CompiledMethod-saving and loading197737 +Node: CompiledMethod-source code198207 +Node: CompiledMethod-testing198913 +Node: ContextPart199506 +Node: ContextPart class-built ins200327 +Node: ContextPart class-exception handling200642 +Node: ContextPart-accessing201313 +Node: ContextPart-built ins204738 +Node: ContextPart-copying205438 +Node: ContextPart-debugging205798 +Node: ContextPart-enumerating206911 +Node: ContextPart-printing207519 +Node: ContextPart-security checks207925 +Node: Continuation208491 +Node: Continuation class-instance creation209161 +Node: Continuation-invocation209835 +Node: CPtr211202 +Node: CPtr-accessing211444 +Node: CPtrCType211993 +Node: CPtrCType class-instance creation212321 +Node: CPtrCType-accessing212692 +Node: CPtrCType-storing213193 +Node: CScalar213378 +Node: CScalar class-instance creation213674 +Node: CScalar-accessing214277 +Node: CScalarCType214806 +Node: CScalarCType-accessing215104 +Node: CScalarCType-storing215446 +Node: CShort215682 +Node: CShort class-accessing215966 +Node: CShort-accessing216338 +Node: CSmalltalk216663 +Node: CSmalltalk class-accessing216958 +Node: CSmalltalk-accessing217350 +Node: CString217695 +Node: CString class-accessing218743 +Node: CString class-instance creation219037 +Node: CString-accessing219541 +Node: CStringCType220070 +Node: CStringCType-accessing220339 +Node: CStruct220554 +Node: CStruct class-subclass creation220814 +Node: CType221055 +Node: CType class-C instance creation222219 +Node: CType class-initialization222913 +Node: CType-accessing223170 +Node: CType-C instance creation224022 +Node: CType-storing224737 +Node: CUChar224948 +Node: CUChar class-getting info225223 +Node: CUChar-accessing225604 +Node: CUInt225932 +Node: CUInt class-accessing226201 +Node: CUInt-accessing226568 +Node: CULong226888 +Node: CULong class-accessing227161 +Node: CULong-accessing227533 +Node: CUnion227858 +Node: CUnion class-subclass creation228110 +Node: CUShort228347 +Node: CUShort class-accessing228624 +Node: CUShort-accessing229001 +Node: Date229331 +Node: Date class-basic230803 +Node: Date class-instance creation (ANSI)231931 +Node: Date class-instance creation (Blue Book)232421 +Node: Date-basic233741 +Node: Date-compatibility (non-ANSI)234285 +Node: Date-date computations234698 +Node: Date-printing236409 +Node: Date-storing236637 +Node: Date-testing236860 +Node: DateTime237179 +Node: DateTime class-information237841 +Node: DateTime class-instance creation238132 +Node: DateTime class-instance creation (non-ANSI)239433 +Node: DateTime-basic240174 +Node: DateTime-computations240521 +Node: DateTime-printing241213 +Node: DateTime-splitting in dates & times241479 +Node: DateTime-storing242078 +Node: DateTime-testing242343 +Node: DateTime-time zones242718 +Node: DeferredVariableBinding243848 +Node: DeferredVariableBinding class-basic244449 +Node: DeferredVariableBinding-basic245088 +Node: DeferredVariableBinding-storing245576 +Node: Delay245957 +Node: Delay class-instance creation246771 +Node: Delay class-timer process247248 +Node: Delay-accessing248072 +Node: Delay-comparing248359 +Node: Delay-delaying248640 +Node: Delay-initialization248956 +Node: Delay-instance creation249229 +Node: DelayedAdaptor249506 +Node: DelayedAdaptor-accessing250042 +Node: Dictionary250421 +Node: Dictionary class-instance creation251629 +Node: Dictionary-accessing252073 +Node: Dictionary-awful ST-80 compatibility hacks254051 +Node: Dictionary-dictionary enumerating254514 +Node: Dictionary-dictionary removing255602 +Node: Dictionary-dictionary testing256471 +Node: Dictionary-namespace protocol257145 +Node: Dictionary-printing259276 +Node: Dictionary-rehashing259640 +Node: Dictionary-storing259857 +Node: Dictionary-testing260119 +Node: DirectedMessage260395 +Node: DirectedMessage class-creating instances260971 +Node: DirectedMessage-accessing261697 +Node: DirectedMessage-basic262005 +Node: DirectedMessage-multiple process262429 +Node: DirectedMessage-saving and loading263027 +Node: Directory263465 +Node: Directory class-file name management264133 +Node: Directory class-file operations264672 +Node: Directory class-reading system defaults265357 +Node: DLD266481 +Node: DLD class-C call-outs267161 +Node: DLD class-dynamic linking267413 +Node: DumperProxy268759 +Node: DumperProxy class-accessing269295 +Node: DumperProxy class-instance creation269760 +Node: DumperProxy-saving and restoring270265 +Node: Duration270680 +Node: Duration class-instance creation271091 +Node: Duration class-instance creation (non ANSI)271591 +Node: Duration-arithmetics272070 +Node: Error273258 +Node: Error-exception description273583 +Node: Exception273924 +Node: Exception class-comparison275062 +Node: Exception class-creating ExceptionCollections275526 +Node: Exception class-initialization275950 +Node: Exception class-instance creation276332 +Node: Exception class-interoperability with TrappableEvents276916 +Node: Exception-comparison277390 +Node: Exception-exception description277838 +Node: Exception-exception signaling278281 +Node: ExceptionSet278674 +Node: ExceptionSet class-instance creation279256 +Node: ExceptionSet-enumerating279521 +Node: False280085 +Node: False-basic280484 +Node: False-C hacks281478 +Node: False-printing281658 +Node: File281859 +Node: File class-C functions282610 +Node: File class-file operations282886 +Node: File class-initialization283805 +Node: File class-instance creation284074 +Node: File class-reading system defaults284561 +Node: File class-testing284915 +Node: File-accessing285567 +Node: File-basic287315 +Node: File-directory operations287603 +Node: File-file name management288095 +Node: File-file operations288492 +Node: File-still unclassified289417 +Node: File-testing289706 +Node: FileDescriptor290554 +Node: FileDescriptor class-initialization291890 +Node: FileDescriptor class-instance creation292228 +Node: FileDescriptor class-still unclassified297324 +Node: FileDescriptor-accessing298394 +Node: FileDescriptor-basic299711 +Node: FileDescriptor-binary I/O301234 +Node: FileDescriptor-built ins302885 +Node: FileDescriptor-class type methods304973 +Node: FileDescriptor-initialize-release305403 +Node: FileDescriptor-low-level access305917 +Node: FileDescriptor-overriding inherited methods306466 +Node: FileDescriptor-polymorphism307078 +Node: FileDescriptor-positioning307399 +Node: FileDescriptor-printing307706 +Node: FileDescriptor-testing307989 +Node: FilePath308213 +Node: FilePath class-file name management309211 +Node: FilePath class-still unclassified310875 +Node: FilePath-accessing311182 +Node: FilePath-converting313204 +Node: FilePath-decoration313417 +Node: FilePath-directory operations313733 +Node: FilePath-enumerating314067 +Node: FilePath-file name management316237 +Node: FilePath-file operations317226 +Node: FilePath-printing319252 +Node: FilePath-still unclassified319591 +Node: FilePath-testing319931 +Node: FilePath-virtual filesystems321292 +Node: FileSegment321495 +Node: FileSegment class-basic322145 +Node: FileSegment class-installing322662 +Node: FileSegment-basic323012 +Node: FileSegment-equality324035 +Node: FileSegment-printing324347 +Node: FileStream324795 +Node: FileStream class-file-in325557 +Node: FileStream class-standard streams329094 +Node: FileStream-basic329834 +Node: FileStream-buffering330720 +Node: FileStream-compiling331853 +Node: FileStream-initialize-release332218 +Node: FileStream-overriding inherited methods332513 +Node: FileStream-testing333400 +Node: Float333622 +Node: Float class-byte-order dependancies334536 +Node: Float class-characterization334816 +Node: Float-arithmetic335838 +Node: Float-basic336248 +Node: Float-built ins336443 +Node: Float-coercing337384 +Node: Float-coercion337888 +Node: Float-comparing338151 +Node: Float-printing338801 +Node: Float-storing339026 +Node: Float-testing339436 +Node: Float-testing functionality340205 +Node: Float-transcendental operations340443 +Node: FloatD340928 +Node: FloatD class-byte-order dependencies341433 +Node: FloatD class-characterization341828 +Node: FloatD class-converting343102 +Node: FloatD-built ins343358 +Node: FloatD-coercing344595 +Node: FloatE344998 +Node: FloatE class-byte-order dependancies345553 +Node: FloatE class-byte-order dependencies345845 +Node: FloatE class-characterization346211 +Node: FloatE class-converting347773 +Node: FloatE-built ins348029 +Node: FloatE-coercing349266 +Node: FloatQ349669 +Node: FloatQ class-byte-order dependancies350215 +Node: FloatQ class-characterization350500 +Node: FloatQ class-converting352062 +Node: FloatQ-built ins352318 +Node: FloatQ-coercing353555 +Node: FloatQ-misc math353983 +Node: Fraction354180 +Node: Fraction class-converting354971 +Node: Fraction class-instance creation355215 +Node: Fraction-accessing355600 +Node: Fraction-arithmetic355890 +Node: Fraction-coercing356614 +Node: Fraction-coercion357252 +Node: Fraction-comparing357533 +Node: Fraction-converting358035 +Node: Fraction-optimized cases358536 +Node: Fraction-printing358970 +Node: Fraction-testing359302 +Node: Generator359509 +Node: Generator class-instance creation361815 +Node: Generator-stream protocol362562 +Node: Getopt363625 +Node: Getopt class-instance creation363991 +Node: Halt366630 +Node: Halt-description366924 +Node: HashedCollection367175 +Node: HashedCollection class-instance creation368036 +Node: HashedCollection-accessing368508 +Node: HashedCollection-builtins369088 +Node: HashedCollection-copying369865 +Node: HashedCollection-enumerating the elements of a collection370343 +Node: HashedCollection-rehashing370719 +Node: HashedCollection-removing371005 +Node: HashedCollection-saving and loading371414 +Node: HashedCollection-storing371928 +Node: HashedCollection-testing collections372255 +Node: HomedAssociation373202 +Node: HomedAssociation class-basic373772 +Node: HomedAssociation-accessing374074 +Node: HomedAssociation-finalization374440 +Node: HomedAssociation-storing375060 +Node: IdentityDictionary375329 +Node: IdentitySet375722 +Node: IdentitySet-testing376121 +Node: Integer376382 +Node: Integer class-converting377211 +Node: Integer-accessing377572 +Node: Integer-basic377811 +Node: Integer-bit operators378021 +Node: Integer-converting379389 +Node: Integer-extension380115 +Node: Integer-iterators380428 +Node: Integer-math methods380794 +Node: Integer-printing381695 +Node: Integer-storing382941 +Node: Integer-testing functionality383268 +Node: Interval383542 +Node: Interval class-instance creation384136 +Node: Interval-basic384738 +Node: Interval-printing385424 +Node: Interval-storing385757 +Node: Interval-testing386004 +Node: Iterable386275 +Node: Iterable class-multibyte encodings386793 +Node: Iterable-enumeration387085 +Node: Iterable-streaming389734 +Node: LargeArray390034 +Node: LargeArray-overridden390437 +Node: LargeArrayedCollection390629 +Node: LargeArrayedCollection class-instance creation391169 +Node: LargeArrayedCollection-accessing391528 +Node: LargeArrayedCollection-basic392032 +Node: LargeByteArray392433 +Node: LargeByteArray-overridden392861 +Node: LargeInteger393302 +Node: LargeInteger-accessing394137 +Node: LargeInteger-arithmetic394376 +Node: LargeInteger-bit operations395503 +Node: LargeInteger-built-ins396178 +Node: LargeInteger-coercion397257 +Node: LargeInteger-disabled397803 +Node: LargeInteger-primitive operations398178 +Node: LargeInteger-testing398658 +Node: LargeNegativeInteger399302 +Node: LargeNegativeInteger-converting400004 +Node: LargeNegativeInteger-numeric testing400392 +Node: LargeNegativeInteger-reverting to LargePositiveInteger400927 +Node: LargePositiveInteger401499 +Node: LargePositiveInteger-arithmetic402376 +Node: LargePositiveInteger-converting402852 +Node: LargePositiveInteger-helper byte-level methods403406 +Node: LargePositiveInteger-numeric testing405143 +Node: LargePositiveInteger-primitive operations405679 +Node: LargeWordArray406373 +Node: LargeWordArray-overridden406803 +Node: LargeZeroInteger407102 +Node: LargeZeroInteger-accessing407930 +Node: LargeZeroInteger-arithmetic408195 +Node: LargeZeroInteger-numeric testing409125 +Node: LargeZeroInteger-printing409462 +Node: Link409760 +Node: Link class-instance creation410307 +Node: Link-basic410541 +Node: Link-iteration410796 +Node: LinkedList411259 +Node: LinkedList-accessing411869 +Node: LinkedList-adding412187 +Node: LinkedList-enumerating412922 +Node: LinkedList-testing413404 +Node: LookupKey413762 +Node: LookupKey class-basic414318 +Node: LookupKey-accessing414562 +Node: LookupKey-printing414829 +Node: LookupKey-storing415078 +Node: LookupKey-testing415336 +Node: LookupTable415772 +Node: LookupTable class-instance creation416647 +Node: LookupTable-accessing416909 +Node: LookupTable-enumerating417718 +Node: LookupTable-hashing418243 +Node: LookupTable-rehashing418484 +Node: LookupTable-removing418709 +Node: LookupTable-storing419211 +Node: Magnitude419450 +Node: Magnitude-basic419906 +Node: Magnitude-misc methods420438 +Node: MappedCollection420854 +Node: MappedCollection class-instance creation422229 +Node: MappedCollection-basic422682 +Node: Memory424437 +Node: Memory class-accessing424997 +Node: Message429129 +Node: Message class-creating instances429805 +Node: Message-accessing430198 +Node: Message-basic430640 +Node: Message-printing430939 +Node: MessageNotUnderstood431271 +Node: MessageNotUnderstood-accessing431765 +Node: MessageNotUnderstood-description432104 +Node: Metaclass432385 +Node: Metaclass class-instance creation433428 +Node: Metaclass-accessing433713 +Node: Metaclass-basic434159 +Node: Metaclass-compiling methods435510 +Node: Metaclass-delegation435769 +Node: Metaclass-filing437449 +Node: Metaclass-printing437740 +Node: Metaclass-testing functionality438295 +Node: MethodContext438556 +Node: MethodContext-accessing439098 +Node: MethodContext-debugging440663 +Node: MethodContext-printing441445 +Node: MethodDictionary441691 +Node: MethodDictionary-adding442222 +Node: MethodDictionary-rehashing442471 +Node: MethodDictionary-removing442725 +Node: MethodInfo443137 +Node: MethodInfo-accessing443623 +Node: MethodInfo-equality444568 +Node: Namespace444861 +Node: Namespace class-accessing445469 +Node: Namespace class-disabling instance creation445872 +Node: Namespace class-initialization446268 +Node: Namespace-accessing446705 +Node: Namespace-namespace hierarchy446994 +Node: Namespace-overrides for superspaces447492 +Node: Namespace-printing449289 +Node: NetClients.URIResolver449793 +Node: NetClients.URIResolver class-api450248 +Node: NetClients.URIResolver class-instance creation451398 +Node: NetClients.URL451775 +Node: NetClients.URL class-encoding URLs452546 +Node: NetClients.URL class-instance creation453051 +Node: NetClients.URL-accessing453876 +Node: NetClients.URL-comparing456601 +Node: NetClients.URL-copying457127 +Node: NetClients.URL-initialize-release457664 +Node: NetClients.URL-printing457963 +Node: NetClients.URL-still unclassified458268 +Node: NetClients.URL-testing458567 +Node: NetClients.URL-utilities459353 +Node: Notification459665 +Node: Notification-exception description460118 +Node: NullProxy460580 +Node: NullProxy class-instance creation461192 +Node: NullProxy-accessing461463 +Node: NullValueHolder461715 +Node: NullValueHolder class-creating instances462304 +Node: NullValueHolder-accessing462651 +Node: Number462999 +Node: Number class-converting463927 +Node: Number class-testing464387 +Node: Number-arithmetic464655 +Node: Number-coercion465987 +Node: Number-comparing466260 +Node: Number-converting466811 +Node: Number-copying468166 +Node: Number-error raising468481 +Node: Number-misc math468852 +Node: Number-point creation471017 +Node: Number-retrying471314 +Node: Number-shortcuts and iterators473119 +Node: Number-testing474368 +Node: Number-truncation and round off475804 +Node: Object476619 +Node: Object class-initialization477575 +Node: Object-built ins478174 +Node: Object-change and update486893 +Node: Object-class type methods488100 +Node: Object-conversion488919 +Node: Object-copying489166 +Node: Object-debugging489830 +Node: Object-dependents access490159 +Node: Object-error raising490863 +Node: Object-finalization491550 +Node: Object-printing492543 +Node: Object-relational operators494288 +Node: Object-saving and loading494652 +Node: Object-storing495655 +Node: Object-syntax shortcuts496353 +Node: Object-testing functionality496680 +Node: Object-VM callbacks498280 +Node: ObjectDumper498765 +Node: ObjectDumper class-establishing proxy classes499970 +Node: ObjectDumper class-instance creation500819 +Node: ObjectDumper class-shortcuts501232 +Node: ObjectDumper class-testing501626 +Node: ObjectDumper-accessing502070 +Node: ObjectDumper-loading/dumping objects502578 +Node: ObjectDumper-stream interface503018 +Node: ObjectMemory503400 +Node: ObjectMemory class-accessing504485 +Node: ObjectMemory class-builtins504752 +Node: ObjectMemory class-initialization508041 +Node: ObjectMemory class-saving the image508371 +Node: ObjectMemory-accessing508757 +Node: ObjectMemory-builtins513711 +Node: ObjectMemory-derived information513996 +Node: OrderedCollection514983 +Node: OrderedCollection class-instance creation515705 +Node: OrderedCollection-accessing516063 +Node: OrderedCollection-adding516628 +Node: OrderedCollection-removing518692 +Node: Package519347 +Node: Package class-instance creation519821 +Node: Package-accessing520077 +Node: PackageLoader523404 +Node: PackageLoader class-accessing523968 +Node: PackageLoader class-loading526592 +Node: PackageLoader class-testing526992 +Node: Permission527283 +Node: Permission class-testing527752 +Node: Permission-accessing528502 +Node: Permission-testing529080 +Node: PluggableAdaptor529330 +Node: PluggableAdaptor class-creating instances529967 +Node: PluggableAdaptor-accessing531063 +Node: PluggableProxy531364 +Node: PluggableProxy class-accessing532002 +Node: PluggableProxy-saving and restoring532452 +Node: Point532887 +Node: Point class-instance creation533626 +Node: Point-accessing533939 +Node: Point-arithmetic534373 +Node: Point-comparing535092 +Node: Point-converting535905 +Node: Point-point functions536424 +Node: Point-printing537372 +Node: Point-storing537606 +Node: Point-truncation and round off537854 +Node: PositionableStream538266 +Node: PositionableStream class-instance creation539284 +Node: PositionableStream-accessing-reading539809 +Node: PositionableStream-class type methods541567 +Node: PositionableStream-compiling542102 +Node: PositionableStream-positioning542596 +Node: PositionableStream-still unclassified543503 +Node: PositionableStream-testing543845 +Node: PositionableStream-truncating544334 +Node: Process544634 +Node: Process-accessing545214 +Node: Process-basic546339 +Node: Process-builtins548051 +Node: Process-printing549171 +Node: ProcessEnvironment549385 +Node: ProcessEnvironment class-disabled550188 +Node: ProcessEnvironment class-singleton550481 +Node: ProcessEnvironment-accessing550815 +Node: ProcessEnvironment-dictionary removing552097 +Node: ProcessEnvironment-dictionary testing552924 +Node: ProcessorScheduler553235 +Node: ProcessorScheduler class-instance creation553925 +Node: ProcessorScheduler-basic554239 +Node: ProcessorScheduler-built ins556092 +Node: ProcessorScheduler-idle tasks556794 +Node: ProcessorScheduler-printing557298 +Node: ProcessorScheduler-priorities557617 +Node: ProcessorScheduler-storing559283 +Node: ProcessorScheduler-timed invocation559624 +Node: Promise560186 +Node: Promise class-creating instances560813 +Node: Promise-accessing561224 +Node: Promise-initializing561679 +Node: Promise-printing561923 +Node: Promise-still unclassified562165 +Node: Random562421 +Node: Random class-instance creation562882 +Node: Random class-shortcuts563264 +Node: Random-basic563654 +Node: Random-testing564084 +Node: ReadStream564410 +Node: ReadStream class-instance creation564817 +Node: ReadWriteStream565237 +Node: ReadWriteStream class-instance creation565735 +Node: ReadWriteStream-positioning566373 +Node: Rectangle566692 +Node: Rectangle class-instance creation567493 +Node: Rectangle-accessing568051 +Node: Rectangle-copying570465 +Node: Rectangle-printing570699 +Node: Rectangle-rectangle functions571041 +Node: Rectangle-testing572944 +Node: Rectangle-transforming573774 +Node: Rectangle-truncation and round off574414 +Node: RecursionLock574719 +Node: RecursionLock class-instance creation575123 +Node: RecursionLock-accessing575373 +Node: RecursionLock-mutual exclusion575986 +Node: RecursionLock-printing576361 +Node: Regex576627 +Node: Regex class-instance creation577642 +Node: Regex-basic577901 +Node: Regex-conversion578323 +Node: Regex-printing578629 +Node: RegexResults579289 +Node: RegexResults-accessing579907 +Node: RegexResults-testing581563 +Node: RootNamespace582595 +Node: RootNamespace class-instance creation583155 +Node: RootNamespace-namespace hierarchy583504 +Node: RootNamespace-overrides for superspaces583951 +Node: RootNamespace-printing584582 +Node: RunArray585106 +Node: RunArray class-instance creation586079 +Node: RunArray-accessing586367 +Node: RunArray-adding586717 +Node: RunArray-basic587807 +Node: RunArray-copying588128 +Node: RunArray-enumerating588500 +Node: RunArray-removing588976 +Node: RunArray-searching589457 +Node: RunArray-testing589887 +Node: ScaledDecimal590146 +Node: ScaledDecimal class-instance creation590924 +Node: ScaledDecimal-arithmetic591339 +Node: ScaledDecimal-coercion592074 +Node: ScaledDecimal-comparing593105 +Node: ScaledDecimal-constants593757 +Node: ScaledDecimal-printing594075 +Node: ScaledDecimal-storing594551 +Node: SecurityPolicy594992 +Node: SecurityPolicy-modifying595580 +Node: SecurityPolicy-querying595932 +Node: Semaphore596191 +Node: Semaphore class-instance creation596867 +Node: Semaphore-accessing597256 +Node: Semaphore-builtins597756 +Node: Semaphore-mutual exclusion599117 +Node: Semaphore-printing599467 +Node: SequenceableCollection599713 +Node: SequenceableCollection class-instance creation600634 +Node: SequenceableCollection-basic601128 +Node: SequenceableCollection-comparing605772 +Node: SequenceableCollection-concatenating606301 +Node: SequenceableCollection-copying SequenceableCollections607730 +Node: SequenceableCollection-enumerating610495 +Node: SequenceableCollection-replacing items614057 +Node: SequenceableCollection-sorting615020 +Node: SequenceableCollection-still unclassified615605 +Node: SequenceableCollection-testing615966 +Node: Set616530 +Node: Set-arithmetic616962 +Node: Set-awful ST-80 compatibility hacks617307 +Node: Set-comparing617684 +Node: SharedQueue618095 +Node: SharedQueue class-instance creation618629 +Node: SharedQueue-accessing619014 +Node: Signal619532 +Node: Signal-accessing620200 +Node: Signal-copying621055 +Node: Signal-exception handling621328 +Node: SingletonProxy623959 +Node: SingletonProxy class-accessing624575 +Node: SingletonProxy class-instance creation624956 +Node: SingletonProxy-saving and restoring625413 +Node: SmallInteger625856 +Node: SmallInteger class-getting limits626593 +Node: SmallInteger class-testing627095 +Node: SmallInteger-bit arithmetic627407 +Node: SmallInteger-built ins627774 +Node: SmallInteger-builtins630204 +Node: SmallInteger-coercion630963 +Node: SmallInteger-coercion methods631277 +Node: SmallInteger-testing functionality631649 +Node: SortedCollection631898 +Node: SortedCollection class-hacking633042 +Node: SortedCollection class-instance creation633327 +Node: SortedCollection-basic633856 +Node: SortedCollection-copying634417 +Node: SortedCollection-disabled634740 +Node: SortedCollection-enumerating635610 +Node: SortedCollection-saving and loading635956 +Node: SortedCollection-searching636318 +Node: Stream636921 +Node: Stream-accessing-reading638079 +Node: Stream-accessing-writing640972 +Node: Stream-basic641685 +Node: Stream-buffering641876 +Node: Stream-built ins642513 +Node: Stream-character writing643635 +Node: Stream-concatenating644506 +Node: Stream-enumerating645179 +Node: Stream-filing out645557 +Node: Stream-filtering645917 +Node: Stream-polymorphism647507 +Node: Stream-positioning647913 +Node: Stream-printing649062 +Node: Stream-still unclassified649828 +Node: Stream-storing650096 +Node: Stream-streaming protocol650485 +Node: Stream-testing650947 +Node: String651472 +Node: String class-instance creation652578 +Node: String class-multibyte encodings653062 +Node: String-accessing653390 +Node: String-basic653787 +Node: String-built ins654196 +Node: String-converting655745 +Node: String-filesystem656226 +Node: String-printing656598 +Node: String-regex657446 +Node: String-testing functionality664651 +Node: Symbol664855 +Node: Symbol class-built ins665693 +Node: Symbol class-instance creation665924 +Node: Symbol class-symbol table667079 +Node: Symbol-basic668504 +Node: Symbol-built ins669273 +Node: Symbol-converting669598 +Node: Symbol-misc669954 +Node: Symbol-storing670134 +Node: Symbol-testing671040 +Node: Symbol-testing functionality671324 +Node: SymLink671561 +Node: SymLink class-instance creation672122 +Node: SymLink-accessing672458 +Node: SymLink-iteration672809 +Node: SymLink-printing673040 +Node: SystemDictionary673256 +Node: SystemDictionary class-initialization674213 +Node: SystemDictionary-basic674488 +Node: SystemDictionary-builtins674831 +Node: SystemDictionary-c call-outs676177 +Node: SystemDictionary-command-line676586 +Node: SystemDictionary-miscellaneous679277 +Node: SystemDictionary-printing679743 +Node: SystemDictionary-special accessing680178 +Node: SystemDictionary-testing680791 +Node: SystemExceptions.AlreadyDefined681141 +Node: SystemExceptions.AlreadyDefined-accessing681667 +Node: SystemExceptions.ArgumentOutOfRange681935 +Node: SystemExceptions.ArgumentOutOfRange class-signaling682535 +Node: SystemExceptions.ArgumentOutOfRange-accessing682957 +Node: SystemExceptions.BadReturn683551 +Node: SystemExceptions.BadReturn-accessing684041 +Node: SystemExceptions.CInterfaceError684301 +Node: SystemExceptions.CInterfaceError-accessing684812 +Node: SystemExceptions.EmptyCollection685096 +Node: SystemExceptions.EmptyCollection-accessing685593 +Node: SystemExceptions.EndOfStream685877 +Node: SystemExceptions.EndOfStream class-signaling686378 +Node: SystemExceptions.EndOfStream-accessing686734 +Node: SystemExceptions.FileError687170 +Node: SystemExceptions.FileError-accessing687659 +Node: SystemExceptions.IndexOutOfRange687919 +Node: SystemExceptions.IndexOutOfRange class-signaling688515 +Node: SystemExceptions.IndexOutOfRange-accessing688897 +Node: SystemExceptions.InvalidArgument689427 +Node: SystemExceptions.InvalidArgument-accessing689934 +Node: SystemExceptions.InvalidProcessState690207 +Node: SystemExceptions.InvalidProcessState-accessing690748 +Node: SystemExceptions.InvalidSize691048 +Node: SystemExceptions.InvalidSize-accessing691525 +Node: SystemExceptions.InvalidValue691793 +Node: SystemExceptions.InvalidValue class-signaling692330 +Node: SystemExceptions.InvalidValue-accessing692795 +Node: SystemExceptions.MustBeBoolean693302 +Node: SystemExceptions.MustBeBoolean class-signaling693793 +Node: SystemExceptions.MutationError694123 +Node: SystemExceptions.MutationError class-instance creation694662 +Node: SystemExceptions.MutationError-accessing695055 +Node: SystemExceptions.NoRunnableProcess695394 +Node: SystemExceptions.NoRunnableProcess-accessing695900 +Node: SystemExceptions.NotEnoughElements696192 +Node: SystemExceptions.NotEnoughElements class-signaling696758 +Node: SystemExceptions.NotEnoughElements-accessing697143 +Node: SystemExceptions.NotFound697695 +Node: SystemExceptions.NotFound class-accessing698221 +Node: SystemExceptions.NotFound-accessing698612 +Node: SystemExceptions.NotImplemented698918 +Node: SystemExceptions.NotImplemented-accessing699386 +Node: SystemExceptions.NotIndexable699666 +Node: SystemExceptions.NotIndexable-accessing700139 +Node: SystemExceptions.NotYetImplemented700411 +Node: SystemExceptions.NotYetImplemented-accessing700937 +Node: SystemExceptions.PackageNotAvailable701229 +Node: SystemExceptions.PackageNotAvailable class-still unclassified701753 +Node: SystemExceptions.PackageNotAvailable-description702191 +Node: SystemExceptions.PrimitiveFailed702628 +Node: SystemExceptions.PrimitiveFailed-accessing703125 +Node: SystemExceptions.ProcessBeingTerminated703409 +Node: SystemExceptions.ProcessBeingTerminated-accessing703903 +Node: SystemExceptions.ProcessTerminated704367 +Node: SystemExceptions.ProcessTerminated-accessing704902 +Node: SystemExceptions.ReadOnlyObject705194 +Node: SystemExceptions.ReadOnlyObject-accessing705680 +Node: SystemExceptions.SecurityError705960 +Node: SystemExceptions.SecurityError class-accessing706534 +Node: SystemExceptions.SecurityError-accessing706930 +Node: SystemExceptions.ShouldNotImplement707416 +Node: SystemExceptions.ShouldNotImplement-accessing707955 +Node: SystemExceptions.SubclassResponsibility708251 +Node: SystemExceptions.SubclassResponsibility-accessing708836 +Node: SystemExceptions.UnhandledException709148 +Node: SystemExceptions.UnhandledException-accessing709660 +Node: SystemExceptions.UserInterrupt710008 +Node: SystemExceptions.UserInterrupt-accessing710476 +Node: SystemExceptions.VerificationError710752 +Node: SystemExceptions.VerificationError-accessing711237 +Node: SystemExceptions.VMError711529 +Node: SystemExceptions.VMError-accessing711969 +Node: SystemExceptions.WrongArgumentCount712221 +Node: SystemExceptions.WrongArgumentCount-accessing712787 +Node: SystemExceptions.WrongClass713083 +Node: SystemExceptions.WrongClass class-signaling713711 +Node: SystemExceptions.WrongClass-accessing714383 +Node: SystemExceptions.WrongMessageSent715052 +Node: SystemExceptions.WrongMessageSent class-signaling715709 +Node: SystemExceptions.WrongMessageSent-accessing716142 +Node: TextCollector716747 +Node: TextCollector class-accessing717457 +Node: TextCollector-accessing717970 +Node: TextCollector-printing718805 +Node: TextCollector-set up719153 +Node: TextCollector-storing719732 +Node: Time720076 +Node: Time class-basic (UTC)720860 +Node: Time class-builtins721414 +Node: Time class-clocks722455 +Node: Time class-initialization723026 +Node: Time class-instance creation723386 +Node: Time-accessing (ANSI for DateAndTimes)724279 +Node: Time-accessing (non ANSI & for Durations)724811 +Node: Time-arithmetic725277 +Node: Time-comparing725868 +Node: True726169 +Node: True-basic726549 +Node: True-C hacks727515 +Node: True-printing727691 +Node: UndefinedObject727889 +Node: UndefinedObject-basic728625 +Node: UndefinedObject-class creation - alternative728924 +Node: UndefinedObject-class polymorphism731213 +Node: UndefinedObject-CObject interoperability734305 +Node: UndefinedObject-dependents access734733 +Node: UndefinedObject-printing735122 +Node: UndefinedObject-storing735616 +Node: UndefinedObject-testing736095 +Node: UnicodeCharacter736947 +Node: UnicodeCharacter class-built ins737589 +Node: UnicodeCharacter-coercion methods738166 +Node: UnicodeString738458 +Node: UnicodeString class-converting739037 +Node: UnicodeString class-multibyte encodings739415 +Node: UnicodeString-built-ins739914 +Node: UnicodeString-converting740187 +Node: UnicodeString-multibyte encodings740927 +Node: ValueAdaptor741435 +Node: ValueAdaptor class-creating instances741929 +Node: ValueAdaptor-accessing742233 +Node: ValueAdaptor-printing742656 +Node: ValueHolder742885 +Node: ValueHolder class-creating instances743512 +Node: ValueHolder-accessing743911 +Node: ValueHolder-initializing744220 +Node: VariableBinding744459 +Node: VariableBinding-printing745103 +Node: VariableBinding-saving and loading745434 +Node: VariableBinding-storing745907 +Node: VariableBinding-testing746398 +Node: VersionableObjectProxy746672 +Node: VersionableObjectProxy class-saving and restoring747573 +Node: VersionableObjectProxy-saving and restoring748613 +Node: VFS.ArchiveFile748963 +Node: VFS.ArchiveFile-ArchiveMember protocol749863 +Node: VFS.ArchiveFile-directory operations750932 +Node: VFS.ArchiveFile-querying751674 +Node: VFS.ArchiveFile-still unclassified752117 +Node: VFS.ArchiveFile-TmpFileArchiveMember protocol752470 +Node: VFS.ArchiveMember753033 +Node: VFS.ArchiveMember-accessing753817 +Node: VFS.ArchiveMember-basic755148 +Node: VFS.ArchiveMember-delegation755506 +Node: VFS.ArchiveMember-directory operations755813 +Node: VFS.ArchiveMember-file operations756418 +Node: VFS.ArchiveMember-initializing757058 +Node: VFS.ArchiveMember-still unclassified757719 +Node: VFS.ArchiveMember-testing758245 +Node: VFS.FileWrapper759373 +Node: VFS.FileWrapper class-initializing760078 +Node: VFS.FileWrapper class-instance creation760513 +Node: VFS.FileWrapper-accessing760918 +Node: VFS.FileWrapper-basic761668 +Node: VFS.FileWrapper-delegation762014 +Node: VFS.FileWrapper-enumerating763812 +Node: VFS.FileWrapper-file operations764170 +Node: VFS.FileWrapper-testing764848 +Node: VFS.StoredZipMember765572 +Node: VFS.StoredZipMember-accessing766047 +Node: VFS.StoredZipMember-opening766319 +Node: VFS.TmpFileArchiveMember766577 +Node: VFS.TmpFileArchiveMember-directory operations767039 +Node: VFS.TmpFileArchiveMember-finalization767545 +Node: VFS.TmpFileArchiveMember-still unclassified767955 +Node: VFS.ZipFile768291 +Node: VFS.ZipFile-members768635 +Node: Warning769466 +Node: Warning-exception description769794 +Node: WeakArray770014 +Node: WeakArray class-instance creation770519 +Node: WeakArray-accessing770859 +Node: WeakArray-conversion772523 +Node: WeakArray-loading773174 +Node: WeakIdentitySet773455 +Node: WeakIdentitySet-accessing773972 +Node: WeakKeyDictionary774262 +Node: WeakKeyDictionary class-hacks774866 +Node: WeakKeyDictionary-accessing775198 +Node: WeakKeyIdentityDictionary775533 +Node: WeakSet776073 +Node: WeakSet-accessing776605 +Node: WeakSet-copying776986 +Node: WeakSet-loading777380 +Node: WeakValueIdentityDictionary777648 +Node: WeakValueLookupTable778206 +Node: WeakValueLookupTable class-hacks778872 +Node: WeakValueLookupTable-hacks779186 +Node: WeakValueLookupTable-rehashing779800 +Node: WordArray780039 +Node: WriteStream780357 +Node: WriteStream class-instance creation780857 +Node: WriteStream-accessing-writing781551 +Node: WriteStream-positioning782393 +Node: ZeroDivide782619 +Node: ZeroDivide class-instance creation783124 +Node: ZeroDivide-accessing783520 +Node: ZeroDivide-description783789 +Node: Class index784020 +Node: Method index803435 +Node: Cross-reference1267830  End Tag Table diff -rNu smalltalk-3.0.3/doc/gst-base.info-1 smalltalk-3.0.4/doc/gst-base.info-1 --- smalltalk-3.0.3/doc/gst-base.info-1 2008-05-14 12:35:05.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-base.info-1 2008-08-09 15:31:03.000000000 +0200 @@ -63,13 +63,14 @@ * BlockContext:: * Boolean:: * ByteArray:: -* ByteStream:: * CAggregate:: * CallinProcess:: * CArray:: * CArrayCType:: * CBoolean:: * CByte:: +* CCallable:: +* CCallbackDescriptor:: * CChar:: * CCompound:: * CDouble:: @@ -121,6 +122,7 @@ * False:: * File:: * FileDescriptor:: +* FilePath:: * FileSegment:: * FileStream:: * Float:: @@ -137,6 +139,7 @@ * IdentitySet:: * Integer:: * Interval:: +* Iterable:: * LargeArray:: * LargeArrayedCollection:: * LargeByteArray:: @@ -177,6 +180,7 @@ * Point:: * PositionableStream:: * Process:: +* ProcessEnvironment:: * ProcessorScheduler:: * Promise:: * Random:: @@ -231,6 +235,7 @@ * SystemExceptions.SecurityError:: * SystemExceptions.ShouldNotImplement:: * SystemExceptions.SubclassResponsibility:: +* SystemExceptions.UnhandledException:: * SystemExceptions.UserInterrupt:: * SystemExceptions.VerificationError:: * SystemExceptions.VMError:: @@ -247,14 +252,12 @@ * ValueHolder:: * VariableBinding:: * VersionableObjectProxy:: -* VFS.ArchiveFileHandler:: -* VFS.ArchiveMemberHandler:: -* VFS.CStatStruct:: -* VFS.DecodedFileHandler:: -* VFS.FileHandlerWrapper:: -* VFS.RealFileHandler:: -* VFS.TmpFileArchiveMemberHandler:: -* VFS.VFSHandler:: +* VFS.ArchiveFile:: +* VFS.ArchiveMember:: +* VFS.FileWrapper:: +* VFS.StoredZipMember:: +* VFS.TmpFileArchiveMember:: +* VFS.ZipFile:: * Warning:: * WeakArray:: * WeakIdentitySet:: @@ -279,15 +282,16 @@ * Boolean:: * False:: * True:: -* CFunctionDescriptor:: * CObject:: * CAggregate:: * CArray:: * CPtr:: * CString:: +* CCallable:: +* CCallbackDescriptor:: +* CFunctionDescriptor:: * CCompound:: * CStruct:: -* VFS.CStatStruct:: * CUnion:: * CScalar:: * CChar:: @@ -304,50 +308,6 @@ * CUInt:: * CULong:: * CUShort:: -* Collection:: -* Bag:: -* HashedCollection:: -* Dictionary:: -* BindingDictionary:: -* AbstractNamespace:: -* Namespace:: -* RootNamespace:: -* SystemDictionary:: -* LookupTable:: -* IdentityDictionary:: -* MethodDictionary:: -* WeakValueLookupTable:: -* WeakValueIdentityDictionary:: -* WeakKeyDictionary:: -* WeakKeyIdentityDictionary:: -* Set:: -* IdentitySet:: -* WeakSet:: -* WeakIdentitySet:: -* MappedCollection:: -* SequenceableCollection:: -* ArrayedCollection:: -* Array:: -* WeakArray:: -* ByteArray:: -* CharacterArray:: -* String:: -* Symbol:: -* UnicodeString:: -* CompiledCode:: -* CompiledBlock:: -* CompiledMethod:: -* Interval:: -* LargeArrayedCollection:: -* LargeArray:: -* LargeByteArray:: -* LargeWordArray:: -* WordArray:: -* LinkedList:: -* Semaphore:: -* OrderedCollection:: -* RunArray:: -* SortedCollection:: * ContextPart:: * BlockContext:: * MethodContext:: @@ -358,6 +318,7 @@ * CScalarCType:: * CStringCType:: * Delay:: +* Directory:: * DLD:: * DumperProxy:: * AlternativeObjectProxy:: @@ -365,10 +326,72 @@ * VersionableObjectProxy:: * PluggableProxy:: * SingletonProxy:: -* File:: -* Directory:: +* FilePath:: +* File:: +* VFS.ArchiveMember:: +* VFS.TmpFileArchiveMember:: +* VFS.StoredZipMember:: +* VFS.FileWrapper:: +* VFS.ArchiveFile:: +* VFS.ZipFile:: * FileSegment:: * Getopt:: +* Iterable:: +* Collection:: +* Bag:: +* HashedCollection:: +* Dictionary:: +* BindingDictionary:: +* AbstractNamespace:: +* Namespace:: +* RootNamespace:: +* SystemDictionary:: +* LookupTable:: +* IdentityDictionary:: +* MethodDictionary:: +* WeakValueLookupTable:: +* WeakValueIdentityDictionary:: +* WeakKeyDictionary:: +* WeakKeyIdentityDictionary:: +* Set:: +* IdentitySet:: +* WeakSet:: +* WeakIdentitySet:: +* MappedCollection:: +* SequenceableCollection:: +* ArrayedCollection:: +* Array:: +* WeakArray:: +* ByteArray:: +* CharacterArray:: +* String:: +* Symbol:: +* UnicodeString:: +* CompiledCode:: +* CompiledBlock:: +* CompiledMethod:: +* Interval:: +* LargeArrayedCollection:: +* LargeArray:: +* LargeByteArray:: +* LargeWordArray:: +* WordArray:: +* LinkedList:: +* Semaphore:: +* OrderedCollection:: +* RunArray:: +* SortedCollection:: +* Stream:: +* FileDescriptor:: +* FileStream:: +* Generator:: +* ObjectDumper:: +* PositionableStream:: +* ReadStream:: +* WriteStream:: +* ReadWriteStream:: +* Random:: +* TextCollector:: (Kernel.PackageInfo) * Package:: (Kernel.TrappableEvent) @@ -412,6 +435,7 @@ * PackageLoader:: * Permission:: * Point:: +* ProcessEnvironment:: * ProcessorScheduler:: * Rectangle:: * RecursionLock:: @@ -462,18 +486,7 @@ * SystemExceptions.EndOfStream:: * SystemExceptions.ProcessBeingTerminated:: * Warning:: -* Stream:: -* Generator:: -* ObjectDumper:: -* PositionableStream:: -* ReadStream:: -* WriteStream:: -* ReadWriteStream:: -* ByteStream:: -* FileDescriptor:: -* FileStream:: -* Random:: -* TextCollector:: +* SystemExceptions.UnhandledException:: * UndefinedObject:: * ValueAdaptor:: * NullValueHolder:: @@ -481,13 +494,6 @@ * DelayedAdaptor:: * ValueHolder:: * Promise:: -* VFS.VFSHandler:: -* VFS.ArchiveMemberHandler:: -* VFS.TmpFileArchiveMemberHandler:: -* VFS.FileHandlerWrapper:: -* VFS.ArchiveFileHandler:: -* VFS.DecodedFileHandler:: -* VFS.RealFileHandler::  File: gst-base.info, Node: AbstractNamespace, Next: AlternativeObjectProxy, Up: Base classes @@ -505,7 +511,7 @@ * AbstractNamespace class-instance creation:: (class) * AbstractNamespace-accessing:: (instance) -* AbstractNamespace-basic & copying:: (instance) +* AbstractNamespace-compiling:: (instance) * AbstractNamespace-copying:: (instance) * AbstractNamespace-namespace hierarchy:: (instance) * AbstractNamespace-overrides for superspaces:: (instance) @@ -527,7 +533,7 @@  -File: gst-base.info, Node: AbstractNamespace-accessing, Next: AbstractNamespace-basic & copying, Prev: AbstractNamespace class-instance creation, Up: AbstractNamespace +File: gst-base.info, Node: AbstractNamespace-accessing, Next: AbstractNamespace-compiling, Prev: AbstractNamespace class-instance creation, Up: AbstractNamespace 1.1.2 AbstractNamespace: accessing ---------------------------------- @@ -561,23 +567,28 @@  -File: gst-base.info, Node: AbstractNamespace-basic & copying, Next: AbstractNamespace-copying, Prev: AbstractNamespace-accessing, Up: AbstractNamespace +File: gst-base.info, Node: AbstractNamespace-compiling, Next: AbstractNamespace-copying, Prev: AbstractNamespace-accessing, Up: AbstractNamespace -1.1.3 AbstractNamespace: basic & copying ----------------------------------------- +1.1.3 AbstractNamespace: compiling +---------------------------------- -= arg - Answer whether the receiver is equal to arg. The equality test is - by default the same as that for equal objects. = must not fail; - answer false if the receiver cannot be compared to arg +addSharedPool: aDictionary + Import the given bindings for classes compiled with me as + environment. -hash - Answer an hash value for the receiver. This is the same as the - object's #identityHash. +import: aDictionary + Import the given bindings for classes compiled with me as + environment. + +removeSharedPool: aDictionary + Remove aDictionary from my list of direct pools. + +sharedPoolDictionaries + Answer the shared pools (not names) imported for my classes.  -File: gst-base.info, Node: AbstractNamespace-copying, Next: AbstractNamespace-namespace hierarchy, Prev: AbstractNamespace-basic & copying, Up: AbstractNamespace +File: gst-base.info, Node: AbstractNamespace-copying, Next: AbstractNamespace-namespace hierarchy, Prev: AbstractNamespace-compiling, Up: AbstractNamespace 1.1.4 AbstractNamespace: copying -------------------------------- @@ -610,9 +621,6 @@ allSubspacesDo: aBlock Invokes aBlock for all subspaces, both direct and indirect. -allSuperspaces - Answer all the receiver's superspaces in a collection - allSuperspacesDo: aBlock Evaluate aBlock once for each of the receiver's superspaces @@ -628,10 +636,6 @@ require aString to be interned but (unlike #includesClassNamed:) returns true even if the global is not a class object. -inheritsFrom: aNamespace - Answer whether aNamespace is one of the receiver's direct and - indirect superspaces - removeSubspace: aSymbol Remove my subspace named aSymbol from the hierarchy. @@ -670,13 +674,6 @@ Invokes aBlock for the receiver and all subclasses, both direct and indirect. -withAllSuperspaces - Answer the receiver and all of its superspaces in a collection - -withAllSuperspacesDo: aBlock - Invokes aBlock for the receiver and all superspaces, both direct - and indirect. -  File: gst-base.info, Node: AbstractNamespace-overrides for superspaces, Next: AbstractNamespace-printing, Prev: AbstractNamespace-namespace hierarchy, Up: AbstractNamespace @@ -684,24 +681,6 @@ 1.1.6 AbstractNamespace: overrides for superspaces -------------------------------------------------- -definedKeys - Answer a kind of Set containing the keys of the receiver - -definesKey: key - Answer whether the receiver defines the given key. `Defines' means - that the receiver's superspaces, if any, are not considered. - -hereAt: key - Return the value associated to the variable named as specified by - `key' *in this namespace*. If the key is not found search will - *not* be carried on in superspaces and the method will fail. - -hereAt: key ifAbsent: aBlock - Return the value associated to the variable named as specified by - `key' *in this namespace*. If the key is not found search will - *not* be carried on in superspaces and aBlock will be immediately - evaluated. - inheritedKeys Answer a Set of all the keys in the receiver and its superspaces @@ -864,12 +843,13 @@ * Menu: * Array class-instance creation:: (class) +* Array-built ins:: (instance) * Array-mutating objects:: (instance) * Array-printing:: (instance) * Array-testing:: (instance)  -File: gst-base.info, Node: Array class-instance creation, Next: Array-mutating objects, Up: Array +File: gst-base.info, Node: Array class-instance creation, Next: Array-built ins, Up: Array 1.4.1 Array class: instance creation ------------------------------------ @@ -880,9 +860,21 @@  -File: gst-base.info, Node: Array-mutating objects, Next: Array-printing, Prev: Array class-instance creation, Up: Array +File: gst-base.info, Node: Array-built ins, Next: Array-mutating objects, Prev: Array class-instance creation, Up: Array + +1.4.2 Array: built ins +---------------------- + +replaceFrom: start to: stop with: byteArray startingAt: replaceStart + Replace the characters from start to stop with new characters whose + ASCII codes are contained in byteArray, starting at the + replaceStart location of byteArray -1.4.2 Array: mutating objects + + +File: gst-base.info, Node: Array-mutating objects, Next: Array-printing, Prev: Array-built ins, Up: Array + +1.4.3 Array: mutating objects ----------------------------- multiBecome: anArray @@ -893,7 +885,7 @@  File: gst-base.info, Node: Array-printing, Next: Array-testing, Prev: Array-mutating objects, Up: Array -1.4.3 Array: printing +1.4.4 Array: printing --------------------- isLiteralObject @@ -912,7 +904,7 @@  File: gst-base.info, Node: Array-testing, Prev: Array-printing, Up: Array -1.4.4 Array: testing +1.4.5 Array: testing -------------------- isArray @@ -940,7 +932,6 @@ * ArrayedCollection-built ins:: (instance) * ArrayedCollection-copying Collections:: (instance) * ArrayedCollection-enumerating the elements of a collection:: (instance) -* ArrayedCollection-enumeration:: (instance) * ArrayedCollection-storing:: (instance) * ArrayedCollection-streams:: (instance) @@ -1072,7 +1063,7 @@  -File: gst-base.info, Node: ArrayedCollection-enumerating the elements of a collection, Next: ArrayedCollection-enumeration, Prev: ArrayedCollection-copying Collections, Up: ArrayedCollection +File: gst-base.info, Node: ArrayedCollection-enumerating the elements of a collection, Next: ArrayedCollection-storing, Prev: ArrayedCollection-copying Collections, Up: ArrayedCollection 1.5.5 ArrayedCollection: enumerating the elements of a collection ----------------------------------------------------------------- @@ -1099,22 +1090,9 @@  -File: gst-base.info, Node: ArrayedCollection-enumeration, Next: ArrayedCollection-storing, Prev: ArrayedCollection-enumerating the elements of a collection, Up: ArrayedCollection - -1.5.6 ArrayedCollection: enumeration ------------------------------------- - -gather: aBlock - Answer a new instance of a Collection containing all the results - of evaluating aBlock, joined together. aBlock should return - collections. The result is the same kind of the receiver, - independent of the type of collection returned by aBlock. - - - -File: gst-base.info, Node: ArrayedCollection-storing, Next: ArrayedCollection-streams, Prev: ArrayedCollection-enumeration, Up: ArrayedCollection +File: gst-base.info, Node: ArrayedCollection-storing, Next: ArrayedCollection-streams, Prev: ArrayedCollection-enumerating the elements of a collection, Up: ArrayedCollection -1.5.7 ArrayedCollection: storing +1.5.6 ArrayedCollection: storing -------------------------------- storeOn: aStream @@ -1124,7 +1102,7 @@  File: gst-base.info, Node: ArrayedCollection-streams, Prev: ArrayedCollection-storing, Up: ArrayedCollection -1.5.8 ArrayedCollection: streams +1.5.7 ArrayedCollection: streams -------------------------------- writeStream @@ -1500,9 +1478,13 @@ allInstances Returns a set of all instances of the receiver +allSharedPoolDictionaries + Return the shared pools defined by the class and any of its + superclasses, in the correct search order. + allSharedPools Return the names of the shared pools defined by the class and any - of its superclasses + of its superclasses, in the correct search order. classPool Answer the class pool dictionary. Since Behavior does not support @@ -1676,6 +1658,10 @@ The methods are put in the category identified by the parameter. +poolResolution + Answer a PoolResolution class to be used for resolving pool + variables while compiling methods on this class. +  File: gst-base.info, Node: Behavior-creating a class hierarchy, Next: Behavior-enumerating, Prev: Behavior-compiling methods, Up: Behavior @@ -1976,6 +1962,10 @@ 1.9.17 Behavior: still unclassified ----------------------------------- +allSharedPoolDictionariesDo: aBlock + Answer the shared pools visible from methods in the metaclass, in + the correct search order. + parseNodeAt: selector Available only when the Parser package is loaded-Answer an RBMethodNode that compiles to my method named by selector. @@ -2159,13 +2149,14 @@ * Menu: * BindingDictionary-accessing:: (instance) +* BindingDictionary-basic & copying:: (instance) * BindingDictionary-copying:: (instance) * BindingDictionary-forward declarations:: (instance) * BindingDictionary-printing:: (instance) * BindingDictionary-testing:: (instance)  -File: gst-base.info, Node: BindingDictionary-accessing, Next: BindingDictionary-copying, Up: BindingDictionary +File: gst-base.info, Node: BindingDictionary-accessing, Next: BindingDictionary-basic & copying, Up: BindingDictionary 1.10.1 BindingDictionary: accessing ----------------------------------- @@ -2211,9 +2202,25 @@  -File: gst-base.info, Node: BindingDictionary-copying, Next: BindingDictionary-forward declarations, Prev: BindingDictionary-accessing, Up: BindingDictionary +File: gst-base.info, Node: BindingDictionary-basic & copying, Next: BindingDictionary-copying, Prev: BindingDictionary-accessing, Up: BindingDictionary + +1.10.2 BindingDictionary: basic & copying +----------------------------------------- + += arg + Answer whether the receiver is equal to arg. The equality test is + by default the same as that for equal objects. = must not fail; + answer false if the receiver cannot be compared to arg + +hash + Answer an hash value for the receiver. This is the same as the + object's #identityHash. + + + +File: gst-base.info, Node: BindingDictionary-copying, Next: BindingDictionary-forward declarations, Prev: BindingDictionary-basic & copying, Up: BindingDictionary -1.10.2 BindingDictionary: copying +1.10.3 BindingDictionary: copying --------------------------------- copy @@ -2240,7 +2247,7 @@  File: gst-base.info, Node: BindingDictionary-forward declarations, Next: BindingDictionary-printing, Prev: BindingDictionary-copying, Up: BindingDictionary -1.10.3 BindingDictionary: forward declarations +1.10.4 BindingDictionary: forward declarations ---------------------------------------------- at: key put: value @@ -2252,7 +2259,7 @@  File: gst-base.info, Node: BindingDictionary-printing, Next: BindingDictionary-testing, Prev: BindingDictionary-forward declarations, Up: BindingDictionary -1.10.4 BindingDictionary: printing +1.10.5 BindingDictionary: printing ---------------------------------- printOn: aStream in: aNamespace @@ -2263,7 +2270,7 @@  File: gst-base.info, Node: BindingDictionary-testing, Prev: BindingDictionary-printing, Up: BindingDictionary -1.10.5 BindingDictionary: testing +1.10.6 BindingDictionary: testing --------------------------------- species @@ -2396,6 +2403,18 @@ 1.11.4 BlockClosure: built ins ------------------------------ +cull: arg1 + Evaluate the receiver, passing arg1 as the only parameter if the + receiver has parameters. + +cull: arg1 cull: arg2 + Evaluate the receiver, passing arg1 and arg2 as parameters if the + receiver accepts them. + +cull: arg1 cull: arg2 cull: arg3 + Evaluate the receiver, passing arg1, arg2 and arg3 as parameters if + the receiver accepts them. + value Evaluate the receiver passing no parameters @@ -2496,9 +2515,7 @@ forkWithoutPreemption Evaluate the receiver in a process that cannot be preempted. If - the receiver expect a parameter, pass the current process (can be - useful for queuing interrupts from within the uninterruptible - process). + the receiver expect a parameter, pass the current process. newProcess Create a new process executing the receiver in suspended state. @@ -2797,7 +2814,7 @@  -File: gst-base.info, Node: ByteArray, Next: ByteStream, Prev: Boolean, Up: Base classes +File: gst-base.info, Node: ByteArray, Next: CAggregate, Prev: Boolean, Up: Base classes 1.14 ByteArray ============== @@ -2812,13 +2829,14 @@ * Menu: * ByteArray class-instance creation:: (class) +* ByteArray-basic:: (instance) * ByteArray-built ins:: (instance) * ByteArray-converting:: (instance) * ByteArray-more advanced accessing:: (instance) * ByteArray-storing:: (instance)  -File: gst-base.info, Node: ByteArray class-instance creation, Next: ByteArray-built ins, Up: ByteArray +File: gst-base.info, Node: ByteArray class-instance creation, Next: ByteArray-basic, Up: ByteArray 1.14.1 ByteArray class: instance creation ----------------------------------------- @@ -2829,9 +2847,19 @@  -File: gst-base.info, Node: ByteArray-built ins, Next: ByteArray-converting, Prev: ByteArray class-instance creation, Up: ByteArray +File: gst-base.info, Node: ByteArray-basic, Next: ByteArray-built ins, Prev: ByteArray class-instance creation, Up: ByteArray + +1.14.2 ByteArray: basic +----------------------- + += aCollection + Answer whether the receiver's items match those in aCollection + + + +File: gst-base.info, Node: ByteArray-built ins, Next: ByteArray-converting, Prev: ByteArray-basic, Up: ByteArray -1.14.2 ByteArray: built ins +1.14.3 ByteArray: built ins --------------------------- asCData: aCType @@ -2847,11 +2875,6 @@ hash Answer an hash value for the receiver -primReplaceFrom: start to: stop with: aByteArray startingAt: srcIndex - Private - Replace the characters from start to stop with the ASCII - codes contained in aString (which, actually, can be any variable - byte class), starting at the srcIndex location of aString - replaceFrom: start to: stop with: aByteArray startingAt: replaceStart Replace the characters from start to stop with the bytes contained in aByteArray (which, actually, can be any variable byte class), @@ -2866,7 +2889,7 @@  File: gst-base.info, Node: ByteArray-converting, Next: ByteArray-more advanced accessing, Prev: ByteArray-built ins, Up: ByteArray -1.14.3 ByteArray: converting +1.14.4 ByteArray: converting ---------------------------- asString @@ -2882,7 +2905,7 @@  File: gst-base.info, Node: ByteArray-more advanced accessing, Next: ByteArray-storing, Prev: ByteArray-converting, Up: ByteArray -1.14.4 ByteArray: more advanced accessing +1.14.5 ByteArray: more advanced accessing ----------------------------------------- charAt: index @@ -3052,7 +3075,7 @@  File: gst-base.info, Node: ByteArray-storing, Prev: ByteArray-more advanced accessing, Up: ByteArray -1.14.5 ByteArray: storing +1.14.6 ByteArray: storing ------------------------- isLiteralObject @@ -3066,99 +3089,9 @@  -File: gst-base.info, Node: ByteStream, Next: CAggregate, Prev: ByteArray, Up: Base classes - -1.15 ByteStream -=============== - -Defined in namespace Smalltalk -Superclass: ReadWriteStream -Category: Streams-Collections - My instances are read/write streams specially crafted for - ByteArrays. They are able to write binary data to them. - -* Menu: - -* ByteStream-basic:: (instance) - - -File: gst-base.info, Node: ByteStream-basic, Up: ByteStream - -1.15.1 ByteStream: basic ------------------------- - -next - Return the next *character* in the ByteArray - -nextByte - Return the next byte in the byte array - -nextByteArray: numBytes - Return the next numBytes bytes in the byte array - -nextDouble - Return the next 64-bit float in the byte array - -nextFloat - Return the next 32-bit float in the byte array - -nextLong - Return the next 4 bytes in the byte array, interpreted as a 32 bit - signed int - -nextLongLong - Return the next 8 bytes in the byte array, interpreted as a 64 bit - signed int - -nextPut: aChar - Store aChar on the byte array - -nextPutByte: anInteger - Store anInteger (range: -128..255) on the byte array - -nextPutByteArray: aByteArray - Store aByteArray on the byte array - -nextPutDouble: aDouble - Store aDouble as a 64-bit float in the byte array - -nextPutFloat: aFloat - Return the next 32-bit float in the byte array - -nextPutInt64: anInteger - Store anInteger (range: -2^63..2^64-1) on the byte array as 4 bytes - -nextPutLong: anInteger - Store anInteger (range: -2^31..2^32-1) on the byte array as 4 bytes - -nextPutShort: anInteger - Store anInteger (range: -32768..65535) on the byte array as 2 bytes - -nextShort - Return the next 2 bytes in the byte array, interpreted as a 16 bit - signed int - -nextSignedByte - Return the next byte in the byte array, interpreted as a 8 bit - signed number - -nextUint64 - Return the next 8 bytes in the byte array, interpreted as a 64 bit - unsigned int - -nextUlong - Return the next 4 bytes in the byte array, interpreted as a 32 bit - unsigned int - -nextUshort - Return the next 2 bytes in the byte array, interpreted as a 16 bit - unsigned int - - - -File: gst-base.info, Node: CAggregate, Next: CallinProcess, Prev: ByteStream, Up: Base classes +File: gst-base.info, Node: CAggregate, Next: CallinProcess, Prev: ByteArray, Up: Base classes -1.16 CAggregate +1.15 CAggregate =============== Defined in namespace Smalltalk @@ -3173,7 +3106,7 @@  File: gst-base.info, Node: CAggregate class-accessing, Next: CAggregate-accessing, Up: CAggregate -1.16.1 CAggregate class: accessing +1.15.1 CAggregate class: accessing ---------------------------------- alignof @@ -3186,7 +3119,7 @@  File: gst-base.info, Node: CAggregate-accessing, Prev: CAggregate class-accessing, Up: CAggregate -1.16.2 CAggregate: accessing +1.15.2 CAggregate: accessing ---------------------------- elementType @@ -3196,7 +3129,7 @@  File: gst-base.info, Node: CallinProcess, Next: CArray, Prev: CAggregate, Up: Base classes -1.17 CallinProcess +1.16 CallinProcess ================== Defined in namespace Smalltalk @@ -3213,7 +3146,7 @@  File: gst-base.info, Node: CArray, Next: CArrayCType, Prev: CallinProcess, Up: Base classes -1.18 CArray +1.17 CArray =========== Defined in namespace Smalltalk @@ -3227,7 +3160,7 @@  File: gst-base.info, Node: CArray-accessing, Up: CArray -1.18.1 CArray: accessing +1.17.1 CArray: accessing ------------------------ alignof @@ -3240,7 +3173,7 @@  File: gst-base.info, Node: CArrayCType, Next: CBoolean, Prev: CArray, Up: Base classes -1.19 CArrayCType +1.18 CArrayCType ================ Defined in namespace Smalltalk @@ -3256,7 +3189,7 @@  File: gst-base.info, Node: CArrayCType class-instance creation, Next: CArrayCType-accessing, Up: CArrayCType -1.19.1 CArrayCType class: instance creation +1.18.1 CArrayCType class: instance creation ------------------------------------------- elementType: aCType @@ -3276,7 +3209,7 @@  File: gst-base.info, Node: CArrayCType-accessing, Next: CArrayCType-storing, Prev: CArrayCType class-instance creation, Up: CArrayCType -1.19.2 CArrayCType: accessing +1.18.2 CArrayCType: accessing ----------------------------- alignof @@ -3292,7 +3225,7 @@  File: gst-base.info, Node: CArrayCType-storing, Prev: CArrayCType-accessing, Up: CArrayCType -1.19.3 CArrayCType: storing +1.18.3 CArrayCType: storing --------------------------- storeOn: aStream @@ -3302,7 +3235,7 @@  File: gst-base.info, Node: CBoolean, Next: CByte, Prev: CArrayCType, Up: Base classes -1.20 CBoolean +1.19 CBoolean ============= Defined in namespace Smalltalk @@ -3317,7 +3250,7 @@  File: gst-base.info, Node: CBoolean-accessing, Up: CBoolean -1.20.1 CBoolean: accessing +1.19.1 CBoolean: accessing -------------------------- value @@ -3330,9 +3263,9 @@  -File: gst-base.info, Node: CByte, Next: CChar, Prev: CBoolean, Up: Base classes +File: gst-base.info, Node: CByte, Next: CCallable, Prev: CBoolean, Up: Base classes -1.21 CByte +1.20 CByte ========== Defined in namespace Smalltalk @@ -3348,7 +3281,7 @@  File: gst-base.info, Node: CByte class-conversion, Next: CByte-accessing, Up: CByte -1.21.1 CByte class: conversion +1.20.1 CByte class: conversion ------------------------------ cObjStoredType @@ -3362,7 +3295,7 @@  File: gst-base.info, Node: CByte-accessing, Prev: CByte class-conversion, Up: CByte -1.21.2 CByte: accessing +1.20.2 CByte: accessing ----------------------- cObjStoredType @@ -3377,9 +3310,159 @@  -File: gst-base.info, Node: CChar, Next: CCompound, Prev: CByte, Up: Base classes +File: gst-base.info, Node: CCallable, Next: CCallbackDescriptor, Prev: CByte, Up: Base classes + +1.21 CCallable +============== + +Defined in namespace Smalltalk +Superclass: CObject +Category: Language-C interface + I am not part of the Smalltalk definition. My instances contain + information about C functions that can be called from within + Smalltalk, such as number and type of parameters. This + information is used by the C callout mechanism to perform the + actual call-out to C routines. + +* Menu: + +* CCallable class-instance creation:: (class) +* CCallable-accessing:: (instance) +* CCallable-calling:: (instance) +* CCallable-restoring:: (instance) + + +File: gst-base.info, Node: CCallable class-instance creation, Next: CCallable-accessing, Up: CCallable + +1.21.1 CCallable class: instance creation +----------------------------------------- + +for: aCObject returning: returnTypeSymbol withArgs: argsArray + Answer a CFunctionDescriptor with the given address, return type + and arguments. The address will be reset to NULL upon image save + (and it's the user's task to figure out a way to reinitialize it!) + + + +File: gst-base.info, Node: CCallable-accessing, Next: CCallable-calling, Prev: CCallable class-instance creation, Up: CCallable + +1.21.2 CCallable: accessing +--------------------------- + +isValid + Answer whether the object represents a valid function. + +returnType + Not commented. + + + +File: gst-base.info, Node: CCallable-calling, Next: CCallable-restoring, Prev: CCallable-accessing, Up: CCallable + +1.21.3 CCallable: calling +------------------------- + +asyncCall + Perform the call-out for the function represented by the receiver. + The arguments (and the receiver if one of the arguments has type + #self or #selfSmalltalk) are taken from the parent context. + Asynchronous call-outs don't return a value, but if the function + calls back into Smalltalk the process that started the call-out is + not suspended. + +asyncCallNoRetryFrom: aContext + Perform the call-out for the function represented by the receiver. + The arguments (and the receiver if one of the arguments has type + #self or #selfSmalltalk) are taken from the base of the stack of + aContext. Asynchronous call-outs don't return a value, but if the + function calls back into Smalltalk the process that started the + call-out is not suspended. Unlike #asyncCallFrom:, this method + does not attempt to find functions in shared objects. + +callInto: aValueHolder + Perform the call-out for the function represented by the receiver. + The arguments (and the receiver if one of the arguments has type + #self or #selfSmalltalk) are taken from the parent context, and the + the result is stored into aValueHolder. aValueHolder is also + returned. + +callNoRetryFrom: aContext into: aValueHolder + Perform the call-out for the function represented by the receiver. + The arguments (and the receiver if one of the arguments has type + #self or #selfSmalltalk) are taken from the base of the stack of + aContext, and the result is stored into aValueHolder. aValueHolder + is also returned. Unlike #callFrom:into:, this method does not + attempt to find functions in shared objects. + + + +File: gst-base.info, Node: CCallable-restoring, Prev: CCallable-calling, Up: CCallable + +1.21.4 CCallable: restoring +--------------------------- + +link + Rebuild the object after the image is restarted. + + + +File: gst-base.info, Node: CCallbackDescriptor, Next: CChar, Prev: CCallable, Up: Base classes + +1.22 CCallbackDescriptor +======================== + +Defined in namespace Smalltalk +Superclass: CCallable +Category: Language-C interface + I am not part of the Smalltalk definition. My instances are able + to convert blocks into C functions that can be passed to C. + +* Menu: + +* CCallbackDescriptor class-instance creation:: (class) +* CCallbackDescriptor-accessing:: (instance) +* CCallbackDescriptor-restoring:: (instance) + + +File: gst-base.info, Node: CCallbackDescriptor class-instance creation, Next: CCallbackDescriptor-accessing, Up: CCallbackDescriptor + +1.22.1 CCallbackDescriptor class: instance creation +--------------------------------------------------- + +for: aBlock returning: returnTypeSymbol withArgs: argsArray + Answer a CFunctionDescriptor with the given function name, return + type and arguments. funcName must be a String. + + + +File: gst-base.info, Node: CCallbackDescriptor-accessing, Next: CCallbackDescriptor-restoring, Prev: CCallbackDescriptor class-instance creation, Up: CCallbackDescriptor + +1.22.2 CCallbackDescriptor: accessing +------------------------------------- + +block + Answer the name of the function (on the C side) represented by the + receiver + +block: aBlock + Set the name of the function (on the C side) represented by the + receiver + -1.22 CChar + +File: gst-base.info, Node: CCallbackDescriptor-restoring, Prev: CCallbackDescriptor-accessing, Up: CCallbackDescriptor + +1.22.3 CCallbackDescriptor: restoring +------------------------------------- + +link + Make the address of the function point to the registered address. + + + +File: gst-base.info, Node: CChar, Next: CCompound, Prev: CCallbackDescriptor, Up: Base classes + +1.23 CChar ========== Defined in namespace Smalltalk @@ -3395,7 +3478,7 @@  File: gst-base.info, Node: CChar class-accessing, Next: CChar-accessing, Up: CChar -1.22.1 CChar class: accessing +1.23.1 CChar class: accessing ----------------------------- alignof @@ -3412,7 +3495,7 @@  File: gst-base.info, Node: CChar-accessing, Next: CChar-conversion, Prev: CChar class-accessing, Up: CChar -1.22.2 CChar: accessing +1.23.2 CChar: accessing ----------------------- alignof @@ -3428,7 +3511,7 @@  File: gst-base.info, Node: CChar-conversion, Prev: CChar-accessing, Up: CChar -1.22.3 CChar: conversion +1.23.3 CChar: conversion ------------------------ asByteArray: size @@ -3445,7 +3528,7 @@  File: gst-base.info, Node: CCompound, Next: CDouble, Prev: CChar, Up: Base classes -1.23 CCompound +1.24 CCompound ============== Defined in namespace Smalltalk @@ -3461,9 +3544,13 @@  File: gst-base.info, Node: CCompound class-instance creation, Next: CCompound class-subclass creation, Up: CCompound -1.23.1 CCompound class: instance creation +1.24.1 CCompound class: instance creation ----------------------------------------- +gcNew + Allocate a new instance of the receiver, backed by + garbage-collected storage. + new Allocate a new instance of the receiver. To free the memory after GC, remember to call #addToBeFinalized. @@ -3472,7 +3559,7 @@  File: gst-base.info, Node: CCompound class-subclass creation, Next: CCompound-instance creation, Prev: CCompound class-instance creation, Up: CCompound -1.23.2 CCompound class: subclass creation +1.24.2 CCompound class: subclass creation ----------------------------------------- alignof @@ -3518,7 +3605,7 @@  File: gst-base.info, Node: CCompound-instance creation, Prev: CCompound class-subclass creation, Up: CCompound -1.23.3 CCompound: instance creation +1.24.3 CCompound: instance creation ----------------------------------- inspect @@ -3532,7 +3619,7 @@  File: gst-base.info, Node: CDouble, Next: CFloat, Prev: CCompound, Up: Base classes -1.24 CDouble +1.25 CDouble ============ Defined in namespace Smalltalk @@ -3547,7 +3634,7 @@  File: gst-base.info, Node: CDouble class-accessing, Next: CDouble-accessing, Up: CDouble -1.24.1 CDouble class: accessing +1.25.1 CDouble class: accessing ------------------------------- alignof @@ -3564,7 +3651,7 @@  File: gst-base.info, Node: CDouble-accessing, Prev: CDouble class-accessing, Up: CDouble -1.24.2 CDouble: accessing +1.25.2 CDouble: accessing ------------------------- alignof @@ -3580,7 +3667,7 @@  File: gst-base.info, Node: CFloat, Next: CFunctionDescriptor, Prev: CDouble, Up: Base classes -1.25 CFloat +1.26 CFloat =========== Defined in namespace Smalltalk @@ -3595,7 +3682,7 @@  File: gst-base.info, Node: CFloat class-accessing, Next: CFloat-accessing, Up: CFloat -1.25.1 CFloat class: accessing +1.26.1 CFloat class: accessing ------------------------------ alignof @@ -3612,7 +3699,7 @@  File: gst-base.info, Node: CFloat-accessing, Prev: CFloat class-accessing, Up: CFloat -1.25.2 CFloat: accessing +1.26.2 CFloat: accessing ------------------------ alignof @@ -3628,11 +3715,11 @@  File: gst-base.info, Node: CFunctionDescriptor, Next: Character, Prev: CFloat, Up: Base classes -1.26 CFunctionDescriptor +1.27 CFunctionDescriptor ======================== Defined in namespace Smalltalk -Superclass: Object +Superclass: CCallable Category: Language-C interface I am not part of the Smalltalk definition. My instances contain information about C functions that can be called from within @@ -3645,23 +3732,24 @@ * CFunctionDescriptor class-instance creation:: (class) * CFunctionDescriptor class-testing:: (class) * CFunctionDescriptor-accessing:: (instance) -* CFunctionDescriptor-calling:: (instance) * CFunctionDescriptor-printing:: (instance) +* CFunctionDescriptor-restoring:: (instance)  File: gst-base.info, Node: CFunctionDescriptor class-instance creation, Next: CFunctionDescriptor class-testing, Up: CFunctionDescriptor -1.26.1 CFunctionDescriptor class: instance creation +1.27.1 CFunctionDescriptor class: instance creation --------------------------------------------------- -for: funcNameString returning: returnTypeSymbol withArgs: argsArray - Private - Answer a CFunctionDescriptor +for: funcName returning: returnTypeSymbol withArgs: argsArray + Answer a CFunctionDescriptor with the given function name, return + type and arguments. funcName must be a String.  File: gst-base.info, Node: CFunctionDescriptor class-testing, Next: CFunctionDescriptor-accessing, Prev: CFunctionDescriptor class-instance creation, Up: CFunctionDescriptor -1.26.2 CFunctionDescriptor class: testing +1.27.2 CFunctionDescriptor class: testing ----------------------------------------- addressOf: function @@ -3674,81 +3762,44 @@  -File: gst-base.info, Node: CFunctionDescriptor-accessing, Next: CFunctionDescriptor-calling, Prev: CFunctionDescriptor class-testing, Up: CFunctionDescriptor +File: gst-base.info, Node: CFunctionDescriptor-accessing, Next: CFunctionDescriptor-printing, Prev: CFunctionDescriptor class-testing, Up: CFunctionDescriptor -1.26.3 CFunctionDescriptor: accessing +1.27.3 CFunctionDescriptor: accessing ------------------------------------- -address - Answer the address (CObject) of the function represented by the - receiver - -address: aCObject - Set to aCObject the address of the function represented by the - receiver - -isValid - Answer whether the function represented by the receiver is actually - a registered one - name Answer the name of the function (on the C side) represented by the receiver +name: aString + Set the name of the function (on the C side) represented by the + receiver - -File: gst-base.info, Node: CFunctionDescriptor-calling, Next: CFunctionDescriptor-printing, Prev: CFunctionDescriptor-accessing, Up: CFunctionDescriptor - -1.26.4 CFunctionDescriptor: calling ------------------------------------ - -asyncCall - Perform the call-out for the function represented by the receiver. - The arguments (and the receiver if one of the arguments has type - #self or #selfSmalltalk) are taken from the parent context. - Asynchronous call-outs don't return a value, but if the function - calls back into Smalltalk the process that started the call-out is - not suspended. -asyncCallNoRetryFrom: aContext - Perform the call-out for the function represented by the receiver. - The arguments (and the receiver if one of the arguments has type - #self or #selfSmalltalk) are taken from the base of the stack of - aContext. Asynchronous call-outs don't return a value, but if the - function calls back into Smalltalk the process that started the - call-out is not suspended. Unlike #asyncCallFrom:, this method - does not attempt to find functions in shared objects. + +File: gst-base.info, Node: CFunctionDescriptor-printing, Next: CFunctionDescriptor-restoring, Prev: CFunctionDescriptor-accessing, Up: CFunctionDescriptor -callInto: aValueHolder - Perform the call-out for the function represented by the receiver. - The arguments (and the receiver if one of the arguments has type - #self or #selfSmalltalk) are taken from the parent context, and the - the result is stored into aValueHolder. aValueHolder is also - returned. +1.27.4 CFunctionDescriptor: printing +------------------------------------ -callNoRetryFrom: aContext into: aValueHolder - Perform the call-out for the function represented by the receiver. - The arguments (and the receiver if one of the arguments has type - #self or #selfSmalltalk) are taken from the base of the stack of - aContext, and the result is stored into aValueHolder. aValueHolder - is also returned. Unlike #callFrom:into:, this method does not - attempt to find functions in shared objects. +printOn: aStream + Print a representation of the receiver onto aStream  -File: gst-base.info, Node: CFunctionDescriptor-printing, Prev: CFunctionDescriptor-calling, Up: CFunctionDescriptor +File: gst-base.info, Node: CFunctionDescriptor-restoring, Prev: CFunctionDescriptor-printing, Up: CFunctionDescriptor -1.26.5 CFunctionDescriptor: printing ------------------------------------- +1.27.5 CFunctionDescriptor: restoring +------------------------------------- -printOn: aStream - Print a representation of the receiver onto aStream +link + Make the address of the function point to the registered address.  File: gst-base.info, Node: Character, Next: CharacterArray, Prev: CFunctionDescriptor, Up: Base classes -1.27 Character +1.28 Character ============== Defined in namespace Smalltalk @@ -3784,7 +3835,7 @@  File: gst-base.info, Node: Character class-built ins, Next: Character class-constants, Up: Character -1.27.1 Character class: built ins +1.28.1 Character class: built ins --------------------------------- asciiValue: anInteger @@ -3804,7 +3855,7 @@  File: gst-base.info, Node: Character class-constants, Next: Character class-initializing lookup tables, Prev: Character class-built ins, Up: Character -1.27.2 Character class: constants +1.28.2 Character class: constants --------------------------------- backspace @@ -3847,7 +3898,7 @@  File: gst-base.info, Node: Character class-initializing lookup tables, Next: Character class-instance creation, Prev: Character class-constants, Up: Character -1.27.3 Character class: initializing lookup tables +1.28.3 Character class: initializing lookup tables -------------------------------------------------- initialize @@ -3862,7 +3913,7 @@  File: gst-base.info, Node: Character class-instance creation, Next: Character class-testing, Prev: Character class-initializing lookup tables, Up: Character -1.27.4 Character class: instance creation +1.28.4 Character class: instance creation ----------------------------------------- digitValue: anInteger @@ -3873,7 +3924,7 @@  File: gst-base.info, Node: Character class-testing, Next: Character-built ins, Prev: Character class-instance creation, Up: Character -1.27.5 Character class: testing +1.28.5 Character class: testing ------------------------------- isImmediate @@ -3883,7 +3934,7 @@  File: gst-base.info, Node: Character-built ins, Next: Character-coercion methods, Prev: Character class-testing, Up: Character -1.27.6 Character: built ins +1.28.6 Character: built ins --------------------------- = char @@ -3909,9 +3960,12 @@  File: gst-base.info, Node: Character-coercion methods, Next: Character-comparing, Prev: Character-built ins, Up: Character -1.27.7 Character: coercion methods +1.28.7 Character: coercion methods ---------------------------------- +* aNumber + Returns a String with aNumber occurrences of the receiver. + asLowercase Returns self as a lowercase character if it's an uppercase letter, otherwise returns the character unchanged. @@ -3934,7 +3988,7 @@  File: gst-base.info, Node: Character-comparing, Next: Character-converting, Prev: Character-coercion methods, Up: Character -1.27.8 Character: comparing +1.28.8 Character: comparing --------------------------- < aCharacter @@ -3957,7 +4011,7 @@  File: gst-base.info, Node: Character-converting, Next: Character-printing, Prev: Character-comparing, Up: Character -1.27.9 Character: converting +1.28.9 Character: converting ---------------------------- asCharacter @@ -3971,7 +4025,7 @@  File: gst-base.info, Node: Character-printing, Next: Character-storing, Prev: Character-converting, Up: Character -1.27.10 Character: printing +1.28.10 Character: printing --------------------------- displayOn: aStream @@ -3988,7 +4042,7 @@  File: gst-base.info, Node: Character-storing, Next: Character-testing, Prev: Character-printing, Up: Character -1.27.11 Character: storing +1.28.11 Character: storing -------------------------- isLiteralObject @@ -4001,7 +4055,7 @@  File: gst-base.info, Node: Character-testing, Next: Character-testing functionality, Prev: Character-storing, Up: Character -1.27.12 Character: testing +1.28.12 Character: testing -------------------------- isAlphaNumeric @@ -4040,7 +4094,7 @@  File: gst-base.info, Node: Character-testing functionality, Prev: Character-testing, Up: Character -1.27.13 Character: testing functionality +1.28.13 Character: testing functionality ---------------------------------------- isCharacter @@ -4050,7 +4104,7 @@  File: gst-base.info, Node: CharacterArray, Next: CInt, Prev: Character, Up: Base classes -1.28 CharacterArray +1.29 CharacterArray =================== Defined in namespace Smalltalk @@ -4073,7 +4127,7 @@  File: gst-base.info, Node: CharacterArray class-basic, Next: CharacterArray class-multibyte encodings, Up: CharacterArray -1.28.1 CharacterArray class: basic +1.29.1 CharacterArray class: basic ---------------------------------- fromString: aCharacterArray @@ -4088,7 +4142,7 @@  File: gst-base.info, Node: CharacterArray class-multibyte encodings, Next: CharacterArray-built ins, Prev: CharacterArray class-basic, Up: CharacterArray -1.28.2 CharacterArray class: multibyte encodings +1.29.2 CharacterArray class: multibyte encodings ------------------------------------------------ isUnicode @@ -4099,7 +4153,7 @@  File: gst-base.info, Node: CharacterArray-built ins, Next: CharacterArray-comparing, Prev: CharacterArray class-multibyte encodings, Up: CharacterArray -1.28.3 CharacterArray: built ins +1.29.3 CharacterArray: built ins -------------------------------- valueAt: index @@ -4114,7 +4168,7 @@  File: gst-base.info, Node: CharacterArray-comparing, Next: CharacterArray-converting, Prev: CharacterArray-built ins, Up: CharacterArray -1.28.4 CharacterArray: comparing +1.29.4 CharacterArray: comparing -------------------------------- < aCharacterArray @@ -4140,10 +4194,6 @@ is an initial substring of the receiver, it is considered to be less than the receiver. -endsWith: aCharacterArray - Returns true if the receiver ends with the same characters as - aCharacterArray. - indexOf: aCharacterArray matchCase: aBoolean startingAt: anIndex Answer an Interval of indices in the receiver which match the aCharacterArray pattern. # in aCharacterArray means 'match any @@ -4168,15 +4218,11 @@ Returns true if the receiver is the same CharacterArray as aCharacterArray, ignoring case differences. -startsWith: aCharacterArray - Returns true if the receiver starts with the same characters as - aCharacterArray. -  File: gst-base.info, Node: CharacterArray-converting, Next: CharacterArray-multibyte encodings, Prev: CharacterArray-comparing, Up: CharacterArray -1.28.5 CharacterArray: converting +1.29.5 CharacterArray: converting --------------------------------- asByteArray @@ -4232,7 +4278,7 @@  File: gst-base.info, Node: CharacterArray-multibyte encodings, Next: CharacterArray-string processing, Prev: CharacterArray-converting, Up: CharacterArray -1.28.6 CharacterArray: multibyte encodings +1.29.6 CharacterArray: multibyte encodings ------------------------------------------ encoding @@ -4250,7 +4296,7 @@  File: gst-base.info, Node: CharacterArray-string processing, Next: CharacterArray-testing functionality, Prev: CharacterArray-multibyte encodings, Up: CharacterArray -1.28.7 CharacterArray: string processing +1.29.7 CharacterArray: string processing ---------------------------------------- % anArray @@ -4326,7 +4372,7 @@  File: gst-base.info, Node: CharacterArray-testing functionality, Prev: CharacterArray-string processing, Up: CharacterArray -1.28.8 CharacterArray: testing functionality +1.29.8 CharacterArray: testing functionality -------------------------------------------- isCharacterArray @@ -4336,7 +4382,7 @@  File: gst-base.info, Node: CInt, Next: Class, Prev: CharacterArray, Up: Base classes -1.29 CInt +1.30 CInt ========= Defined in namespace Smalltalk @@ -4351,7 +4397,7 @@  File: gst-base.info, Node: CInt class-accessing, Next: CInt-accessing, Up: CInt -1.29.1 CInt class: accessing +1.30.1 CInt class: accessing ---------------------------- alignof @@ -4368,7 +4414,7 @@  File: gst-base.info, Node: CInt-accessing, Prev: CInt class-accessing, Up: CInt -1.29.2 CInt: accessing +1.30.2 CInt: accessing ---------------------- alignof @@ -4384,7 +4430,7 @@  File: gst-base.info, Node: Class, Next: ClassDescription, Prev: CInt, Up: Base classes -1.30 Class +1.31 Class ========== Defined in namespace Smalltalk @@ -4407,13 +4453,14 @@ * Class-printing:: (instance) * Class-saving and loading:: (instance) * Class-security:: (instance) +* Class-still unclassified:: (instance) * Class-testing:: (instance) * Class-testing functionality:: (instance)  File: gst-base.info, Node: Class class-initialize, Next: Class-accessing instances and variables, Up: Class -1.30.1 Class class: initialize +1.31.1 Class class: initialize ------------------------------ initialize @@ -4423,7 +4470,7 @@  File: gst-base.info, Node: Class-accessing instances and variables, Next: Class-filing, Prev: Class class-initialize, Up: Class -1.30.2 Class: accessing instances and variables +1.31.2 Class: accessing instances and variables ----------------------------------------------- addClassVarName: aString @@ -4501,7 +4548,7 @@  File: gst-base.info, Node: Class-filing, Next: Class-instance creation, Prev: Class-accessing instances and variables, Up: Class -1.30.3 Class: filing +1.31.3 Class: filing -------------------- fileOutDeclarationOn: aFileStream @@ -4515,7 +4562,7 @@  File: gst-base.info, Node: Class-instance creation, Next: Class-instance creation - alternative, Prev: Class-filing, Up: Class -1.30.4 Class: instance creation +1.31.4 Class: instance creation ------------------------------- extend @@ -4567,7 +4614,7 @@  File: gst-base.info, Node: Class-instance creation - alternative, Next: Class-pragmas, Prev: Class-instance creation, Up: Class -1.30.5 Class: instance creation - alternative +1.31.5 Class: instance creation - alternative --------------------------------------------- categoriesFor: method are: categories @@ -4601,7 +4648,7 @@  File: gst-base.info, Node: Class-pragmas, Next: Class-printing, Prev: Class-instance creation - alternative, Up: Class -1.30.6 Class: pragmas +1.31.6 Class: pragmas --------------------- pragmaHandlerFor: aSymbol @@ -4617,7 +4664,7 @@  File: gst-base.info, Node: Class-printing, Next: Class-saving and loading, Prev: Class-pragmas, Up: Class -1.30.7 Class: printing +1.31.7 Class: printing ---------------------- article @@ -4633,7 +4680,7 @@  File: gst-base.info, Node: Class-saving and loading, Next: Class-security, Prev: Class-printing, Up: Class -1.30.8 Class: saving and loading +1.31.8 Class: saving and loading -------------------------------- binaryRepresentationVersion @@ -4660,9 +4707,9 @@  -File: gst-base.info, Node: Class-security, Next: Class-testing, Prev: Class-saving and loading, Up: Class +File: gst-base.info, Node: Class-security, Next: Class-still unclassified, Prev: Class-saving and loading, Up: Class -1.30.9 Class: security +1.31.9 Class: security ---------------------- check: aPermission @@ -4676,9 +4723,20 @@  -File: gst-base.info, Node: Class-testing, Next: Class-testing functionality, Prev: Class-security, Up: Class +File: gst-base.info, Node: Class-still unclassified, Next: Class-testing, Prev: Class-security, Up: Class + +1.31.10 Class: still unclassified +--------------------------------- + +allSharedPoolDictionariesDo: aBlock + Answer the shared pools visible from methods in the metaclass, in + the correct search order. + + + +File: gst-base.info, Node: Class-testing, Next: Class-testing functionality, Prev: Class-still unclassified, Up: Class -1.30.10 Class: testing +1.31.11 Class: testing ---------------------- = aClass @@ -4688,7 +4746,7 @@  File: gst-base.info, Node: Class-testing functionality, Prev: Class-testing, Up: Class -1.30.11 Class: testing functionality +1.31.12 Class: testing functionality ------------------------------------ asClass @@ -4701,7 +4759,7 @@  File: gst-base.info, Node: ClassDescription, Next: CLong, Prev: Class, Up: Base classes -1.31 ClassDescription +1.32 ClassDescription ===================== Defined in namespace Smalltalk @@ -4725,7 +4783,7 @@  File: gst-base.info, Node: ClassDescription-compiling, Next: ClassDescription-conversion, Up: ClassDescription -1.31.1 ClassDescription: compiling +1.32.1 ClassDescription: compiling ---------------------------------- compile: code classified: categoryName @@ -4747,7 +4805,7 @@  File: gst-base.info, Node: ClassDescription-conversion, Next: ClassDescription-copying, Prev: ClassDescription-compiling, Up: ClassDescription -1.31.2 ClassDescription: conversion +1.32.2 ClassDescription: conversion ----------------------------------- asClass @@ -4764,7 +4822,7 @@  File: gst-base.info, Node: ClassDescription-copying, Next: ClassDescription-filing, Prev: ClassDescription-conversion, Up: ClassDescription -1.31.3 ClassDescription: copying +1.32.3 ClassDescription: copying -------------------------------- copy: selector from: aClass @@ -4798,7 +4856,7 @@  File: gst-base.info, Node: ClassDescription-filing, Next: ClassDescription-organization of messages and classes, Prev: ClassDescription-copying, Up: ClassDescription -1.31.4 ClassDescription: filing +1.32.4 ClassDescription: filing ------------------------------- fileOut: fileName @@ -4820,7 +4878,7 @@  File: gst-base.info, Node: ClassDescription-organization of messages and classes, Next: ClassDescription-parsing class declarations, Prev: ClassDescription-filing, Up: ClassDescription -1.31.5 ClassDescription: organization of messages and classes +1.32.5 ClassDescription: organization of messages and classes ------------------------------------------------------------- classify: aSelector under: aString @@ -4857,7 +4915,7 @@  File: gst-base.info, Node: ClassDescription-parsing class declarations, Next: ClassDescription-printing, Prev: ClassDescription-organization of messages and classes, Up: ClassDescription -1.31.6 ClassDescription: parsing class declarations +1.32.6 ClassDescription: parsing class declarations --------------------------------------------------- addSharedPool: aDictionary @@ -4872,7 +4930,7 @@  File: gst-base.info, Node: ClassDescription-printing, Next: ClassDescription-still unclassified, Prev: ClassDescription-parsing class declarations, Up: ClassDescription -1.31.7 ClassDescription: printing +1.32.7 ClassDescription: printing --------------------------------- classVariableString @@ -4898,7 +4956,7 @@  File: gst-base.info, Node: ClassDescription-still unclassified, Prev: ClassDescription-printing, Up: ClassDescription -1.31.8 ClassDescription: still unclassified +1.32.8 ClassDescription: still unclassified ------------------------------------------- fileOutCategory: category toStream: aFileStream @@ -4913,7 +4971,7 @@  File: gst-base.info, Node: CLong, Next: CLongDouble, Prev: ClassDescription, Up: Base classes -1.32 CLong +1.33 CLong ========== Defined in namespace Smalltalk @@ -4928,7 +4986,7 @@  File: gst-base.info, Node: CLong class-accessing, Next: CLong-accessing, Up: CLong -1.32.1 CLong class: accessing +1.33.1 CLong class: accessing ----------------------------- alignof @@ -4945,7 +5003,7 @@  File: gst-base.info, Node: CLong-accessing, Prev: CLong class-accessing, Up: CLong -1.32.2 CLong: accessing +1.33.2 CLong: accessing ----------------------- alignof @@ -4961,7 +5019,7 @@  File: gst-base.info, Node: CLongDouble, Next: CObject, Prev: CLong, Up: Base classes -1.33 CLongDouble +1.34 CLongDouble ================ Defined in namespace Smalltalk @@ -4976,7 +5034,7 @@  File: gst-base.info, Node: CLongDouble class-accessing, Next: CLongDouble-accessing, Up: CLongDouble -1.33.1 CLongDouble class: accessing +1.34.1 CLongDouble class: accessing ----------------------------------- alignof @@ -4993,7 +5051,7 @@  File: gst-base.info, Node: CLongDouble-accessing, Prev: CLongDouble class-accessing, Up: CLongDouble -1.33.2 CLongDouble: accessing +1.34.2 CLongDouble: accessing ----------------------------- alignof @@ -5009,7 +5067,7 @@  File: gst-base.info, Node: CObject, Next: Collection, Prev: CLongDouble, Up: Base classes -1.34 CObject +1.35 CObject ============ Defined in namespace Smalltalk @@ -5026,17 +5084,20 @@ * CObject class-conversion:: (class) * CObject class-instance creation:: (class) +* CObject class-primitive allocation:: (class) * CObject class-subclassing:: (class) * CObject-accessing:: (instance) +* CObject-basic:: (instance) * CObject-C data access:: (instance) * CObject-conversion:: (instance) * CObject-finalization:: (instance) * CObject-pointer-like behavior:: (instance) +* CObject-testing functionality:: (instance)  File: gst-base.info, Node: CObject class-conversion, Next: CObject class-instance creation, Up: CObject -1.34.1 CObject class: conversion +1.35.1 CObject class: conversion -------------------------------- type @@ -5045,9 +5106,9 @@  -File: gst-base.info, Node: CObject class-instance creation, Next: CObject class-subclassing, Prev: CObject class-conversion, Up: CObject +File: gst-base.info, Node: CObject class-instance creation, Next: CObject class-primitive allocation, Prev: CObject class-conversion, Up: CObject -1.34.2 CObject class: instance creation +1.35.2 CObject class: instance creation --------------------------------------- address: anInteger @@ -5056,8 +5117,11 @@ alloc: nBytes Allocate nBytes bytes and return an instance of the receiver -alloc: nBytes type: cTypeObject - Allocate nBytes bytes and return a CObject of the given type +gcAlloc: nBytes + Allocate nBytes bytes and return an instance of the receiver + +gcNew: nBytes + Allocate nBytes bytes and return an instance of the receiver new Answer a new object pointing to NULL. @@ -5067,9 +5131,22 @@  -File: gst-base.info, Node: CObject class-subclassing, Next: CObject-accessing, Prev: CObject class-instance creation, Up: CObject +File: gst-base.info, Node: CObject class-primitive allocation, Next: CObject class-subclassing, Prev: CObject class-instance creation, Up: CObject + +1.35.3 CObject class: primitive allocation +------------------------------------------ -1.34.3 CObject class: subclassing +alloc: nBytes type: cTypeObject + Allocate nBytes bytes and return a CObject of the given type + +gcAlloc: nBytes type: cTypeObject + Allocate nBytes bytes and return a CObject of the given type + + + +File: gst-base.info, Node: CObject class-subclassing, Next: CObject-accessing, Prev: CObject class-primitive allocation, Up: CObject + +1.35.4 CObject class: subclassing --------------------------------- subclass: aSymbol @@ -5077,28 +5154,55 @@  -File: gst-base.info, Node: CObject-accessing, Next: CObject-C data access, Prev: CObject class-subclassing, Up: CObject +File: gst-base.info, Node: CObject-accessing, Next: CObject-basic, Prev: CObject class-subclassing, Up: CObject -1.34.4 CObject: accessing +1.35.5 CObject: accessing ------------------------- address - Answer the address the receiver is pointing to. + Answer the address the receiver is pointing to. The address can + be absolute if the storage is nil, or relative to the Smalltalk + object in #storage. In this case, an address of 0 corresponds to + the first instance variable. address: anInteger Set the receiver to point to the passed address, anInteger +isAbsolute + Answer whether the object points into a garbage-collected Smalltalk + storage, or it is an absolute address. + printOn: aStream Print a representation of the receiver +storage + Answer the storage that the receiver is pointing into, or nil if + the address is absolute. + +storage: anObject + Change the receiver to point to the storage of anObject. + type: aCType Set the receiver's type to aCType.  -File: gst-base.info, Node: CObject-C data access, Next: CObject-conversion, Prev: CObject-accessing, Up: CObject +File: gst-base.info, Node: CObject-basic, Next: CObject-C data access, Prev: CObject-accessing, Up: CObject -1.34.5 CObject: C data access +1.35.6 CObject: basic +--------------------- + += anObject + Return true if the receiver and aCObject are equal. + +hash + Return a hash value for anObject. + + + +File: gst-base.info, Node: CObject-C data access, Next: CObject-conversion, Prev: CObject-basic, Up: CObject + +1.35.7 CObject: C data access ----------------------------- at: byteOffset put: aValue type: aType @@ -5117,7 +5221,7 @@  File: gst-base.info, Node: CObject-conversion, Next: CObject-finalization, Prev: CObject-C data access, Up: CObject -1.34.6 CObject: conversion +1.35.8 CObject: conversion -------------------------- castTo: aType @@ -5138,7 +5242,7 @@  File: gst-base.info, Node: CObject-finalization, Next: CObject-pointer-like behavior, Prev: CObject-conversion, Up: CObject -1.34.7 CObject: finalization +1.35.9 CObject: finalization ---------------------------- finalize @@ -5150,10 +5254,10 @@  -File: gst-base.info, Node: CObject-pointer-like behavior, Prev: CObject-finalization, Up: CObject +File: gst-base.info, Node: CObject-pointer-like behavior, Next: CObject-testing functionality, Prev: CObject-finalization, Up: CObject -1.34.8 CObject: pointer-like behavior -------------------------------------- +1.35.10 CObject: pointer-like behavior +-------------------------------------- + anInteger Return another instance of the receiver's class which points at @@ -5211,13 +5315,23 @@  +File: gst-base.info, Node: CObject-testing functionality, Prev: CObject-pointer-like behavior, Up: CObject + +1.35.11 CObject: testing functionality +-------------------------------------- + +isCObject + Answer `true'. + + + File: gst-base.info, Node: Collection, Next: CompiledBlock, Prev: CObject, Up: Base classes -1.35 Collection +1.36 Collection =============== Defined in namespace Smalltalk -Superclass: Object +Superclass: Iterable Category: Collections I am an abstract class. My instances are collections of objects. My subclasses may place some restrictions or add some definitions @@ -5230,6 +5344,7 @@ * Collection class-instance creation:: (class) * Collection class-multibyte encodings:: (class) * Collection-adding:: (instance) +* Collection-concatenating:: (instance) * Collection-converting:: (instance) * Collection-copying Collections:: (instance) * Collection-enumeration:: (instance) @@ -5242,7 +5357,7 @@  File: gst-base.info, Node: Collection class-instance creation, Next: Collection class-multibyte encodings, Up: Collection -1.35.1 Collection class: instance creation +1.36.1 Collection class: instance creation ------------------------------------------ from: anArray @@ -5281,7 +5396,7 @@  File: gst-base.info, Node: Collection class-multibyte encodings, Next: Collection-adding, Prev: Collection class-instance creation, Up: Collection -1.35.2 Collection class: multibyte encodings +1.36.2 Collection class: multibyte encodings -------------------------------------------- isUnicode @@ -5290,9 +5405,9 @@  -File: gst-base.info, Node: Collection-adding, Next: Collection-converting, Prev: Collection class-multibyte encodings, Up: Collection +File: gst-base.info, Node: Collection-adding, Next: Collection-concatenating, Prev: Collection class-multibyte encodings, Up: Collection -1.35.3 Collection: adding +1.36.3 Collection: adding ------------------------- add: newObject @@ -5304,9 +5419,27 @@  -File: gst-base.info, Node: Collection-converting, Next: Collection-copying Collections, Prev: Collection-adding, Up: Collection +File: gst-base.info, Node: Collection-concatenating, Next: Collection-converting, Prev: Collection-adding, Up: Collection + +1.36.4 Collection: concatenating +-------------------------------- + +join + Answer a new collection like my first element, with all the + elements (in order) of all my elements, which should be + collections. + + I use my first element instead of myself as a prototype because my + elements are more likely to share the desired properties than I + am, such as in: + + #('hello, ' 'world') join => 'hello, world' + + + +File: gst-base.info, Node: Collection-converting, Next: Collection-copying Collections, Prev: Collection-concatenating, Up: Collection -1.35.4 Collection: converting +1.36.5 Collection: converting ----------------------------- asArray @@ -5351,7 +5484,7 @@  File: gst-base.info, Node: Collection-copying Collections, Next: Collection-enumeration, Prev: Collection-converting, Up: Collection -1.35.5 Collection: copying Collections +1.36.6 Collection: copying Collections -------------------------------------- copyReplacing: targetObject withObject: newObject @@ -5369,20 +5502,12 @@  File: gst-base.info, Node: Collection-enumeration, Next: Collection-finalization, Prev: Collection-copying Collections, Up: Collection -1.35.6 Collection: enumeration +1.36.7 Collection: enumeration ------------------------------ -allSatisfy: aBlock - Search the receiver for an element for which aBlock returns false. - Answer true if none does, false otherwise. - anyOne Answer an unspecified element of the collection. -anySatisfy: aBlock - Search the receiver for an element for which aBlock returns true. - Answer true if some does, false otherwise. - beConsistent This method is private, but it is quite interesting so it is documented. It ensures that a collection is in a consistent state @@ -5398,56 +5523,11 @@ Answer a new instance of a Collection containing all the results of evaluating aBlock passing each of the receiver's elements -conform: aBlock - Search the receiver for an element for which aBlock returns false. - Answer true if none does, false otherwise. - -contains: aBlock - Search the receiver for an element for which aBlock returns true. - Answer true if some does, false otherwise. - -count: aBlock - Count the elements of the receiver for which aBlock returns true, - and return their number. - -detect: aBlock - Search the receiver for an element for which aBlock returns true. - If some does, answer it. If none does, fail - -detect: aBlock ifNone: exceptionBlock - Search the receiver for an element for which aBlock returns true. - If some does, answer it. If none does, answer the result of - evaluating aBlock - -do: aBlock - Enumerate each object of the receiver, passing them to aBlock - -do: aBlock separatedBy: separatorBlock - Enumerate each object of the receiver, passing them to aBlock. - Between every two invocations of aBlock, invoke separatorBlock - -fold: binaryBlock - First, pass to binaryBlock the first and second elements of the - receiver; for each subsequent element, pass the result of the - previous evaluation and an element. Answer the result of the last - invocation, or the first element if the collection has size 1. - Fail if the collection is empty. - gather: aBlock Answer a new instance of a Collection containing all the results of evaluating aBlock, joined together. aBlock should return - collections. The result is the same kind of the receiver, - independent of the type of collection returned by aBlock. - -inject: thisValue into: binaryBlock - First, pass to binaryBlock thisValue and the first element of the - receiver; for each subsequent element, pass the result of the - previous evaluation and an element. Answer the result of the last - invocation. - -noneSatisfy: aBlock - Search the receiver for an element for which aBlock returns true. - Answer true if none does, false otherwise. + collections. The result is the same kind as the first collection, + returned by aBlock (as for #join). readStream Answer a stream that gives elements of the receiver @@ -5464,7 +5544,7 @@  File: gst-base.info, Node: Collection-finalization, Next: Collection-printing, Prev: Collection-enumeration, Up: Collection -1.35.7 Collection: finalization +1.36.8 Collection: finalization ------------------------------- mourn: anObject @@ -5475,7 +5555,7 @@  File: gst-base.info, Node: Collection-printing, Next: Collection-removing, Prev: Collection-finalization, Up: Collection -1.35.8 Collection: printing +1.36.9 Collection: printing --------------------------- inspect @@ -5489,8 +5569,8 @@  File: gst-base.info, Node: Collection-removing, Next: Collection-storing, Prev: Collection-printing, Up: Collection -1.35.9 Collection: removing ---------------------------- +1.36.10 Collection: removing +---------------------------- empty Remove everything from the receiver. @@ -5519,7 +5599,7 @@  File: gst-base.info, Node: Collection-storing, Next: Collection-testing collections, Prev: Collection-removing, Up: Collection -1.35.10 Collection: storing +1.36.11 Collection: storing --------------------------- storeOn: aStream @@ -5529,7 +5609,7 @@  File: gst-base.info, Node: Collection-testing collections, Prev: Collection-storing, Up: Collection -1.35.11 Collection: testing collections +1.36.12 Collection: testing collections --------------------------------------- capacity @@ -5562,7 +5642,7 @@  File: gst-base.info, Node: CompiledBlock, Next: CompiledCode, Prev: Collection, Up: Base classes -1.36 CompiledBlock +1.37 CompiledBlock ================== Defined in namespace Smalltalk @@ -5581,7 +5661,7 @@  File: gst-base.info, Node: CompiledBlock class-instance creation, Next: CompiledBlock-accessing, Up: CompiledBlock -1.36.1 CompiledBlock class: instance creation +1.37.1 CompiledBlock class: instance creation --------------------------------------------- new: numBytecodes header: anInteger method: outerMethod @@ -5599,7 +5679,7 @@  File: gst-base.info, Node: CompiledBlock-accessing, Next: CompiledBlock-basic, Prev: CompiledBlock class-instance creation, Up: CompiledBlock -1.36.2 CompiledBlock: accessing +1.37.2 CompiledBlock: accessing ------------------------------- flags @@ -5631,6 +5711,14 @@ selector: aSymbol Set the selector through which the method is called +sourceCodeLinesDelta + Answer the delta from the numbers in LINE_NUMBER bytecodes to + source code line numbers. + +sourceCodeMap + Answer an array which maps bytecode indices to source code line + numbers. 0 values represent invalid instruction pointer indices. + stackDepth Answer the number of stack slots needed for the receiver @@ -5638,7 +5726,7 @@  File: gst-base.info, Node: CompiledBlock-basic, Next: CompiledBlock-printing, Prev: CompiledBlock-accessing, Up: CompiledBlock -1.36.3 CompiledBlock: basic +1.37.3 CompiledBlock: basic --------------------------- = aMethod @@ -5667,7 +5755,7 @@  File: gst-base.info, Node: CompiledBlock-printing, Next: CompiledBlock-saving and loading, Prev: CompiledBlock-basic, Up: CompiledBlock -1.36.4 CompiledBlock: printing +1.37.4 CompiledBlock: printing ------------------------------ printOn: aStream @@ -5677,7 +5765,7 @@  File: gst-base.info, Node: CompiledBlock-saving and loading, Prev: CompiledBlock-printing, Up: CompiledBlock -1.36.5 CompiledBlock: saving and loading +1.37.5 CompiledBlock: saving and loading ---------------------------------------- to @@ -5691,7 +5779,7 @@  File: gst-base.info, Node: CompiledCode, Next: CompiledMethod, Prev: CompiledBlock, Up: Base classes -1.37 CompiledCode +1.38 CompiledCode ================= Defined in namespace Smalltalk @@ -5718,7 +5806,7 @@  File: gst-base.info, Node: CompiledCode class-cache flushing, Next: CompiledCode class-instance creation, Up: CompiledCode -1.37.1 CompiledCode class: cache flushing +1.38.1 CompiledCode class: cache flushing ----------------------------------------- flushTranslatorCache @@ -5729,7 +5817,7 @@  File: gst-base.info, Node: CompiledCode class-instance creation, Next: CompiledCode class-tables, Prev: CompiledCode class-cache flushing, Up: CompiledCode -1.37.2 CompiledCode class: instance creation +1.38.2 CompiledCode class: instance creation -------------------------------------------- new: numBytecodes header: anInteger literals: literals @@ -5744,7 +5832,7 @@  File: gst-base.info, Node: CompiledCode class-tables, Next: CompiledCode-accessing, Prev: CompiledCode class-instance creation, Up: CompiledCode -1.37.3 CompiledCode class: tables +1.38.3 CompiledCode class: tables --------------------------------- bytecodeInfoTable @@ -5775,7 +5863,7 @@  File: gst-base.info, Node: CompiledCode-accessing, Next: CompiledCode-basic, Prev: CompiledCode class-tables, Up: CompiledCode -1.37.4 CompiledCode: accessing +1.38.4 CompiledCode: accessing ------------------------------ at: anIndex put: aBytecode @@ -5831,6 +5919,10 @@ selector: aSymbol Set the selector through which the method is called +sourceCodeLinesDelta + Answer the delta from the numbers in LINE_NUMBER bytecodes to + source code line numbers. + stackDepth Answer the number of stack slots needed for the receiver @@ -5838,7 +5930,7 @@  File: gst-base.info, Node: CompiledCode-basic, Next: CompiledCode-copying, Prev: CompiledCode-accessing, Up: CompiledCode -1.37.5 CompiledCode: basic +1.38.5 CompiledCode: basic -------------------------- = aMethod @@ -5870,7 +5962,7 @@  File: gst-base.info, Node: CompiledCode-copying, Next: CompiledCode-debugging, Prev: CompiledCode-basic, Up: CompiledCode -1.37.6 CompiledCode: copying +1.38.6 CompiledCode: copying ---------------------------- deepCopy @@ -5880,7 +5972,7 @@  File: gst-base.info, Node: CompiledCode-debugging, Next: CompiledCode-decoding bytecodes, Prev: CompiledCode-copying, Up: CompiledCode -1.37.7 CompiledCode: debugging +1.38.7 CompiledCode: debugging ------------------------------ inspect @@ -5890,7 +5982,7 @@  File: gst-base.info, Node: CompiledCode-decoding bytecodes, Next: CompiledCode-literals - iteration, Prev: CompiledCode-debugging, Up: CompiledCode -1.37.8 CompiledCode: decoding bytecodes +1.38.8 CompiledCode: decoding bytecodes --------------------------------------- dispatchTo: anObject with: param @@ -5902,7 +5994,7 @@  File: gst-base.info, Node: CompiledCode-literals - iteration, Next: CompiledCode-security, Prev: CompiledCode-decoding bytecodes, Up: CompiledCode -1.37.9 CompiledCode: literals - iteration +1.38.9 CompiledCode: literals - iteration ----------------------------------------- allLiteralSymbolsDo: aBlock @@ -5919,7 +6011,7 @@  File: gst-base.info, Node: CompiledCode-security, Next: CompiledCode-testing accesses, Prev: CompiledCode-literals - iteration, Up: CompiledCode -1.37.10 CompiledCode: security +1.38.10 CompiledCode: security ------------------------------ verify @@ -5930,7 +6022,7 @@  File: gst-base.info, Node: CompiledCode-testing accesses, Next: CompiledCode-translation, Prev: CompiledCode-security, Up: CompiledCode -1.37.11 CompiledCode: testing accesses +1.38.11 CompiledCode: testing accesses -------------------------------------- accesses: instVarIndex @@ -5949,7 +6041,7 @@ Answer whether the receiver includes the `byte' bytecode in any of the indices between firstIndex and lastIndex. -jumpDestinationAt: anIndex +jumpDestinationAt: anIndex forward: aBoolean Answer where the jump at bytecode index `anIndex' lands reads: instVarIndex @@ -5967,7 +6059,7 @@  File: gst-base.info, Node: CompiledCode-translation, Prev: CompiledCode-testing accesses, Up: CompiledCode -1.37.12 CompiledCode: translation +1.38.12 CompiledCode: translation --------------------------------- discardTranslation @@ -5977,7 +6069,7 @@  File: gst-base.info, Node: CompiledMethod, Next: ContextPart, Prev: CompiledCode, Up: Base classes -1.38 CompiledMethod +1.39 CompiledMethod =================== Defined in namespace Smalltalk @@ -5990,6 +6082,7 @@ * Menu: +* CompiledMethod class-c call-outs:: (class) * CompiledMethod class-instance creation:: (class) * CompiledMethod class-lean images:: (class) * CompiledMethod-accessing:: (instance) @@ -6004,9 +6097,28 @@ * CompiledMethod-testing:: (instance)  -File: gst-base.info, Node: CompiledMethod class-instance creation, Next: CompiledMethod class-lean images, Up: CompiledMethod +File: gst-base.info, Node: CompiledMethod class-c call-outs, Next: CompiledMethod class-instance creation, Up: CompiledMethod + +1.39.1 CompiledMethod class: c call-outs +---------------------------------------- + + pragma + +asyncCCall: descr numArgs: numArgs attributes: attributesArray + Return a CompiledMethod corresponding to a #asyncCCall:args: + pragma with the given arguments. + + pragma + +cCall: descr numArgs: numArgs attributes: attributesArray + Return a CompiledMethod corresponding to a #cCall:returning:args: + pragma with the given arguments. + + + +File: gst-base.info, Node: CompiledMethod class-instance creation, Next: CompiledMethod class-lean images, Prev: CompiledMethod class-c call-outs, Up: CompiledMethod -1.38.1 CompiledMethod class: instance creation +1.39.2 CompiledMethod class: instance creation ---------------------------------------------- literals: lits numArgs: numArg numTemps: numTemp attributes: attrArray bytecodes: bytecodes depth: depth @@ -6026,7 +6138,7 @@  File: gst-base.info, Node: CompiledMethod class-lean images, Next: CompiledMethod-accessing, Prev: CompiledMethod class-instance creation, Up: CompiledMethod -1.38.2 CompiledMethod class: lean images +1.39.3 CompiledMethod class: lean images ---------------------------------------- stripSourceCode @@ -6036,7 +6148,7 @@  File: gst-base.info, Node: CompiledMethod-accessing, Next: CompiledMethod-attributes, Prev: CompiledMethod class-lean images, Up: CompiledMethod -1.38.3 CompiledMethod: accessing +1.39.4 CompiledMethod: accessing -------------------------------- allBlocksDo: aBlock @@ -6084,6 +6196,10 @@ selector: aSymbol Set the selector through which the method is called +sourceCodeLinesDelta + Answer the delta from the numbers in LINE_NUMBER bytecodes to + source code line numbers. + stackDepth Answer the number of stack slots needed for the receiver @@ -6103,7 +6219,7 @@  File: gst-base.info, Node: CompiledMethod-attributes, Next: CompiledMethod-basic, Prev: CompiledMethod-accessing, Up: CompiledMethod -1.38.4 CompiledMethod: attributes +1.39.5 CompiledMethod: attributes --------------------------------- attributeAt: aSymbol @@ -6133,7 +6249,7 @@  File: gst-base.info, Node: CompiledMethod-basic, Next: CompiledMethod-c call-outs, Prev: CompiledMethod-attributes, Up: CompiledMethod -1.38.5 CompiledMethod: basic +1.39.6 CompiledMethod: basic ---------------------------- = aMethod @@ -6146,7 +6262,7 @@  File: gst-base.info, Node: CompiledMethod-c call-outs, Next: CompiledMethod-compiling, Prev: CompiledMethod-basic, Up: CompiledMethod -1.38.6 CompiledMethod: c call-outs +1.39.7 CompiledMethod: c call-outs ---------------------------------- isValidCCall @@ -6156,7 +6272,7 @@ rewriteAsAsyncCCall: func args: argsArray Not commented. -rewriteAsCCall: func for: aClass +rewriteAsCCall: funcOrDescr for: aClass Not commented. rewriteAsCCall: func returning: returnType args: argsArray @@ -6166,7 +6282,7 @@  File: gst-base.info, Node: CompiledMethod-compiling, Next: CompiledMethod-invoking, Prev: CompiledMethod-c call-outs, Up: CompiledMethod -1.38.7 CompiledMethod: compiling +1.39.8 CompiledMethod: compiling -------------------------------- methodFormattedSourceString @@ -6192,7 +6308,7 @@  File: gst-base.info, Node: CompiledMethod-invoking, Next: CompiledMethod-printing, Prev: CompiledMethod-compiling, Up: CompiledMethod -1.38.8 CompiledMethod: invoking +1.39.9 CompiledMethod: invoking ------------------------------- valueWithReceiver: anObject withArguments: args @@ -6214,8 +6330,8 @@  File: gst-base.info, Node: CompiledMethod-printing, Next: CompiledMethod-saving and loading, Prev: CompiledMethod-invoking, Up: CompiledMethod -1.38.9 CompiledMethod: printing -------------------------------- +1.39.10 CompiledMethod: printing +-------------------------------- printOn: aStream Print the receiver's class and selector on aStream @@ -6227,7 +6343,7 @@  File: gst-base.info, Node: CompiledMethod-saving and loading, Next: CompiledMethod-source code, Prev: CompiledMethod-printing, Up: CompiledMethod -1.38.10 CompiledMethod: saving and loading +1.39.11 CompiledMethod: saving and loading ------------------------------------------ to @@ -6241,7 +6357,7 @@  File: gst-base.info, Node: CompiledMethod-source code, Next: CompiledMethod-testing, Prev: CompiledMethod-saving and loading, Up: CompiledMethod -1.38.11 CompiledMethod: source code +1.39.12 CompiledMethod: source code ----------------------------------- methodRecompilationSourceString @@ -6265,7 +6381,7 @@  File: gst-base.info, Node: CompiledMethod-testing, Prev: CompiledMethod-source code, Up: CompiledMethod -1.38.12 CompiledMethod: testing +1.39.13 CompiledMethod: testing ------------------------------- accesses: instVarIndex @@ -6284,7 +6400,7 @@  File: gst-base.info, Node: ContextPart, Next: Continuation, Prev: CompiledMethod, Up: Base classes -1.39 ContextPart +1.40 ContextPart ================ Defined in namespace Smalltalk @@ -6304,14 +6420,13 @@ * ContextPart-copying:: (instance) * ContextPart-debugging:: (instance) * ContextPart-enumerating:: (instance) -* ContextPart-exception handling:: (instance) * ContextPart-printing:: (instance) * ContextPart-security checks:: (instance)  File: gst-base.info, Node: ContextPart class-built ins, Next: ContextPart class-exception handling, Up: ContextPart -1.39.1 ContextPart class: built ins +1.40.1 ContextPart class: built ins ----------------------------------- thisContext @@ -6322,7 +6437,7 @@  File: gst-base.info, Node: ContextPart class-exception handling, Next: ContextPart-accessing, Prev: ContextPart class-built ins, Up: ContextPart -1.39.2 ContextPart class: exception handling +1.40.2 ContextPart class: exception handling -------------------------------------------- backtrace @@ -6333,28 +6448,19 @@ Print a backtrace from the caller to the bottom of the stack on aStream -lastUnwindPoint - Private - Return the last context marked as an unwind point, or - our environment if none is. - -removeLastUnwindPoint - Private - Return and remove the last context marked as an unwind - point, or our environment if the last unwind point belongs to - another environment. - unwind Return execution to the last context marked as an unwind point, returning nil on that stack. unwind: returnValue - Return execution to the last context marked as an unwind point, - returning returnValue on that stack. + Return execution to the innermost #valueWithUnwind call, passing it + returnValue.  File: gst-base.info, Node: ContextPart-accessing, Next: ContextPart-built ins, Prev: ContextPart class-exception handling, Up: ContextPart -1.39.3 ContextPart: accessing +1.40.3 ContextPart: accessing ----------------------------- client @@ -6362,6 +6468,9 @@ the message that created this context. Fail if the receiver has no parent +currentFileName + Answer the name of the file where the method source code is + environment To create a valid execution environment for the interpreter even before it starts, GST creates a fake context whose selector is nil @@ -6459,7 +6568,7 @@  File: gst-base.info, Node: ContextPart-built ins, Next: ContextPart-copying, Prev: ContextPart-accessing, Up: ContextPart -1.39.4 ContextPart: built ins +1.40.4 ContextPart: built ins ----------------------------- continue: anObject @@ -6476,7 +6585,7 @@  File: gst-base.info, Node: ContextPart-copying, Next: ContextPart-debugging, Prev: ContextPart-built ins, Up: ContextPart -1.39.5 ContextPart: copying +1.40.5 ContextPart: copying --------------------------- copyStack @@ -6490,13 +6599,18 @@  File: gst-base.info, Node: ContextPart-debugging, Next: ContextPart-enumerating, Prev: ContextPart-copying, Up: ContextPart -1.39.6 ContextPart: debugging +1.40.6 ContextPart: debugging ----------------------------- currentLine Answer the 1-based number of the line that is pointed to by the - receiver's instruction pointer. It is always 1 unless the - DebugTools package is loaded. + receiver's instruction pointer. The DebugTools package caches + information, thus making the implementation faster. + +currentLineInFile + Answer the 1-based number of the line that is pointed to by the + receiver's instruction pointer, relative to the method's file. + The implementation is slow unless the DebugTools package is loaded. debugger Answer the debugger that is attached to the given context. It is @@ -6513,9 +6627,9 @@  -File: gst-base.info, Node: ContextPart-enumerating, Next: ContextPart-exception handling, Prev: ContextPart-debugging, Up: ContextPart +File: gst-base.info, Node: ContextPart-enumerating, Next: ContextPart-printing, Prev: ContextPart-debugging, Up: ContextPart -1.39.7 ContextPart: enumerating +1.40.7 ContextPart: enumerating ------------------------------- scanBacktraceFor: selectors do: aBlock @@ -6530,19 +6644,9 @@  -File: gst-base.info, Node: ContextPart-exception handling, Next: ContextPart-printing, Prev: ContextPart-enumerating, Up: ContextPart - -1.39.8 ContextPart: exception handling --------------------------------------- - -mark - Add the receiver as a possible unwind point - - - -File: gst-base.info, Node: ContextPart-printing, Next: ContextPart-security checks, Prev: ContextPart-exception handling, Up: ContextPart +File: gst-base.info, Node: ContextPart-printing, Next: ContextPart-security checks, Prev: ContextPart-enumerating, Up: ContextPart -1.39.9 ContextPart: printing +1.40.8 ContextPart: printing ---------------------------- backtrace @@ -6557,8 +6661,8 @@  File: gst-base.info, Node: ContextPart-security checks, Prev: ContextPart-printing, Up: ContextPart -1.39.10 ContextPart: security checks ------------------------------------- +1.40.9 ContextPart: security checks +----------------------------------- checkSecurityFor: perm Answer the receiver. @@ -6582,7 +6686,7 @@  File: gst-base.info, Node: Continuation, Next: CPtr, Prev: ContextPart, Up: Base classes -1.40 Continuation +1.41 Continuation ================= Defined in namespace Smalltalk @@ -6602,7 +6706,7 @@  File: gst-base.info, Node: Continuation class-instance creation, Next: Continuation-invocation, Up: Continuation -1.40.1 Continuation class: instance creation +1.41.1 Continuation class: instance creation -------------------------------------------- current @@ -6622,7 +6726,7 @@  File: gst-base.info, Node: Continuation-invocation, Prev: Continuation class-instance creation, Up: Continuation -1.40.2 Continuation: invocation +1.41.2 Continuation: invocation ------------------------------- callCC @@ -6660,7 +6764,7 @@  File: gst-base.info, Node: CPtr, Next: CPtrCType, Prev: Continuation, Up: Base classes -1.41 CPtr +1.42 CPtr ========= Defined in namespace Smalltalk @@ -6674,7 +6778,7 @@  File: gst-base.info, Node: CPtr-accessing, Up: CPtr -1.41.1 CPtr: accessing +1.42.1 CPtr: accessing ---------------------- alignof @@ -6696,7 +6800,7 @@  File: gst-base.info, Node: CPtrCType, Next: CScalar, Prev: CPtr, Up: Base classes -1.42 CPtrCType +1.43 CPtrCType ============== Defined in namespace Smalltalk @@ -6712,7 +6816,7 @@  File: gst-base.info, Node: CPtrCType class-instance creation, Next: CPtrCType-accessing, Up: CPtrCType -1.42.1 CPtrCType class: instance creation +1.43.1 CPtrCType class: instance creation ----------------------------------------- elementType: aCType @@ -6726,7 +6830,7 @@  File: gst-base.info, Node: CPtrCType-accessing, Next: CPtrCType-storing, Prev: CPtrCType class-instance creation, Up: CPtrCType -1.42.2 CPtrCType: accessing +1.43.2 CPtrCType: accessing --------------------------- elementType @@ -6742,7 +6846,7 @@  File: gst-base.info, Node: CPtrCType-storing, Prev: CPtrCType-accessing, Up: CPtrCType -1.42.3 CPtrCType: storing +1.43.3 CPtrCType: storing ------------------------- storeOn: aStream @@ -6752,7 +6856,7 @@  File: gst-base.info, Node: CScalar, Next: CScalarCType, Prev: CPtrCType, Up: Base classes -1.43 CScalar +1.44 CScalar ============ Defined in namespace Smalltalk @@ -6767,9 +6871,13 @@  File: gst-base.info, Node: CScalar class-instance creation, Next: CScalar-accessing, Up: CScalar -1.43.1 CScalar class: instance creation +1.44.1 CScalar class: instance creation --------------------------------------- +gcValue: anObject + Answer a newly allocated CObject containing the passed value, + anObject, in garbage-collected storage. + type Answer a CType for the receiver--for example, CByteType if the receiver is CByte. @@ -6783,7 +6891,7 @@  File: gst-base.info, Node: CScalar-accessing, Prev: CScalar class-instance creation, Up: CScalar -1.43.2 CScalar: accessing +1.44.2 CScalar: accessing ------------------------- cObjStoredType @@ -6802,7 +6910,7 @@  File: gst-base.info, Node: CScalarCType, Next: CShort, Prev: CScalar, Up: Base classes -1.44 CScalarCType +1.45 CScalarCType ================= Defined in namespace Smalltalk @@ -6817,7 +6925,7 @@  File: gst-base.info, Node: CScalarCType-accessing, Next: CScalarCType-storing, Up: CScalarCType -1.44.1 CScalarCType: accessing +1.45.1 CScalarCType: accessing ------------------------------ valueType @@ -6829,7 +6937,7 @@  File: gst-base.info, Node: CScalarCType-storing, Prev: CScalarCType-accessing, Up: CScalarCType -1.44.2 CScalarCType: storing +1.45.2 CScalarCType: storing ---------------------------- storeOn: aStream @@ -6839,7 +6947,7 @@  File: gst-base.info, Node: CShort, Next: CSmalltalk, Prev: CScalarCType, Up: Base classes -1.45 CShort +1.46 CShort =========== Defined in namespace Smalltalk @@ -6854,7 +6962,7 @@  File: gst-base.info, Node: CShort class-accessing, Next: CShort-accessing, Up: CShort -1.45.1 CShort class: accessing +1.46.1 CShort class: accessing ------------------------------ alignof @@ -6871,7 +6979,7 @@  File: gst-base.info, Node: CShort-accessing, Prev: CShort class-accessing, Up: CShort -1.45.2 CShort: accessing +1.46.2 CShort: accessing ------------------------ alignof @@ -6887,7 +6995,7 @@  File: gst-base.info, Node: CSmalltalk, Next: CString, Prev: CShort, Up: Base classes -1.46 CSmalltalk +1.47 CSmalltalk =============== Defined in namespace Smalltalk @@ -6902,7 +7010,7 @@  File: gst-base.info, Node: CSmalltalk class-accessing, Next: CSmalltalk-accessing, Up: CSmalltalk -1.46.1 CSmalltalk class: accessing +1.47.1 CSmalltalk class: accessing ---------------------------------- alignof @@ -6919,7 +7027,7 @@  File: gst-base.info, Node: CSmalltalk-accessing, Prev: CSmalltalk class-accessing, Up: CSmalltalk -1.46.2 CSmalltalk: accessing +1.47.2 CSmalltalk: accessing ---------------------------- alignof @@ -6935,7 +7043,7 @@  File: gst-base.info, Node: CString, Next: CStringCType, Prev: CSmalltalk, Up: Base classes -1.47 CString +1.48 CString ============ Defined in namespace Smalltalk @@ -6965,7 +7073,7 @@  File: gst-base.info, Node: CString class-accessing, Next: CString class-instance creation, Up: CString -1.47.1 CString class: accessing +1.48.1 CString class: accessing ------------------------------- cObjStoredType @@ -6976,7 +7084,7 @@  File: gst-base.info, Node: CString class-instance creation, Next: CString-accessing, Prev: CString class-accessing, Up: CString -1.47.2 CString class: instance creation +1.48.2 CString class: instance creation --------------------------------------- type @@ -6992,7 +7100,7 @@  File: gst-base.info, Node: CString-accessing, Prev: CString class-instance creation, Up: CString -1.47.3 CString: accessing +1.48.3 CString: accessing ------------------------- cObjStoredType @@ -7011,7 +7119,7 @@  File: gst-base.info, Node: CStringCType, Next: CStruct, Prev: CString, Up: Base classes -1.48 CStringCType +1.49 CStringCType ================= Defined in namespace Smalltalk @@ -7025,7 +7133,7 @@  File: gst-base.info, Node: CStringCType-accessing, Up: CStringCType -1.48.1 CStringCType: accessing +1.49.1 CStringCType: accessing ------------------------------ elementType @@ -7035,7 +7143,7 @@  File: gst-base.info, Node: CStruct, Next: CType, Prev: CStringCType, Up: Base classes -1.49 CStruct +1.50 CStruct ============ Defined in namespace Smalltalk @@ -7049,7 +7157,7 @@  File: gst-base.info, Node: CStruct class-subclass creation, Up: CStruct -1.49.1 CStruct class: subclass creation +1.50.1 CStruct class: subclass creation --------------------------------------- declaration: array @@ -7059,7 +7167,7 @@  File: gst-base.info, Node: CType, Next: CUChar, Prev: CStruct, Up: Base classes -1.50 CType +1.51 CType ========== Defined in namespace Smalltalk @@ -7091,7 +7199,7 @@  File: gst-base.info, Node: CType class-C instance creation, Next: CType class-initialization, Up: CType -1.50.1 CType class: C instance creation +1.51.1 CType class: C instance creation --------------------------------------- cObjectBinding: aCObjectSubclassBinding @@ -7113,7 +7221,7 @@  File: gst-base.info, Node: CType class-initialization, Next: CType-accessing, Prev: CType class-C instance creation, Up: CType -1.50.2 CType class: initialization +1.51.2 CType class: initialization ---------------------------------- initialize @@ -7123,7 +7231,7 @@  File: gst-base.info, Node: CType-accessing, Next: CType-C instance creation, Prev: CType class-initialization, Up: CType -1.50.3 CType: accessing +1.51.3 CType: accessing ----------------------- alignof @@ -7153,7 +7261,7 @@  File: gst-base.info, Node: CType-C instance creation, Next: CType-storing, Prev: CType-accessing, Up: CType -1.50.4 CType: C instance creation +1.51.4 CType: C instance creation --------------------------------- address: cObjOrInt @@ -7161,6 +7269,11 @@ receiver, pointing to the given address (identified by an Integer or CObject). +gcNew + Allocate a new CObject with the type (class) identified by the + receiver. The object is movable in memory, but on the other hand + it is garbage-collected automatically. + new Allocate a new CObject with the type (class) identified by the receiver. It is the caller's responsibility to free the memory @@ -7170,7 +7283,7 @@  File: gst-base.info, Node: CType-storing, Prev: CType-C instance creation, Up: CType -1.50.5 CType: storing +1.51.5 CType: storing --------------------- storeOn: aStream @@ -7180,7 +7293,7 @@  File: gst-base.info, Node: CUChar, Next: CUInt, Prev: CType, Up: Base classes -1.51 CUChar +1.52 CUChar =========== Defined in namespace Smalltalk @@ -7195,7 +7308,7 @@  File: gst-base.info, Node: CUChar class-getting info, Next: CUChar-accessing, Up: CUChar -1.51.1 CUChar class: getting info +1.52.1 CUChar class: getting info --------------------------------- alignof @@ -7212,7 +7325,7 @@  File: gst-base.info, Node: CUChar-accessing, Prev: CUChar class-getting info, Up: CUChar -1.51.2 CUChar: accessing +1.52.2 CUChar: accessing ------------------------ alignof @@ -7228,7 +7341,7 @@  File: gst-base.info, Node: CUInt, Next: CULong, Prev: CUChar, Up: Base classes -1.52 CUInt +1.53 CUInt ========== Defined in namespace Smalltalk @@ -7243,7 +7356,7 @@  File: gst-base.info, Node: CUInt class-accessing, Next: CUInt-accessing, Up: CUInt -1.52.1 CUInt class: accessing +1.53.1 CUInt class: accessing ----------------------------- alignof @@ -7260,7 +7373,7 @@  File: gst-base.info, Node: CUInt-accessing, Prev: CUInt class-accessing, Up: CUInt -1.52.2 CUInt: accessing +1.53.2 CUInt: accessing ----------------------- alignof @@ -7276,7 +7389,7 @@  File: gst-base.info, Node: CULong, Next: CUnion, Prev: CUInt, Up: Base classes -1.53 CULong +1.54 CULong =========== Defined in namespace Smalltalk @@ -7291,7 +7404,7 @@  File: gst-base.info, Node: CULong class-accessing, Next: CULong-accessing, Up: CULong -1.53.1 CULong class: accessing +1.54.1 CULong class: accessing ------------------------------ alignof @@ -7308,7 +7421,7 @@  File: gst-base.info, Node: CULong-accessing, Prev: CULong class-accessing, Up: CULong -1.53.2 CULong: accessing +1.54.2 CULong: accessing ------------------------ alignof @@ -7324,7 +7437,7 @@  File: gst-base.info, Node: CUnion, Next: CUShort, Prev: CULong, Up: Base classes -1.54 CUnion +1.55 CUnion =========== Defined in namespace Smalltalk @@ -7338,7 +7451,7 @@  File: gst-base.info, Node: CUnion class-subclass creation, Up: CUnion -1.54.1 CUnion class: subclass creation +1.55.1 CUnion class: subclass creation -------------------------------------- declaration: array @@ -7348,7 +7461,7 @@  File: gst-base.info, Node: CUShort, Next: Date, Prev: CUnion, Up: Base classes -1.55 CUShort +1.56 CUShort ============ Defined in namespace Smalltalk @@ -7363,7 +7476,7 @@  File: gst-base.info, Node: CUShort class-accessing, Next: CUShort-accessing, Up: CUShort -1.55.1 CUShort class: accessing +1.56.1 CUShort class: accessing ------------------------------- alignof @@ -7380,7 +7493,7 @@  File: gst-base.info, Node: CUShort-accessing, Prev: CUShort class-accessing, Up: CUShort -1.55.2 CUShort: accessing +1.56.2 CUShort: accessing ------------------------- alignof @@ -7396,7 +7509,7 @@  File: gst-base.info, Node: Date, Next: DateTime, Prev: CUShort, Up: Base classes -1.56 Date +1.57 Date ========= Defined in namespace Smalltalk @@ -7434,7 +7547,7 @@  File: gst-base.info, Node: Date class-basic, Next: Date class-instance creation (ANSI), Up: Date -1.56.1 Date class: basic +1.57.1 Date class: basic ------------------------ abbreviationOfDay: dayIndex @@ -7476,7 +7589,7 @@  File: gst-base.info, Node: Date class-instance creation (ANSI), Next: Date class-instance creation (Blue Book), Prev: Date class-basic, Up: Date -1.56.2 Date class: instance creation (ANSI) +1.57.2 Date class: instance creation (ANSI) ------------------------------------------- year: y day: d hour: h minute: min second: s @@ -7490,7 +7603,7 @@  File: gst-base.info, Node: Date class-instance creation (Blue Book), Next: Date-basic, Prev: Date class-instance creation (ANSI), Up: Date -1.56.3 Date class: instance creation (Blue Book) +1.57.3 Date class: instance creation (Blue Book) ------------------------------------------------ dateAndTimeNow @@ -7535,7 +7648,7 @@  File: gst-base.info, Node: Date-basic, Next: Date-compatibility (non-ANSI), Prev: Date class-instance creation (Blue Book), Up: Date -1.56.4 Date: basic +1.57.4 Date: basic ------------------ - aDate @@ -7555,7 +7668,7 @@  File: gst-base.info, Node: Date-compatibility (non-ANSI), Next: Date-date computations, Prev: Date-basic, Up: Date -1.56.5 Date: compatibility (non-ANSI) +1.57.5 Date: compatibility (non-ANSI) ------------------------------------- day @@ -7572,7 +7685,7 @@  File: gst-base.info, Node: Date-date computations, Next: Date-printing, Prev: Date-compatibility (non-ANSI), Up: Date -1.56.6 Date: date computations +1.57.6 Date: date computations ------------------------------ asSeconds @@ -7640,7 +7753,7 @@  File: gst-base.info, Node: Date-printing, Next: Date-storing, Prev: Date-date computations, Up: Date -1.56.7 Date: printing +1.57.7 Date: printing --------------------- printOn: aStream @@ -7650,7 +7763,7 @@  File: gst-base.info, Node: Date-storing, Next: Date-testing, Prev: Date-printing, Up: Date -1.56.8 Date: storing +1.57.8 Date: storing -------------------- storeOn: aStream @@ -7660,7 +7773,7 @@  File: gst-base.info, Node: Date-testing, Prev: Date-storing, Up: Date -1.56.9 Date: testing +1.57.9 Date: testing -------------------- < aDate @@ -7676,7 +7789,7 @@  File: gst-base.info, Node: DateTime, Next: DeferredVariableBinding, Prev: Date, Up: Base classes -1.57 DateTime +1.58 DateTime ============= Defined in namespace Smalltalk @@ -7700,7 +7813,7 @@  File: gst-base.info, Node: DateTime class-information, Next: DateTime class-instance creation, Up: DateTime -1.57.1 DateTime class: information +1.58.1 DateTime class: information ---------------------------------- clockPrecision @@ -7713,7 +7826,7 @@  File: gst-base.info, Node: DateTime class-instance creation, Next: DateTime class-instance creation (non-ANSI), Prev: DateTime class-information, Up: DateTime -1.57.2 DateTime class: instance creation +1.58.2 DateTime class: instance creation ---------------------------------------- now @@ -7746,7 +7859,7 @@  File: gst-base.info, Node: DateTime class-instance creation (non-ANSI), Next: DateTime-basic, Prev: DateTime class-instance creation, Up: DateTime -1.57.3 DateTime class: instance creation (non-ANSI) +1.58.3 DateTime class: instance creation (non-ANSI) --------------------------------------------------- date: aDate time: aTime @@ -7766,7 +7879,7 @@  File: gst-base.info, Node: DateTime-basic, Next: DateTime-computations, Prev: DateTime class-instance creation (non-ANSI), Up: DateTime -1.57.4 DateTime: basic +1.58.4 DateTime: basic ---------------------- + aDuration @@ -7779,7 +7892,7 @@  File: gst-base.info, Node: DateTime-computations, Next: DateTime-printing, Prev: DateTime-basic, Up: DateTime -1.57.5 DateTime: computations +1.58.5 DateTime: computations ----------------------------- asSeconds @@ -7811,7 +7924,7 @@  File: gst-base.info, Node: DateTime-printing, Next: DateTime-splitting in dates & times, Prev: DateTime-computations, Up: DateTime -1.57.6 DateTime: printing +1.58.6 DateTime: printing ------------------------- printOn: aStream @@ -7821,7 +7934,7 @@  File: gst-base.info, Node: DateTime-splitting in dates & times, Next: DateTime-storing, Prev: DateTime-printing, Up: DateTime -1.57.7 DateTime: splitting in dates & times +1.58.7 DateTime: splitting in dates & times ------------------------------------------- asDate @@ -7840,7 +7953,7 @@  File: gst-base.info, Node: DateTime-storing, Next: DateTime-testing, Prev: DateTime-splitting in dates & times, Up: DateTime -1.57.8 DateTime: storing +1.58.8 DateTime: storing ------------------------ storeOn: aStream @@ -7850,7 +7963,7 @@  File: gst-base.info, Node: DateTime-testing, Next: DateTime-time zones, Prev: DateTime-storing, Up: DateTime -1.57.9 DateTime: testing +1.58.9 DateTime: testing ------------------------ < aDateTime @@ -7866,7 +7979,7 @@  File: gst-base.info, Node: DateTime-time zones, Prev: DateTime-testing, Up: DateTime -1.57.10 DateTime: time zones +1.58.10 DateTime: time zones ---------------------------- asLocal @@ -7901,7 +8014,7 @@  File: gst-base.info, Node: DeferredVariableBinding, Next: Delay, Prev: DateTime, Up: Base classes -1.58 DeferredVariableBinding +1.59 DeferredVariableBinding ============================ Defined in namespace Smalltalk @@ -7920,7 +8033,7 @@  File: gst-base.info, Node: DeferredVariableBinding class-basic, Next: DeferredVariableBinding-basic, Up: DeferredVariableBinding -1.58.1 DeferredVariableBinding class: basic +1.59.1 DeferredVariableBinding class: basic ------------------------------------------- key: aSymbol class: aClass defaultDictionary: aDictionary @@ -7936,7 +8049,7 @@  File: gst-base.info, Node: DeferredVariableBinding-basic, Next: DeferredVariableBinding-storing, Prev: DeferredVariableBinding class-basic, Up: DeferredVariableBinding -1.58.2 DeferredVariableBinding: basic +1.59.2 DeferredVariableBinding: basic ------------------------------------- path @@ -7952,7 +8065,7 @@  File: gst-base.info, Node: DeferredVariableBinding-storing, Prev: DeferredVariableBinding-basic, Up: DeferredVariableBinding -1.58.3 DeferredVariableBinding: storing +1.59.3 DeferredVariableBinding: storing --------------------------------------- printOn: aStream @@ -7965,7 +8078,7 @@  File: gst-base.info, Node: Delay, Next: DelayedAdaptor, Prev: DeferredVariableBinding, Up: Base classes -1.59 Delay +1.60 Delay ========== Defined in namespace Smalltalk @@ -7990,7 +8103,7 @@  File: gst-base.info, Node: Delay class-instance creation, Next: Delay class-timer process, Up: Delay -1.59.1 Delay class: instance creation +1.60.1 Delay class: instance creation ------------------------------------- forMilliseconds: millisecondCount @@ -8007,7 +8120,7 @@  File: gst-base.info, Node: Delay class-timer process, Next: Delay-accessing, Prev: Delay class-instance creation, Up: Delay -1.59.2 Delay class: timer process +1.60.2 Delay class: timer process --------------------------------- handleDelayEvent @@ -8034,7 +8147,7 @@  File: gst-base.info, Node: Delay-accessing, Next: Delay-comparing, Prev: Delay class-timer process, Up: Delay -1.59.3 Delay: accessing +1.60.3 Delay: accessing ----------------------- delayDuration @@ -8047,7 +8160,7 @@  File: gst-base.info, Node: Delay-comparing, Next: Delay-delaying, Prev: Delay-accessing, Up: Delay -1.59.4 Delay: comparing +1.60.4 Delay: comparing ----------------------- = aDelay @@ -8060,7 +8173,7 @@  File: gst-base.info, Node: Delay-delaying, Next: Delay-initialization, Prev: Delay-comparing, Up: Delay -1.59.5 Delay: delaying +1.60.5 Delay: delaying ---------------------- wait @@ -8072,7 +8185,7 @@  File: gst-base.info, Node: Delay-initialization, Next: Delay-instance creation, Prev: Delay-delaying, Up: Delay -1.59.6 Delay: initialization +1.60.6 Delay: initialization ---------------------------- initForMilliseconds: value @@ -8082,7 +8195,7 @@  File: gst-base.info, Node: Delay-instance creation, Prev: Delay-initialization, Up: Delay -1.59.7 Delay: instance creation +1.60.7 Delay: instance creation ------------------------------- initUntilMilliseconds: value @@ -8093,7 +8206,7 @@  File: gst-base.info, Node: DelayedAdaptor, Next: Dictionary, Prev: Delay, Up: Base classes -1.60 DelayedAdaptor +1.61 DelayedAdaptor =================== Defined in namespace Smalltalk @@ -8111,7 +8224,7 @@  File: gst-base.info, Node: DelayedAdaptor-accessing, Up: DelayedAdaptor -1.60.1 DelayedAdaptor: accessing +1.61.1 DelayedAdaptor: accessing -------------------------------- trigger @@ -8128,7 +8241,7 @@  File: gst-base.info, Node: Dictionary, Next: DirectedMessage, Prev: DelayedAdaptor, Up: Base classes -1.61 Dictionary +1.62 Dictionary =============== Defined in namespace Smalltalk @@ -8152,7 +8265,7 @@ * Dictionary-dictionary enumerating:: (instance) * Dictionary-dictionary removing:: (instance) * Dictionary-dictionary testing:: (instance) -* Dictionary-polymorphism hacks:: (instance) +* Dictionary-namespace protocol:: (instance) * Dictionary-printing:: (instance) * Dictionary-rehashing:: (instance) * Dictionary-storing:: (instance) @@ -8161,7 +8274,7 @@  File: gst-base.info, Node: Dictionary class-instance creation, Next: Dictionary-accessing, Up: Dictionary -1.61.1 Dictionary class: instance creation +1.62.1 Dictionary class: instance creation ------------------------------------------ from: anArray @@ -8176,7 +8289,7 @@  File: gst-base.info, Node: Dictionary-accessing, Next: Dictionary-awful ST-80 compatibility hacks, Prev: Dictionary class-instance creation, Up: Dictionary -1.61.2 Dictionary: accessing +1.62.2 Dictionary: accessing ---------------------------- add: newObject @@ -8240,7 +8353,7 @@  File: gst-base.info, Node: Dictionary-awful ST-80 compatibility hacks, Next: Dictionary-dictionary enumerating, Prev: Dictionary-accessing, Up: Dictionary -1.61.3 Dictionary: awful ST-80 compatibility hacks +1.62.3 Dictionary: awful ST-80 compatibility hacks -------------------------------------------------- findKeyIndex: key @@ -8252,7 +8365,7 @@  File: gst-base.info, Node: Dictionary-dictionary enumerating, Next: Dictionary-dictionary removing, Prev: Dictionary-awful ST-80 compatibility hacks, Up: Dictionary -1.61.4 Dictionary: dictionary enumerating +1.62.4 Dictionary: dictionary enumerating ----------------------------------------- associationsDo: aBlock @@ -8287,7 +8400,7 @@  File: gst-base.info, Node: Dictionary-dictionary removing, Next: Dictionary-dictionary testing, Prev: Dictionary-dictionary enumerating, Up: Dictionary -1.61.5 Dictionary: dictionary removing +1.62.5 Dictionary: dictionary removing -------------------------------------- remove: anAssociation @@ -8312,9 +8425,9 @@  -File: gst-base.info, Node: Dictionary-dictionary testing, Next: Dictionary-polymorphism hacks, Prev: Dictionary-dictionary removing, Up: Dictionary +File: gst-base.info, Node: Dictionary-dictionary testing, Next: Dictionary-namespace protocol, Prev: Dictionary-dictionary removing, Up: Dictionary -1.61.6 Dictionary: dictionary testing +1.62.6 Dictionary: dictionary testing ------------------------------------- includes: anObject @@ -8333,19 +8446,68 @@  -File: gst-base.info, Node: Dictionary-polymorphism hacks, Next: Dictionary-printing, Prev: Dictionary-dictionary testing, Up: Dictionary +File: gst-base.info, Node: Dictionary-namespace protocol, Next: Dictionary-printing, Prev: Dictionary-dictionary testing, Up: Dictionary -1.61.7 Dictionary: polymorphism hacks +1.62.7 Dictionary: namespace protocol ------------------------------------- +allSuperspaces + Answer all the receiver's superspaces in a collection + +allSuperspacesDo: aBlock + Evaluate aBlock once for each of the receiver's superspaces (which + is none for BindingDictionary). + +definedKeys + Answer a kind of Set containing the keys of the receiver + +definesKey: key + Answer whether the receiver defines the given key. `Defines' means + that the receiver's superspaces, if any, are not considered. + +hereAssociationAt: key + Return the association for the variable named as specified by + `key' *in this namespace*. If the key is not found search will + *not* be carried on in superspaces and the method will fail. + +hereAssociationAt: key ifAbsent: aBlock + Return the association for the variable named as specified by + `key' *in this namespace*. If the key is not found search will + *not* be carried on in superspaces and aBlock will be immediately + evaluated. + +hereAt: key + Return the value associated to the variable named as specified by + `key' *in this namespace*. If the key is not found search will + *not* be carried on in superspaces and the method will fail. + +hereAt: key ifAbsent: aBlock + Return the value associated to the variable named as specified by + `key' *in this namespace*. If the key is not found search will + *not* be carried on in superspaces and aBlock will be immediately + evaluated. + +inheritsFrom: aNamespace + Answer whether aNamespace is one of the receiver's direct and + indirect superspaces + +superspace + Answer the receiver's superspace, which is nil for + BindingDictionary. + withAllSuperspaces - This method is needed by the compiler + Answer the receiver and all of its superspaces in a collection, + which is none for BindingDictionary + +withAllSuperspacesDo: aBlock + Invokes aBlock for the receiver and all superspaces, both direct + and indirect (though a BindingDictionary does not have any).  -File: gst-base.info, Node: Dictionary-printing, Next: Dictionary-rehashing, Prev: Dictionary-polymorphism hacks, Up: Dictionary +File: gst-base.info, Node: Dictionary-printing, Next: Dictionary-rehashing, Prev: Dictionary-namespace protocol, Up: Dictionary -1.61.8 Dictionary: printing +1.62.8 Dictionary: printing --------------------------- inspect @@ -8359,7 +8521,7 @@  File: gst-base.info, Node: Dictionary-rehashing, Next: Dictionary-storing, Prev: Dictionary-printing, Up: Dictionary -1.61.9 Dictionary: rehashing +1.62.9 Dictionary: rehashing ---------------------------- rehash @@ -8369,7 +8531,7 @@  File: gst-base.info, Node: Dictionary-storing, Next: Dictionary-testing, Prev: Dictionary-rehashing, Up: Dictionary -1.61.10 Dictionary: storing +1.62.10 Dictionary: storing --------------------------- storeOn: aStream @@ -8379,7 +8541,7 @@  File: gst-base.info, Node: Dictionary-testing, Prev: Dictionary-storing, Up: Dictionary -1.61.11 Dictionary: testing +1.62.11 Dictionary: testing --------------------------- = aDictionary @@ -8392,7 +8554,7 @@  File: gst-base.info, Node: DirectedMessage, Next: Directory, Prev: Dictionary, Up: Base classes -1.62 DirectedMessage +1.63 DirectedMessage ==================== Defined in namespace Smalltalk @@ -8412,7 +8574,7 @@  File: gst-base.info, Node: DirectedMessage class-creating instances, Next: DirectedMessage-accessing, Up: DirectedMessage -1.62.1 DirectedMessage class: creating instances +1.63.1 DirectedMessage class: creating instances ------------------------------------------------ receiver: anObject selector: aSymbol @@ -8434,7 +8596,7 @@  File: gst-base.info, Node: DirectedMessage-accessing, Next: DirectedMessage-basic, Prev: DirectedMessage class-creating instances, Up: DirectedMessage -1.62.2 DirectedMessage: accessing +1.63.2 DirectedMessage: accessing --------------------------------- receiver @@ -8447,7 +8609,7 @@  File: gst-base.info, Node: DirectedMessage-basic, Next: DirectedMessage-multiple process, Prev: DirectedMessage-accessing, Up: DirectedMessage -1.62.3 DirectedMessage: basic +1.63.3 DirectedMessage: basic ----------------------------- printOn: aStream @@ -8464,7 +8626,7 @@  File: gst-base.info, Node: DirectedMessage-multiple process, Next: DirectedMessage-saving and loading, Prev: DirectedMessage-basic, Up: DirectedMessage -1.62.4 DirectedMessage: multiple process +1.63.4 DirectedMessage: multiple process ---------------------------------------- fork @@ -8483,7 +8645,7 @@  File: gst-base.info, Node: DirectedMessage-saving and loading, Prev: DirectedMessage-multiple process, Up: DirectedMessage -1.62.5 DirectedMessage: saving and loading +1.63.5 DirectedMessage: saving and loading ------------------------------------------ reconstructOriginalObject @@ -8495,11 +8657,11 @@  File: gst-base.info, Node: Directory, Next: DLD, Prev: DirectedMessage, Up: Base classes -1.63 Directory +1.64 Directory ============== Defined in namespace Smalltalk -Superclass: File +Superclass: Object Category: Streams-Files I am the counterpart of File in a tree-structured file system: I can iterate through the file that I contain and construct new @@ -8512,13 +8674,11 @@ * Directory class-file name management:: (class) * Directory class-file operations:: (class) * Directory class-reading system defaults:: (class) -* Directory-accessing:: (instance) -* Directory-enumerating:: (instance)  File: gst-base.info, Node: Directory class-file name management, Next: Directory class-file operations, Up: Directory -1.63.1 Directory class: file name management +1.64.1 Directory class: file name management -------------------------------------------- append: fileName to: directory @@ -8536,7 +8696,7 @@  File: gst-base.info, Node: Directory class-file operations, Next: Directory class-reading system defaults, Prev: Directory class-file name management, Up: Directory -1.63.2 Directory class: file operations +1.64.2 Directory class: file operations --------------------------------------- allFilesMatching: aPattern do: aBlock @@ -8557,9 +8717,9 @@  -File: gst-base.info, Node: Directory class-reading system defaults, Next: Directory-accessing, Prev: Directory class-file operations, Up: Directory +File: gst-base.info, Node: Directory class-reading system defaults, Prev: Directory class-file operations, Up: Directory -1.63.3 Directory class: reading system defaults +1.64.3 Directory class: reading system defaults ----------------------------------------------- home @@ -8571,21 +8731,20 @@ kernel Answer the path in which a local version of the GNU Smalltalk kernel's Smalltalk source files were searched when the image was - created + created. libexec Answer the path to GNU Smalltalk's auxiliary executables localKernel Answer the path to the GNU Smalltalk kernel's Smalltalk source - files. Same as `Directory kernel' since GNU Smalltalk 2.4. + files. Same as `Directory kernel' since GNU Smalltalk 3.0. module Answer the path to GNU Smalltalk's dynamically loaded modules systemKernel - Answer the path to the GNU Smalltalk kernel's Smalltalk source - files. Same as `Directory kernel' since GNU Smalltalk 2.4. + Answer the path to the installed Smalltalk kernel source files. temporary Answer the path in which temporary files can be created. This is @@ -8597,71 +8756,9 @@  -File: gst-base.info, Node: Directory-accessing, Next: Directory-enumerating, Prev: Directory class-reading system defaults, Up: Directory - -1.63.4 Directory: accessing ---------------------------- - -at: aName - Answer a File or Directory object as appropriate for a file named - 'aName' in the directory represented by the receiver. - -directoryAt: aName - Answer a Directory object for a file named `aName' residing in the - directory represented by the receiver. - -fileAt: aName - Answer a File object for a file named `aName' residing in the - directory represented by the receiver. - -fullNameAt: aName - Answer a String containing the full path to a file named `aName' - which resides in the directory represented by the receiver. - -includes: aName - Answer whether a file named `aName' exists in the directory - represented by the receiver. - -nameAt: aName - Answer a String containing the path to a file named `aName' which - resides in the directory represented by the receiver. - -pathTo: destName - Compute the relative path from the receiver to destName. - - - -File: gst-base.info, Node: Directory-enumerating, Prev: Directory-accessing, Up: Directory - -1.63.5 Directory: enumerating ------------------------------ - -allFilesMatching: aPattern do: aBlock - Evaluate aBlock on the File objects that match aPattern (according - to String>>#match:) in the directory named by the receiver. - Recursively descend into directories. - -contents - Answer an Array with the names of the files in the directory - represented by the receiver. - -do: aBlock - Evaluate aBlock once for each file in the directory represented by - the receiver, passing its name. aBlock should not return. - -filesMatching: aPattern do: block - Evaluate block on the File objects that match aPattern (according - to String>>#match:) in the directory named by the receiver. - -namesMatching: aPattern do: block - Evaluate block on the file names that match aPattern (according to - String>>#match:) in the directory named by the receiver. - - - File: gst-base.info, Node: DLD, Next: DumperProxy, Prev: Directory, Up: Base classes -1.64 DLD +1.65 DLD ======== Defined in namespace Smalltalk @@ -8684,7 +8781,7 @@  File: gst-base.info, Node: DLD class-C call-outs, Next: DLD class-dynamic linking, Up: DLD -1.64.1 DLD class: C call-outs +1.65.1 DLD class: C call-outs ----------------------------- defineCFunc: aName as: aFuncAddr @@ -8694,7 +8791,7 @@  File: gst-base.info, Node: DLD class-dynamic linking, Prev: DLD class-C call-outs, Up: DLD -1.64.2 DLD class: dynamic linking +1.65.2 DLD class: dynamic linking --------------------------------- addLibrary: library @@ -8734,7 +8831,7 @@  File: gst-base.info, Node: DumperProxy, Next: Duration, Prev: DLD, Up: Base classes -1.65 DumperProxy +1.66 DumperProxy ================ Defined in namespace Smalltalk @@ -8753,7 +8850,7 @@  File: gst-base.info, Node: DumperProxy class-accessing, Next: DumperProxy class-instance creation, Up: DumperProxy -1.65.1 DumperProxy class: accessing +1.66.1 DumperProxy class: accessing ----------------------------------- acceptUsageForClass: aClass @@ -8767,7 +8864,7 @@  File: gst-base.info, Node: DumperProxy class-instance creation, Next: DumperProxy-saving and restoring, Prev: DumperProxy class-accessing, Up: DumperProxy -1.65.2 DumperProxy class: instance creation +1.66.2 DumperProxy class: instance creation ------------------------------------------- on: anObject @@ -8780,7 +8877,7 @@  File: gst-base.info, Node: DumperProxy-saving and restoring, Prev: DumperProxy class-instance creation, Up: DumperProxy -1.65.3 DumperProxy: saving and restoring +1.66.3 DumperProxy: saving and restoring ---------------------------------------- dumpTo: anObjectDumper @@ -8794,7 +8891,7 @@  File: gst-base.info, Node: Duration, Next: Error, Prev: DumperProxy, Up: Base classes -1.66 Duration +1.67 Duration ============= Defined in namespace Smalltalk @@ -8811,7 +8908,7 @@  File: gst-base.info, Node: Duration class-instance creation, Next: Duration class-instance creation (non ANSI), Up: Duration -1.66.1 Duration class: instance creation +1.67.1 Duration class: instance creation ---------------------------------------- days: d @@ -8831,7 +8928,7 @@  File: gst-base.info, Node: Duration class-instance creation (non ANSI), Next: Duration-arithmetics, Prev: Duration class-instance creation, Up: Duration -1.66.2 Duration class: instance creation (non ANSI) +1.67.2 Duration class: instance creation (non ANSI) --------------------------------------------------- fromDays: days seconds: secs offset: unused @@ -8843,7 +8940,7 @@  File: gst-base.info, Node: Duration-arithmetics, Prev: Duration class-instance creation (non ANSI), Up: Duration -1.66.3 Duration: arithmetics +1.67.3 Duration: arithmetics ---------------------------- * factor @@ -8888,7 +8985,7 @@  File: gst-base.info, Node: Error, Next: Exception, Prev: Duration, Up: Base classes -1.67 Error +1.68 Error ========== Defined in namespace Smalltalk @@ -8903,7 +9000,7 @@  File: gst-base.info, Node: Error-exception description, Up: Error -1.67.1 Error: exception description +1.68.1 Error: exception description ----------------------------------- description @@ -8917,7 +9014,7 @@  File: gst-base.info, Node: Exception, Next: ExceptionSet, Prev: Error, Up: Base classes -1.68 Exception +1.69 Exception ============== Defined in namespace Smalltalk @@ -8947,7 +9044,7 @@  File: gst-base.info, Node: Exception class-comparison, Next: Exception class-creating ExceptionCollections, Up: Exception -1.68.1 Exception class: comparison +1.69.1 Exception class: comparison ---------------------------------- goodness: anException @@ -8962,7 +9059,7 @@  File: gst-base.info, Node: Exception class-creating ExceptionCollections, Next: Exception class-initialization, Prev: Exception class-comparison, Up: Exception -1.68.2 Exception class: creating ExceptionCollections +1.69.2 Exception class: creating ExceptionCollections ----------------------------------------------------- , aTrappableEvent @@ -8973,7 +9070,7 @@  File: gst-base.info, Node: Exception class-initialization, Next: Exception class-instance creation, Prev: Exception class-creating ExceptionCollections, Up: Exception -1.68.3 Exception class: initialization +1.69.3 Exception class: initialization -------------------------------------- initialize @@ -8984,7 +9081,7 @@  File: gst-base.info, Node: Exception class-instance creation, Next: Exception class-interoperability with TrappableEvents, Prev: Exception class-initialization, Up: Exception -1.68.4 Exception class: instance creation +1.69.4 Exception class: instance creation ----------------------------------------- new @@ -9003,7 +9100,7 @@  File: gst-base.info, Node: Exception class-interoperability with TrappableEvents, Next: Exception-comparison, Prev: Exception class-instance creation, Up: Exception -1.68.5 Exception class: interoperability with TrappableEvents +1.69.5 Exception class: interoperability with TrappableEvents ------------------------------------------------------------- allExceptionsDo: aBlock @@ -9017,7 +9114,7 @@  File: gst-base.info, Node: Exception-comparison, Next: Exception-exception description, Prev: Exception class-interoperability with TrappableEvents, Up: Exception -1.68.6 Exception: comparison +1.69.6 Exception: comparison ---------------------------- = anObject @@ -9032,7 +9129,7 @@  File: gst-base.info, Node: Exception-exception description, Next: Exception-exception signaling, Prev: Exception-comparison, Up: Exception -1.68.7 Exception: exception description +1.69.7 Exception: exception description --------------------------------------- defaultAction @@ -9048,7 +9145,7 @@  File: gst-base.info, Node: Exception-exception signaling, Prev: Exception-exception description, Up: Exception -1.68.8 Exception: exception signaling +1.69.8 Exception: exception signaling ------------------------------------- signal @@ -9062,7 +9159,7 @@  File: gst-base.info, Node: ExceptionSet, Next: False, Prev: Exception, Up: Base classes -1.69 ExceptionSet +1.70 ExceptionSet ================= Defined in namespace Smalltalk @@ -9081,7 +9178,7 @@  File: gst-base.info, Node: ExceptionSet class-instance creation, Next: ExceptionSet-enumerating, Up: ExceptionSet -1.69.1 ExceptionSet class: instance creation +1.70.1 ExceptionSet class: instance creation -------------------------------------------- new @@ -9091,7 +9188,7 @@  File: gst-base.info, Node: ExceptionSet-enumerating, Prev: ExceptionSet class-instance creation, Up: ExceptionSet -1.69.2 ExceptionSet: enumerating +1.70.2 ExceptionSet: enumerating -------------------------------- allExceptionsDo: aBlock @@ -9110,7 +9207,7 @@  File: gst-base.info, Node: False, Next: File, Prev: ExceptionSet, Up: Base classes -1.70 False +1.71 False ========== Defined in namespace Smalltalk @@ -9128,7 +9225,7 @@  File: gst-base.info, Node: False-basic, Next: False-C hacks, Up: False -1.70.1 False: basic +1.71.1 False: basic ------------------- & aBoolean @@ -9172,7 +9269,7 @@  File: gst-base.info, Node: False-C hacks, Next: False-printing, Prev: False-basic, Up: False -1.70.2 False: C hacks +1.71.2 False: C hacks --------------------- asCBooleanValue @@ -9182,7 +9279,7 @@  File: gst-base.info, Node: False-printing, Prev: False-C hacks, Up: False -1.70.3 False: printing +1.71.3 False: printing ---------------------- printOn: aStream @@ -9192,35 +9289,34 @@  File: gst-base.info, Node: File, Next: FileDescriptor, Prev: False, Up: Base classes -1.71 File +1.72 File ========= Defined in namespace Smalltalk -Superclass: Object +Superclass: FilePath Category: Streams-Files - I expose the syntax of file names, including paths. I know how to - manipulate such a path by splitting it into its components. In - addition, I expose information about files (both real and virtual) - such as their size and timestamps. + I enable access to the properties of files that are on disk. * Menu: * File class-C functions:: (class) -* File class-file name management:: (class) * File class-file operations:: (class) +* File class-initialization:: (class) * File class-instance creation:: (class) * File class-reading system defaults:: (class) * File class-testing:: (class) * File-accessing:: (instance) +* File-basic:: (instance) +* File-directory operations:: (instance) * File-file name management:: (instance) * File-file operations:: (instance) -* File-printing:: (instance) +* File-still unclassified:: (instance) * File-testing:: (instance)  -File: gst-base.info, Node: File class-C functions, Next: File class-file name management, Up: File +File: gst-base.info, Node: File class-C functions, Next: File class-file operations, Up: File -1.71.1 File class: C functions +1.72.1 File class: C functions ------------------------------ errno @@ -9231,52 +9327,9 @@  -File: gst-base.info, Node: File class-file name management, Next: File class-file operations, Prev: File class-C functions, Up: File - -1.71.2 File class: file name management ---------------------------------------- - -extensionFor: aString - Answer the extension of a file named `aString'. Note: the - extension includes an initial dot. - -fullNameFor: aString - Answer the full path to a file called `aString', resolving the `.' - and `..' directory entries, and answer the result. `/..' is the - same as '/'. - -pathFor: aString - Determine the path of the name of a file called `aString', and - answer the result. With the exception of the root directory, the - final slash is stripped. - -pathFor: aString ifNone: aBlock - Determine the path of the name of a file called `aString', and - answer the result. With the exception of the root directory, the - final slash is stripped. If there is no path, evaluate aBlock and - return the result. - -pathFrom: srcName to: destName - Answer the relative path to destName when the current directory is - srcName's directory. - -stripExtensionFrom: aString - Remove the extension from the name of a file called `aString', and - answer the result. - -stripFileNameFor: aString - Determine the path of the name of a file called `aString', and - answer the result as a directory name including the final slash. - -stripPathFrom: aString - Remove the path from the name of a file called `aString', and - answer the file name plus extension. - - - -File: gst-base.info, Node: File class-file operations, Next: File class-instance creation, Prev: File class-file name management, Up: File +File: gst-base.info, Node: File class-file operations, Next: File class-initialization, Prev: File class-C functions, Up: File -1.71.3 File class: file operations +1.72.2 File class: file operations ---------------------------------- checkError @@ -9305,24 +9358,34 @@  -File: gst-base.info, Node: File class-instance creation, Next: File class-reading system defaults, Prev: File class-file operations, Up: File +File: gst-base.info, Node: File class-initialization, Next: File class-instance creation, Prev: File class-file operations, Up: File + +1.72.3 File class: initialization +--------------------------------- + +initialize + Initialize the receiver's class variables + + + +File: gst-base.info, Node: File class-instance creation, Next: File class-reading system defaults, Prev: File class-initialization, Up: File -1.71.4 File class: instance creation +1.72.4 File class: instance creation ------------------------------------ name: aName - Answer a new file with the given path. The path is not validated - until some of the fields of the newly created objects are accessed + Answer a new file with the given path. The path is turned into an + absolute path. -on: aVFSHandler - Answer a new file with the given path. The handler that returns - the information is aVFSHandler +path: aString + Answer a new file with the given path. The path is not validated + until some of the fields of the newly created objects are accessed  File: gst-base.info, Node: File class-reading system defaults, Next: File class-testing, Prev: File class-instance creation, Up: File -1.71.5 File class: reading system defaults +1.72.5 File class: reading system defaults ------------------------------------------ executable @@ -9335,7 +9398,7 @@  File: gst-base.info, Node: File class-testing, Next: File-accessing, Prev: File class-reading system defaults, Up: File -1.71.6 File class: testing +1.72.6 File class: testing -------------------------- exists: fileName @@ -9357,27 +9420,35 @@  -File: gst-base.info, Node: File-accessing, Next: File-file name management, Prev: File class-testing, Up: File +File: gst-base.info, Node: File-accessing, Next: File-basic, Prev: File class-testing, Up: File -1.71.7 File: accessing +1.72.7 File: accessing ---------------------- +asString + Answer the name of the file identified by the receiver + +at: aString + Answer a File or Directory object as appropriate for a file named + 'aName' in the directory represented by the receiver. + creationTime Answer the creation time of the file identified by the receiver. On some operating systems, this could actually be the last change time (the `last change time' has to do with permissions, ownership and the like). -lastAccessTime - Answer the last access time of the file identified by the receiver +isDirectory + Answer whether the file is a directory. -lastAccessTime: aDateTime - Update the last access time of the file corresponding to the - receiver, to be aDateTime. +isSocket + Answer whether the file is an AF_UNIX socket. -lastAccessTime: accessDateTime lastModifyTime: modifyDateTime - Update the timestamps of the file corresponding to the receiver, - to be accessDateTime and modifyDateTime. +isSymbolicLink + Answer whether the file is a symbolic link. + +lastAccessTime + Answer the last access time of the file identified by the receiver lastChangeTime Answer the last change time of the file identified by the receiver @@ -9389,10 +9460,6 @@ Answer the last modify time of the file identified by the receiver (the `last modify time' has to do with the actual file contents). -lastModifyTime: aDateTime - Update the last modification timestamp of the file corresponding - to the receiver, to be aDateTime. - mode Answer the permission bits for the file identified by the receiver @@ -9403,6 +9470,9 @@ name Answer the name of the file identified by the receiver +pathTo: destName + Compute the relative path from the receiver to destName. + refresh Refresh the statistics for the receiver @@ -9411,158 +9481,132 @@  -File: gst-base.info, Node: File-file name management, Next: File-file operations, Prev: File-accessing, Up: File +File: gst-base.info, Node: File-basic, Next: File-directory operations, Prev: File-accessing, Up: File -1.71.8 File: file name management ---------------------------------- +1.72.8 File: basic +------------------ -directory - Answer the Directory object for the receiver's path += aFile + Answer whether the receiver represents the same file as the + receiver. -extension - Answer the extension of the receiver +hash + Answer a hash value for the receiver. -fullName - Answer the full name of the receiver, resolving the `.' and `..' - directory entries, and answer the result. Answer nil if the name - is invalid (such as '/usr/../../badname') -path - Answer the path (if any) of the receiver + +File: gst-base.info, Node: File-directory operations, Next: File-file name management, Prev: File-basic, Up: File -stripExtension - Answer the path (if any) and file name of the receiver +1.72.9 File: directory operations +--------------------------------- + +createDirectories + Create the receiver as a directory, together with all its parents. -stripFileName - Answer the path of the receiver, always including a directory name - (possibly `.') and the final directory separator +createDirectory + Create the receiver as a directory. -stripPath - Answer the file name and extension (if any) of the receiver +namesDo: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing its name. aBlock should not return.  -File: gst-base.info, Node: File-file operations, Next: File-printing, Prev: File-file name management, Up: File +File: gst-base.info, Node: File-file name management, Next: File-file operations, Prev: File-directory operations, Up: File -1.71.9 File: file operations ----------------------------- +1.72.10 File: file name management +---------------------------------- -contents - Open a read-only FileStream on the receiver, read its contents, - close the stream and answer the contents +full + Answer the full name of the receiver, resolving the `.' and `..' + directory entries, and answer the result. Answer nil if the name + is invalid (such as '/usr/../../badname') -open: mode - Open the receiver in the given mode (as answered by FileStream's - class constant methods) -open: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods). Upon failure, evaluate aBlock. + +File: gst-base.info, Node: File-file operations, Next: File-still unclassified, Prev: File-file name management, Up: File -openDescriptor: mode - Open the receiver in the given mode (as answered by FileStream's - class constant methods) +1.72.11 File: file operations +----------------------------- -openDescriptor: mode ifFail: aBlock +lastAccessTime: accessDateTime lastModifyTime: modifyDateTime + Set the receiver's timestamps to be accessDateTime and + modifyDateTime. + +open: class mode: mode ifFail: aBlock Open the receiver in the given mode (as answered by FileStream's - class constant methods). Upon failure, evaluate aBlock. + class constant methods) -pathFrom: dirName +pathFrom: dir Compute the relative path from the directory dirName to the receiver -readStream - Open a read-only FileStream on the receiver - remove - Remove the file identified by the receiver + Remove the file with the given path name -renameTo: newName - Rename the file identified by the receiver to newName +renameTo: newFileName + Rename the file with the given path name to newFileName symlinkAs: destName Create destName as a symbolic link of the receiver. The appropriate relative path is computed automatically. symlinkFrom: srcName - Create the receiver as a symbolic link from srcName (relative to - the path of the receiver). - -touch - Update the timestamp of the file corresponding to the receiver. - -withReadStreamDo: aBlock - Invoke aBlock with a reading stream open on me, closing it when - the dynamic extent of aBlock ends. - -withWriteStreamDo: aBlock - Invoke aBlock with a writing stream open on me, closing it when - the dynamic extent of aBlock ends. - -writeStream - Open a write-only FileStream on the receiver + Create the receiver as a symlink from path destName  -File: gst-base.info, Node: File-printing, Next: File-testing, Prev: File-file operations, Up: File - -1.71.10 File: printing ----------------------- +File: gst-base.info, Node: File-still unclassified, Next: File-testing, Prev: File-file operations, Up: File -displayOn: aStream - Print a representation of the receiver on aStream. +1.72.12 File: still unclassified +-------------------------------- -printOn: aStream - Print a representation of the receiver on aStream. +, aName + Answer an object of the same kind as the receiver, whose name is + suffixed with aName.  -File: gst-base.info, Node: File-testing, Prev: File-printing, Up: File +File: gst-base.info, Node: File-testing, Prev: File-still unclassified, Up: File -1.71.11 File: testing +1.72.13 File: testing --------------------- exists Answer whether a file with the name contained in the receiver does exist. +isAbsolute + Answer whether the receiver identifies an absolute path. + isAccessible Answer whether a directory with the name contained in the receiver - does exist and can be accessed - -isDirectory - Answer whether a file with the name contained in the receiver does - exist and identifies a directory. + does exist and is accessible isExecutable Answer whether a file with the name contained in the receiver does exist and is executable -isFile - Answer whether a file with the name contained in the receiver does - exist and does not identify a directory. +isFileSystemPath + Answer whether the receiver corresponds to a real filesystem path. isReadable Answer whether a file with the name contained in the receiver does exist and is readable -isSymbolicLink - Answer whether a file with the name contained in the receiver does - exist and does not identify a directory. - isWriteable Answer whether a file with the name contained in the receiver does exist and is writeable  -File: gst-base.info, Node: FileDescriptor, Next: FileSegment, Prev: File, Up: Base classes +File: gst-base.info, Node: FileDescriptor, Next: FilePath, Prev: File, Up: Base classes -1.72 FileDescriptor +1.73 FileDescriptor =================== Defined in namespace Smalltalk -Superclass: ByteStream +Superclass: Stream Category: Streams-Files My instances are what conventional programmers think of as files. My instance creation methods accept the name of a disk file (or @@ -9579,18 +9623,21 @@ * FileDescriptor class-still unclassified:: (class) * FileDescriptor-accessing:: (instance) * FileDescriptor-basic:: (instance) +* FileDescriptor-binary I/O:: (instance) * FileDescriptor-built ins:: (instance) * FileDescriptor-class type methods:: (instance) * FileDescriptor-initialize-release:: (instance) * FileDescriptor-low-level access:: (instance) * FileDescriptor-overriding inherited methods:: (instance) +* FileDescriptor-polymorphism:: (instance) +* FileDescriptor-positioning:: (instance) * FileDescriptor-printing:: (instance) * FileDescriptor-testing:: (instance)  File: gst-base.info, Node: FileDescriptor class-initialization, Next: FileDescriptor class-instance creation, Up: FileDescriptor -1.72.1 FileDescriptor class: initialization +1.73.1 FileDescriptor class: initialization ------------------------------------------- initialize @@ -9603,7 +9650,7 @@  File: gst-base.info, Node: FileDescriptor class-instance creation, Next: FileDescriptor class-still unclassified, Prev: FileDescriptor class-initialization, Up: FileDescriptor -1.72.2 FileDescriptor class: instance creation +1.73.2 FileDescriptor class: instance creation ---------------------------------------------- append @@ -9708,7 +9755,7 @@  File: gst-base.info, Node: FileDescriptor class-still unclassified, Next: FileDescriptor-accessing, Prev: FileDescriptor class-instance creation, Up: FileDescriptor -1.72.3 FileDescriptor class: still unclassified +1.73.3 FileDescriptor class: still unclassified ----------------------------------------------- open: fileName mode: fileMode @@ -9729,7 +9776,7 @@  File: gst-base.info, Node: FileDescriptor-accessing, Next: FileDescriptor-basic, Prev: FileDescriptor class-still unclassified, Up: FileDescriptor -1.72.4 FileDescriptor: accessing +1.73.4 FileDescriptor: accessing -------------------------------- canRead @@ -9753,9 +9800,16 @@ fd Return the OS file descriptor of the file +file + Return the name of the file + isOpen Answer whether the file is still open +isPeerAlive + Present for compatibility with sockets. For files, it answers + whether the file is still open + isPipe Answer whether the file is a pipe or an actual disk file @@ -9768,68 +9822,3 @@ other Processes to run. - -File: gst-base.info, Node: FileDescriptor-basic, Next: FileDescriptor-built ins, Prev: FileDescriptor-accessing, Up: FileDescriptor - -1.72.5 FileDescriptor: basic ----------------------------- - -checkError - Perform error checking. By default, we call File - class>>#checkError. - -close - Close the file - -contents - Answer the whole contents of the file - -copyFrom: from to: to - Answer the contents of the file between the two given positions - -finalize - Close the file if it is still open by the time the object becomes - garbage. - -invalidate - Invalidate a file descriptor - -next - Return the next character in the file, or nil at eof - -nextByte - Return the next byte in the file, or nil at eof - -nextPut: aCharacter - Store aCharacter on the file - -nextPutByte: anInteger - Store the byte, anInteger, on the file - -nextPutByteArray: aByteArray - Store aByteArray on the file - -peek - Returns the next element of the stream without moving the pointer. - Returns nil when at end of stream. - -position - Answer the zero-based position from the start of the file - -position: n - Set the file pointer to the zero-based position n - -reset - Reset the stream to its beginning - -shutdown - Close the transmission side of a full-duplex connection. This is - useful on read-write pipes. - -size - Return the current size of the file, in bytes - -truncate - Truncate the file at the current position - - diff -rNu smalltalk-3.0.3/doc/gst-base.info-2 smalltalk-3.0.4/doc/gst-base.info-2 --- smalltalk-3.0.3/doc/gst-base.info-2 2008-05-14 12:35:05.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-base.info-2 2008-08-09 15:31:03.000000000 +0200 @@ -14,11 +14,149 @@ in the section entitled "GNU Free Documentation License".  -File: gst-base.info, Node: FileDescriptor-built ins, Next: FileDescriptor-class type methods, Prev: FileDescriptor-basic, Up: FileDescriptor +File: gst-base.info, Node: FileDescriptor-basic, Next: FileDescriptor-binary I/O, Prev: FileDescriptor-accessing, Up: FileDescriptor -1.72.6 FileDescriptor: built ins +1.73.5 FileDescriptor: basic +---------------------------- + +checkError + Perform error checking. By default, we call File + class>>#checkError. + +close + Close the file + +contents + Answer the whole contents of the file + +copyFrom: from to: to + Answer the contents of the file between the two given positions + +finalize + Close the file if it is still open by the time the object becomes + garbage. + +invalidate + Invalidate a file descriptor + +next + Return the next character in the file, or nil at eof + +nextByte + Return the next byte in the file, or nil at eof + +nextPut: aCharacter + Store aCharacter on the file + +nextPutByteArray: aByteArray + Store aByteArray on the file + +peek + Returns the next element of the stream without moving the pointer. + Returns nil when at end of stream. + +peekFor: anObject + Returns whether the next element of the stream is equal to + anObject, without moving the pointer if it is not. + +position + Answer the zero-based position from the start of the file + +position: n + Set the file pointer to the zero-based position n + +reset + Reset the stream to its beginning + +shutdown + Close the transmission side of a full-duplex connection. This is + useful on read-write pipes. + +size + Return the current size of the file, in bytes + +truncate + Truncate the file at the current position + + + +File: gst-base.info, Node: FileDescriptor-binary I/O, Next: FileDescriptor-built ins, Prev: FileDescriptor-basic, Up: FileDescriptor + +1.73.6 FileDescriptor: binary I/O +--------------------------------- + +nextByteArray: numBytes + Return the next numBytes bytes in the byte array + +nextDouble + Return the next 64-bit float in the byte array + +nextFloat + Return the next 32-bit float in the byte array + +nextLong + Return the next 4 bytes in the byte array, interpreted as a 32 bit + signed int + +nextLongLong + Return the next 8 bytes in the byte array, interpreted as a 64 bit + signed int + +nextPutByte: anInteger + Store anInteger (range: -128..255) on the byte array + +nextPutDouble: aDouble + Store aDouble as a 64-bit float in the byte array + +nextPutFloat: aFloat + Return the next 32-bit float in the byte array + +nextPutInt64: anInteger + Store anInteger (range: -2^63..2^64-1) on the byte array as 4 bytes + +nextPutLong: anInteger + Store anInteger (range: -2^31..2^32-1) on the byte array as 4 bytes + +nextPutShort: anInteger + Store anInteger (range: -32768..65535) on the byte array as 2 bytes + +nextShort + Return the next 2 bytes in the byte array, interpreted as a 16 bit + signed int + +nextSignedByte + Return the next byte in the byte array, interpreted as a 8 bit + signed number + +nextUint64 + Return the next 8 bytes in the byte array, interpreted as a 64 bit + unsigned int + +nextUlong + Return the next 4 bytes in the byte array, interpreted as a 32 bit + unsigned int + +nextUshort + Return the next 2 bytes in the byte array, interpreted as a 16 bit + unsigned int + + + +File: gst-base.info, Node: FileDescriptor-built ins, Next: FileDescriptor-class type methods, Prev: FileDescriptor-binary I/O, Up: FileDescriptor + +1.73.7 FileDescriptor: built ins -------------------------------- +fileIn + File in the contents of the receiver. During a file in operation, + global variables (starting with an uppercase letter) that are not + declared don't yield an `unknown variable' error. Instead, they + are defined as nil in the `Undeclared' dictionary (a global + variable residing in Smalltalk). As soon as you add the variable + to a namespace (for example by creating a class) the Association + will be removed from Undeclared and reused in the namespace, so + that the old references will automagically point to the new value. + fileOp: ioFuncIndex Private - Used to limit the number of primitives used by FileStreams @@ -63,7 +201,7 @@  File: gst-base.info, Node: FileDescriptor-class type methods, Next: FileDescriptor-initialize-release, Prev: FileDescriptor-built ins, Up: FileDescriptor -1.72.7 FileDescriptor: class type methods +1.73.8 FileDescriptor: class type methods ----------------------------------------- isBinary @@ -79,7 +217,7 @@  File: gst-base.info, Node: FileDescriptor-initialize-release, Next: FileDescriptor-low-level access, Prev: FileDescriptor-class type methods, Up: FileDescriptor -1.72.8 FileDescriptor: initialize-release +1.73.9 FileDescriptor: initialize-release ----------------------------------------- addToBeFinalized @@ -88,9 +226,6 @@ initialize Initialize the receiver's instance variables -newBuffer - Private - Answer a String to be used as the receiver's buffer - readStream Answer myself, or an alternate stream coerced for reading. @@ -101,57 +236,28 @@  File: gst-base.info, Node: FileDescriptor-low-level access, Next: FileDescriptor-overriding inherited methods, Prev: FileDescriptor-initialize-release, Up: FileDescriptor -1.72.9 FileDescriptor: low-level access ---------------------------------------- - -nextHunk - Answer the next buffers worth of stuff in the Stream represented - by the receiver. Do at most one actual input operation. - -read: byteArray - Ignoring any buffering, try to fill byteArray with the contents of - the file +1.73.10 FileDescriptor: low-level access +---------------------------------------- -read: byteArray from: position to: end - Ignoring any buffering, try to fill the given range of byteArray - with the contents of the file +next: n putAll: aCollection startingAt: position + Put the characters in the supplied range of aCollection in the file -read: byteArray numBytes: anInteger - Ignoring any buffering, try to fill anInteger bytes of byteArray +nextAvailable: n into: aCollection startingAt: position + Ignoring any buffering, try to fill the given range of aCollection with the contents of the file -write: byteArray - Ignoring any buffering, try to write the contents of byteArray in - the file - -write: byteArray from: position to: end - Ignoring any buffering, try to write to the file the given range - of byteArray, starting at the position-th element and ending at - the end-th. - -write: byteArray numBytes: anInteger - Ignoring any buffering, try to write to the file the first - anInteger bytes of byteArray -  -File: gst-base.info, Node: FileDescriptor-overriding inherited methods, Next: FileDescriptor-printing, Prev: FileDescriptor-low-level access, Up: FileDescriptor +File: gst-base.info, Node: FileDescriptor-overriding inherited methods, Next: FileDescriptor-polymorphism, Prev: FileDescriptor-low-level access, Up: FileDescriptor -1.72.10 FileDescriptor: overriding inherited methods +1.73.11 FileDescriptor: overriding inherited methods ---------------------------------------------------- isEmpty Answer whether the receiver is empty -next: anInteger - Return the next 'anInteger' characters from the stream, as a - String. - -next: n putAll: aCollection startingAt: position - Put the characters in the supplied range of aCollection in the file - -nextByteArray: anInteger - Return the next 'anInteger' bytes from the stream, as a ByteArray. +nextPutAllOn: aStream + Put all the characters of the receiver in aStream. reverseContents Return the contents of the file from the last byte to the first @@ -164,9 +270,29 @@  -File: gst-base.info, Node: FileDescriptor-printing, Next: FileDescriptor-testing, Prev: FileDescriptor-overriding inherited methods, Up: FileDescriptor +File: gst-base.info, Node: FileDescriptor-polymorphism, Next: FileDescriptor-positioning, Prev: FileDescriptor-overriding inherited methods, Up: FileDescriptor + +1.73.12 FileDescriptor: polymorphism +------------------------------------ + +pastEnd + The end of the stream has been reached. Signal a Notification. + + + +File: gst-base.info, Node: FileDescriptor-positioning, Next: FileDescriptor-printing, Prev: FileDescriptor-polymorphism, Up: FileDescriptor -1.72.11 FileDescriptor: printing +1.73.13 FileDescriptor: positioning +----------------------------------- + +isPositionable + Answer true if the stream supports moving backwards with #skip:. + + + +File: gst-base.info, Node: FileDescriptor-printing, Next: FileDescriptor-testing, Prev: FileDescriptor-positioning, Up: FileDescriptor + +1.73.14 FileDescriptor: printing -------------------------------- printOn: aStream @@ -176,7 +302,7 @@  File: gst-base.info, Node: FileDescriptor-testing, Prev: FileDescriptor-printing, Up: FileDescriptor -1.72.12 FileDescriptor: testing +1.73.15 FileDescriptor: testing ------------------------------- atEnd @@ -184,916 +310,1188 @@  -File: gst-base.info, Node: FileSegment, Next: FileStream, Prev: FileDescriptor, Up: Base classes +File: gst-base.info, Node: FilePath, Next: FileSegment, Prev: FileDescriptor, Up: Base classes -1.73 FileSegment -================ +1.74 FilePath +============= Defined in namespace Smalltalk Superclass: Object -Category: Language-Implementation - My instances represent sections of files. I am primarily used by - the compiler to record source code locations. I am not a part of - the normal Smalltalk-80 kernel; I am specific to the GNU Smalltalk - implementation. +Category: Streams-Files + I expose the syntax of file names, including paths. I know how to + manipulate such a path by splitting it into its components. In + addition, I expose information about files (both real and virtual) + such as their size and timestamps. * Menu: -* FileSegment class-basic:: (class) -* FileSegment class-installing:: (class) -* FileSegment-basic:: (instance) -* FileSegment-equality:: (instance) +* FilePath class-file name management:: (class) +* FilePath class-still unclassified:: (class) +* FilePath-accessing:: (instance) +* FilePath-converting:: (instance) +* FilePath-decoration:: (instance) +* FilePath-directory operations:: (instance) +* FilePath-enumerating:: (instance) +* FilePath-file name management:: (instance) +* FilePath-file operations:: (instance) +* FilePath-printing:: (instance) +* FilePath-still unclassified:: (instance) +* FilePath-testing:: (instance) +* FilePath-virtual filesystems:: (instance)  -File: gst-base.info, Node: FileSegment class-basic, Next: FileSegment class-installing, Up: FileSegment +File: gst-base.info, Node: FilePath class-file name management, Next: FilePath class-still unclassified, Up: FilePath -1.73.1 FileSegment class: basic -------------------------------- +1.74.1 FilePath class: file name management +------------------------------------------- -on: aFile startingAt: startPos for: sizeInteger - Create a new FileSegment referring to the contents of the given - file, from the startPos-th byte and for sizeInteger bytes +append: fileName to: directory + Answer the name of a file named `fileName' which resides in a + directory named `directory'. +extensionFor: aString + Answer the extension of a file named `aString'. Note: the + extension includes an initial dot. - -File: gst-base.info, Node: FileSegment class-installing, Next: FileSegment-basic, Prev: FileSegment class-basic, Up: FileSegment +fullNameFor: aString + Answer the full path to a file called `aString', resolving the `.' + and `..' directory entries, and answer the result. `/..' is the + same as '/'. -1.73.2 FileSegment class: installing ------------------------------------- +pathFor: aString + Determine the path of the name of a file called `aString', and + answer the result. With the exception of the root directory, the + final slash is stripped. -relocateFrom: startPath to: endPath - Remove startPath from all paths that start with it, and replace it - with endPath. Needed to support $(DESTDIR) when installing +pathFor: aString ifNone: aBlock + Determine the path of the name of a file called `aString', and + answer the result. With the exception of the root directory, the + final slash is stripped. If there is no path, evaluate aBlock and + return the result. +pathFrom: srcName to: destName + Answer the relative path to destName when the current directory is + srcName's directory. - -File: gst-base.info, Node: FileSegment-basic, Next: FileSegment-equality, Prev: FileSegment class-installing, Up: FileSegment +stripExtensionFrom: aString + Remove the extension from the name of a file called `aString', and + answer the result. -1.73.3 FileSegment: basic -------------------------- +stripFileNameFor: aString + Determine the path of the name of a file called `aString', and + answer the result as a directory name including the final slash. -asString - Answer a String containing the required segment of the file +stripPathFrom: aString + Remove the path from the name of a file called `aString', and + answer the file name plus extension. -copyFrom: from to: to - Answer a String containing the given subsegment of the file. As - for streams, from and to are 0-based. -fileName - Answer the name of the file containing the segment + +File: gst-base.info, Node: FilePath class-still unclassified, Next: FilePath-accessing, Prev: FilePath class-file name management, Up: FilePath -filePos - Answer the position in the file where the segment starts +1.74.2 FilePath class: still unclassified +----------------------------------------- -relocateFrom: startPath to: endPath map: map - If the path starts with startPath, remove that part of the path - and replace it with endPath. map is a Dictionary that is used so - that equal filenames stay equal, without increasing the amount of - memory that the image uses. +isAbsolute: aString + Answer whether aString is an absolute ptah. -size - Answer the length of the segment -withFileDo: aBlock - Evaluate aBlock passing it the FileStream in which the segment - identified by the receiver is stored + +File: gst-base.info, Node: FilePath-accessing, Next: FilePath-converting, Prev: FilePath class-still unclassified, Up: FilePath +1.74.3 FilePath: accessing +-------------------------- - -File: gst-base.info, Node: FileSegment-equality, Prev: FileSegment-basic, Up: FileSegment +at: aName + Answer a File or Directory object as appropriate for a file named + 'aName' in the directory represented by the receiver. + +creationTime + Answer the creation time of the file identified by the receiver. + On some operating systems, this could actually be the last change + time (the `last change time' has to do with permissions, ownership + and the like). + +includes: aName + Answer whether a file named `aName' exists in the directory + represented by the receiver. + +lastAccessTime + Answer the last access time of the file identified by the receiver + +lastAccessTime: aDateTime + Update the last access time of the file corresponding to the + receiver, to be aDateTime. + +lastAccessTime: accessDateTime lastModifyTime: modifyDateTime + Update the timestamps of the file corresponding to the receiver, + to be accessDateTime and modifyDateTime. + +lastChangeTime + Answer the last change time of the file identified by the receiver + (the `last change time' has to do with permissions, ownership and + the like). On some operating systems, this could actually be the + file creation time. + +lastModifyTime + Answer the last modify time of the file identified by the receiver + (the `last modify time' has to do with the actual file contents). + +lastModifyTime: aDateTime + Update the last modification timestamp of the file corresponding + to the receiver, to be aDateTime. + +mode + Answer the permission bits for the file identified by the receiver + +mode: anInteger + Set the permission bits for the file identified by the receiver to + be anInteger. -1.73.4 FileSegment: equality ----------------------------- +pathTo: destName + Compute the relative path from the receiver to destName. -= aFileSegment - Answer whether the receiver and aFileSegment are equal. +refresh + Refresh the statistics for the receiver -hash - Answer an hash value for the receiver. +size + Answer the size of the file identified by the receiver  -File: gst-base.info, Node: FileStream, Next: Float, Prev: FileSegment, Up: Base classes - -1.74 FileStream -=============== +File: gst-base.info, Node: FilePath-converting, Next: FilePath-decoration, Prev: FilePath-accessing, Up: FilePath -Defined in namespace Smalltalk -Superclass: FileDescriptor -Category: Streams-Files - My instances are what conventional programmers think of as files. - My instance creation methods accept the name of a disk file (or - any named file object, such as /dev/rmt0 on UNIX or MTA0: on VMS). +1.74.4 FilePath: converting +--------------------------- -* Menu: +asFile + Answer the receiver. -* FileStream class-file-in:: (class) -* FileStream class-standard streams:: (class) -* FileStream-basic:: (instance) -* FileStream-buffering:: (instance) -* FileStream-compiling:: (instance) -* FileStream-overriding inherited methods:: (instance) -* FileStream-testing:: (instance)  -File: gst-base.info, Node: FileStream class-file-in, Next: FileStream class-standard streams, Up: FileStream +File: gst-base.info, Node: FilePath-decoration, Next: FilePath-directory operations, Prev: FilePath-converting, Up: FilePath -1.74.1 FileStream class: file-in --------------------------------- +1.74.5 FilePath: decoration +--------------------------- -fileIn: aFileName - File in the aFileName file. During a file in operation, global - variables (starting with an uppercase letter) that are not - declared yet don't yield an `unknown variable' error. Instead, - they are defined as nil in the `Undeclared' dictionary (a global - variable residing in Smalltalk). As soon as you add the variable - to a namespace (for example by creating a class) the Association - will be removed from Undeclared and reused in the namespace, so - that the old references will automagically point to the new value. +all + Return a decorator of the receiver that will provide recursive + descent into directories for iteration methods. -fileIn: aFileName ifMissing: aSymbol - Conditionally do a file in, only if the key (often a class) - specified by 'aSymbol' is not present in the Smalltalk system - dictionary already. During a file in operation, global variables - (starting with an uppercase letter) that are not declared don't - yield an `unknown variable' error. Instead, they are defined as - nil in the `Undeclared' dictionary (a global variable residing in - Smalltalk). As soon as you add the variable to a namespace (for - example by creating a class) the Association will be removed from - Undeclared and reused in the namespace, so that the old references - will automagically point to the new value. -fileIn: aFileName ifTrue: aBoolean - Conditionally do a file in, only if the supplied boolean is true. - During a file in operation, global variables (starting with an - uppercase letter) that are not declared don't yield an `unknown - variable' error. Instead, they are defined as nil in the - `Undeclared' dictionary (a global variable residing in Smalltalk). - As soon as you add the variable to a namespace (for example by - creating a class) the Association will be removed from Undeclared - and reused in the namespace, so that the old references will - automagically point to the new value. + +File: gst-base.info, Node: FilePath-directory operations, Next: FilePath-enumerating, Prev: FilePath-decoration, Up: FilePath -fileIn: aFileName line: lineInteger from: realFileName at: aCharPos - File in the aFileName file giving errors such as if it was loaded - from the given line, file name and starting position (instead of - 1). +1.74.6 FilePath: directory operations +------------------------------------- -generateMakefileOnto: aStream - Generate a make file for the file-ins since record was last set to - true. Store it on aStream +nameAt: aName + Answer a FilePath for a file named `aName' residing in the + directory represented by the receiver. -initialize - Private - Initialize the receiver's class variables -record: recordFlag - Set whether Smalltalk should record information about nested - file-ins. When recording is enabled, use #generateMakefileOnto: - to automatically generate a valid makefile for the intervening - file-ins. + +File: gst-base.info, Node: FilePath-enumerating, Next: FilePath-file name management, Prev: FilePath-directory operations, Up: FilePath -require: assoc - Conditionally do a file in from the value of assoc, only if the - key of assoc is not present in the Smalltalk system dictionary - already. During a file in operation, global variables (starting - with an uppercase letter) that are not declared don't yield an - `unknown variable' error. Instead, they are defined as nil in the - `Undeclared' dictionary (a global variable residing in Smalltalk). - As soon as you add the variable to a namespace (for example by - creating a class) the Association will be removed from Undeclared - and reused in the namespace, so that the old references will - automagically point to the new value. +1.74.7 FilePath: enumerating +---------------------------- -verbose: verboseFlag - Set whether Smalltalk should output debugging messages when filing - in +allFilesMatching: aPattern do: aBlock + Evaluate aBlock on the File objects that match aPattern (according + to String>>#match:) in the directory named by the receiver. + Recursively descend into directories. + +directories + Answer an Array with Directory objects for the subdirectories of + the directory represented by the receiver. +do: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing its name. - -File: gst-base.info, Node: FileStream class-standard streams, Next: FileStream-basic, Prev: FileStream class-file-in, Up: FileStream +entries + Answer an Array with File or Directory objects for the contents of + the directory represented by the receiver. + +entryNames + Answer an Array with the names of the files in the directory + represented by the receiver. -1.74.2 FileStream class: standard streams ------------------------------------------ +files + Answer an Array with File objects for the contents of the directory + represented by the receiver. -stderr - Answer a FileStream that is attached the Smalltalk program's - standard error file handle, which can be used for error messages - and diagnostics issued by the program. +filesMatching: aPattern + Evaluate aBlock once for each file in the directory represented by + the receiver, passing a File or Directory object to aBlock. + Returns the *names* of the files for which aBlock returns true. + +filesMatching: aPattern do: block + Evaluate block on the File objects that match aPattern (according + to String>>#match:) in the directory named by the receiver. + +namesDo: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing its name. + +namesMatching: aPattern do: block + Evaluate block on the file names that match aPattern (according to + String>>#match:) in the directory named by the receiver. -stdin - Answer a FileStream that is attached the Smalltalk program's - standard input file handle, which is the normal source of input - for the program. +reject: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing a File or Directory object to aBlock. + Returns the *names* of the files for which aBlock returns true. -stdout - Answer a FileStream that is attached the Smalltalk program's - standard output file handle; this is used for normal output from - the program. +select: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing a File or Directory object to aBlock. + Returns the *names* of the files for which aBlock returns true.  -File: gst-base.info, Node: FileStream-basic, Next: FileStream-buffering, Prev: FileStream class-standard streams, Up: FileStream - -1.74.3 FileStream: basic ------------------------- +File: gst-base.info, Node: FilePath-file name management, Next: FilePath-file operations, Prev: FilePath-enumerating, Up: FilePath -bufferStart - Private - Answer the offset from the start of the file - corresponding to the beginning of the read buffer. +1.74.8 FilePath: file name management +------------------------------------- -copyFrom: from to: to - Answer the contents of the file between the two given positions +directory + Answer the Directory object for the receiver's path -next - Return the next character in the file, or nil at eof +extension + Answer the extension of the receiver -nextByte - Return the next byte in the file, or nil at eof +full + Answer the full name of the receiver, resolving the `.' and `..' + directory entries, and answer the result. Answer nil if the name + is invalid (such as '/usr/../../badname') -nextPut: aCharacter - Store aCharacter on the file +name + Answer the full path to the receiver -peek - Return the next character in the file, or nil at eof. Don't - advance the file pointer. +parent + Answer the Directory object for the receiver's path -position - Answer the zero-based position from the start of the file +path + Answer the path (if any) of the receiver -position: n - Set the file pointer to the zero-based position n +stripExtension + Answer the path (if any) and file name of the receiver -size - Return the current size of the file, in bytes +stripFileName + Answer the path of the receiver, always including a directory name + (possibly `.') and the final directory separator -truncate - Truncate the file at the current position +stripPath + Answer the file name and extension (if any) of the receiver  -File: gst-base.info, Node: FileStream-buffering, Next: FileStream-compiling, Prev: FileStream-basic, Up: FileStream +File: gst-base.info, Node: FilePath-file operations, Next: FilePath-printing, Prev: FilePath-file name management, Up: FilePath -1.74.4 FileStream: buffering ----------------------------- +1.74.9 FilePath: file operations +-------------------------------- -bufferSize - Answer the file's current buffer +contents + Open a read-only FileStream on the receiver, read its contents, + close the stream and answer the contents -bufferSize: bufSize - Flush the file and set the buffer's size to bufSize +fileIn + File in the receiver -clean - Synchronize the file descriptor's state with the object's state. +open: mode + Open the receiver in the given mode (as answered by FileStream's + class constant methods) + +open: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods). Upon failure, evaluate aBlock. + +open: class mode: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods) + +openDescriptor: mode + Open the receiver in the given mode (as answered by FileStream's + class constant methods) + +openDescriptor: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods). Upon failure, evaluate aBlock. -fill - Private - Fill the input buffer +pathFrom: dirName + Compute the relative path from the directory dirName to the + receiver -flush - Flush the output buffer. +readStream + Open a read-only FileStream on the receiver -newBuffer - Private - Answer a String to be used as the receiver's buffer +remove + Remove the file identified by the receiver -next: n bufferAll: aCollection startingAt: pos - Private - Assuming that the buffer has space for n characters, - store n characters of aCollection in the buffer, starting from the - pos-th. +renameTo: newName + Rename the file identified by the receiver to newName -next: anInteger into: answer - Private - Read up to anInteger bytes from the stream and store them - into answer. Return `answer' itself, possibly truncated if we - could not read the full amount of data. - -nextHunk - Answer the next buffers worth of stuff in the Stream represented - by the receiver. For n consecutive calls to this method, we do n - - 1 or n actual input operation. +symlinkAs: destName + Create destName as a symbolic link of the receiver. The + appropriate relative path is computed automatically. -pendingWrite - Answer whether the output buffer is full. +symlinkFrom: srcName + Create the receiver as a symbolic link from srcName (relative to + the path of the receiver). +touch + Update the timestamp of the file corresponding to the receiver. - -File: gst-base.info, Node: FileStream-compiling, Next: FileStream-overriding inherited methods, Prev: FileStream-buffering, Up: FileStream +withReadStreamDo: aBlock + Invoke aBlock with a reading stream open on me, closing it when + the dynamic extent of aBlock ends. -1.74.5 FileStream: compiling ----------------------------- +withWriteStreamDo: aBlock + Invoke aBlock with a writing stream open on me, closing it when + the dynamic extent of aBlock ends. -segmentFrom: startPos to: endPos - Answer an object that, when sent #asString, will yield the result - of sending `copyFrom: startPos to: endPos' to the receiver +writeStream + Open a write-only FileStream on the receiver  -File: gst-base.info, Node: FileStream-overriding inherited methods, Next: FileStream-testing, Prev: FileStream-compiling, Up: FileStream - -1.74.6 FileStream: overriding inherited methods ------------------------------------------------ +File: gst-base.info, Node: FilePath-printing, Next: FilePath-still unclassified, Prev: FilePath-file operations, Up: FilePath -next: anInteger - Return the next 'anInteger' characters from the stream, as a - String. - -next: n putAll: aCollection startingAt: pos - Write n values from aCollection, the first being at pos. +1.74.10 FilePath: printing +-------------------------- -nextByteArray: anInteger - Return the next 'anInteger' bytes from the stream, as a ByteArray. +displayOn: aStream + Print a representation of the receiver on aStream. -nextLine - Returns a collection of the same type that the stream accesses, - containing the next line up to the next new-line character. - Returns the entire rest of the stream's contents if no new-line - character is found. +printOn: aStream + Print a representation of the receiver on aStream.  -File: gst-base.info, Node: FileStream-testing, Prev: FileStream-overriding inherited methods, Up: FileStream +File: gst-base.info, Node: FilePath-still unclassified, Next: FilePath-testing, Prev: FilePath-printing, Up: FilePath -1.74.7 FileStream: testing --------------------------- +1.74.11 FilePath: still unclassified +------------------------------------ -atEnd - Answer whether data has come to an end +/ aName + Answer a File or Directory object as appropriate for a file named + 'aName' in the directory represented by the receiver.  -File: gst-base.info, Node: Float, Next: FloatD, Prev: FileStream, Up: Base classes +File: gst-base.info, Node: FilePath-testing, Next: FilePath-virtual filesystems, Prev: FilePath-still unclassified, Up: FilePath -1.75 Float -========== - -Defined in namespace Smalltalk -Superclass: Number -Category: Language-Data types - My instances represent floating point numbers that have arbitrary - precision. Besides the standard numerical operations, they provide - transcendental operations too. They implement IEEE-754 correctly - if the hardware supports it. - -* Menu: - -* Float class-byte-order dependancies:: (class) -* Float class-characterization:: (class) -* Float-arithmetic:: (instance) -* Float-basic:: (instance) -* Float-built ins:: (instance) -* Float-coercing:: (instance) -* Float-coercion:: (instance) -* Float-comparing:: (instance) -* Float-printing:: (instance) -* Float-storing:: (instance) -* Float-testing:: (instance) -* Float-testing functionality:: (instance) -* Float-transcendental operations:: (instance) +1.74.12 FilePath: testing +------------------------- - -File: gst-base.info, Node: Float class-byte-order dependancies, Next: Float class-characterization, Up: Float +exists + Answer whether a file with the name contained in the receiver does + exist. -1.75.1 Float class: byte-order dependancies -------------------------------------------- +isAbsolute + Answer whether the receiver identifies an absolute path. -signByte - Answer the byte of the receiver that contains the sign bit +isAccessible + Answer whether a directory with the name contained in the receiver + does exist and can be accessed +isDirectory + Answer whether a file with the name contained in the receiver does + exist and identifies a directory. - -File: gst-base.info, Node: Float class-characterization, Next: Float-arithmetic, Prev: Float class-byte-order dependancies, Up: Float +isExecutable + Answer whether a file with the name contained in the receiver does + exist and is executable -1.75.2 Float class: characterization ------------------------------------- +isFile + Answer whether a file with the name contained in the receiver does + exist and does not identify a directory. -denormalized - Answer whether instances of the receiver can be in denormalized - form. +isFileSystemPath + Answer whether the receiver corresponds to a real filesystem path. -e - Returns the value of e. Hope is that it is precise enough +isReadable + Answer whether a file with the name contained in the receiver does + exist and is readable -epsilon - Return the smallest Float x for which is 1 + x ~= 1 +isRelative + Answer whether the receiver identifies a relative path. -fmin - Return the smallest Float that is > 0. +isSymbolicLink + Answer whether a file with the name contained in the receiver does + exist and identifies a symbolic link. -fminDenormalized - Return the smallest Float that is > 0 if denormalized values are - supported, else return 0. +isWriteable + Answer whether a file with the name contained in the receiver does + exist and is writeable -ln10 - Returns the value of ln 10. Hope is that it is precise enough -log10Base2 - Returns the value of log2 10. Hope is that it is precise enough + +File: gst-base.info, Node: FilePath-virtual filesystems, Prev: FilePath-testing, Up: FilePath -pi - Returns the value of pi. Hope is that it is precise enough +1.74.13 FilePath: virtual filesystems +------------------------------------- -radix - Answer the base in which computations between instances of the - receiver are made. This should be 2 on about every known - computer, so GNU Smalltalk always answers 2. +zip + Not commented.  -File: gst-base.info, Node: Float-arithmetic, Next: Float-basic, Prev: Float class-characterization, Up: Float +File: gst-base.info, Node: FileSegment, Next: FileStream, Prev: FilePath, Up: Base classes -1.75.3 Float: arithmetic ------------------------- - -integerPart - Return the receiver's integer part +1.75 FileSegment +================ -negated - Return the negation of the receiver. Unlike 0-self, this converts - correctly signed zeros. +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + My instances represent sections of files. I am primarily used by + the compiler to record source code locations. I am not a part of + the normal Smalltalk-80 kernel; I am specific to the GNU Smalltalk + implementation. -raisedToInteger: anInteger - Return self raised to the anInteger-th power +* Menu: +* FileSegment class-basic:: (class) +* FileSegment class-installing:: (class) +* FileSegment-basic:: (instance) +* FileSegment-equality:: (instance) +* FileSegment-printing:: (instance)  -File: gst-base.info, Node: Float-basic, Next: Float-built ins, Prev: Float-arithmetic, Up: Float +File: gst-base.info, Node: FileSegment class-basic, Next: FileSegment class-installing, Up: FileSegment -1.75.4 Float: basic -------------------- +1.75.1 FileSegment class: basic +------------------------------- -hash - Answer an hash value for the receiver +on: aFile startingAt: startPos for: sizeInteger + Create a new FileSegment referring to the contents of the given + file, from the startPos-th byte and for sizeInteger bytes. Note + that FileSegments should always be created with full paths because + relative paths are interpreted to be relative to the kernel + directory.  -File: gst-base.info, Node: Float-built ins, Next: Float-coercing, Prev: Float-basic, Up: Float - -1.75.5 Float: built ins ------------------------ +File: gst-base.info, Node: FileSegment class-installing, Next: FileSegment-basic, Prev: FileSegment class-basic, Up: FileSegment -arcCos - Answer the arc-cosine of the receiver +1.75.2 FileSegment class: installing +------------------------------------ -arcSin - Answer the arc-sine of the receiver +relocate + Remove the kernel path from all paths that start with it. Needed + to support $(DESTDIR) and relocatable installation. -arcTan - Answer the arc-tangent of the receiver -ceiling - Answer the integer part of the receiver, truncated towards - +infinity + +File: gst-base.info, Node: FileSegment-basic, Next: FileSegment-equality, Prev: FileSegment class-installing, Up: FileSegment -cos - Answer the cosine of the receiver +1.75.3 FileSegment: basic +------------------------- -exp - Answer 'e' (2.718281828459...) raised to the receiver +asString + Answer a String containing the required segment of the file -floor - Answer the integer part of the receiver, truncated towards - -infinity +copyFrom: from to: to + Answer a String containing the given subsegment of the file. As + for streams, from and to are 0-based. -ln - Answer the logarithm of the receiver in base 'e' - (2.718281828459...) +file + Answer the File object for the file containing the segment -primHash - Private - Answer an hash value for the receiver +fileName + Answer the name of the file containing the segment -raisedTo: aNumber - Answer the receiver raised to its aNumber power +filePos + Answer the position in the file where the segment starts -sin - Answer the sine of the receiver +relocateFrom: startPath map: map + If the path starts with startPath, remove that part of the path. + map is a Dictionary that is used so that equal filenames stay + equal, without increasing the amount of memory that the image uses. -sqrt - Answer the square root of the receiver +size + Answer the length of the segment -tan - Answer the tangent of the receiver +withFileDo: aBlock + Evaluate aBlock passing it the FileStream in which the segment + identified by the receiver is stored  -File: gst-base.info, Node: Float-coercing, Next: Float-coercion, Prev: Float-built ins, Up: Float - -1.75.6 Float: coercing ----------------------- +File: gst-base.info, Node: FileSegment-equality, Next: FileSegment-printing, Prev: FileSegment-basic, Up: FileSegment -asExactFraction - Convert the receiver into a fraction with optimal approximation, - but with usually huge terms. +1.75.4 FileSegment: equality +---------------------------- -asFraction - Convert the receiver into a fraction with a good (but undefined) - approximation += aFileSegment + Answer whether the receiver and aFileSegment are equal. -truncated - Convert the receiver to an Integer. Only used for LargeIntegers, - there are primitives for the other cases. +hash + Answer an hash value for the receiver.  -File: gst-base.info, Node: Float-coercion, Next: Float-comparing, Prev: Float-coercing, Up: Float +File: gst-base.info, Node: FileSegment-printing, Prev: FileSegment-equality, Up: FileSegment -1.75.7 Float: coercion ----------------------- +1.75.5 FileSegment: printing +---------------------------- -asCNumber - Convert the receiver to a kind of number that is understood by the - C call-out mechanism. +printedFileName + Answer a printed representation of the file containing the segment. + While introducing some ambiguity, this representation is compact + eliminates the path for kernel files, and produces a relative path + from the current working directory for other files.  -File: gst-base.info, Node: Float-comparing, Next: Float-printing, Prev: Float-coercion, Up: Float - -1.75.8 Float: comparing ------------------------ +File: gst-base.info, Node: FileStream, Next: Float, Prev: FileSegment, Up: Base classes -max: aNumber - Answer the maximum between the receiver and aNumber. Redefine in - subclasses if necessary to ensure that if either self or aNumber - is a NaN, it is always answered. +1.76 FileStream +=============== -min: aNumber - Answer the minimum between the receiver and aNumber. Redefine in - subclasses if necessary to ensure that if either self or aNumber - is a NaN, it is always answered. +Defined in namespace Smalltalk +Superclass: FileDescriptor +Category: Streams-Files + My instances are what conventional programmers think of as files. + My instance creation methods accept the name of a disk file (or + any named file object, such as /dev/rmt0 on UNIX or MTA0: on VMS). -withSignOf: aNumber - Answer the receiver, with its sign possibly changed to match that - of aNumber. +* Menu: +* FileStream class-file-in:: (class) +* FileStream class-standard streams:: (class) +* FileStream-basic:: (instance) +* FileStream-buffering:: (instance) +* FileStream-compiling:: (instance) +* FileStream-initialize-release:: (instance) +* FileStream-overriding inherited methods:: (instance) +* FileStream-testing:: (instance)  -File: gst-base.info, Node: Float-printing, Next: Float-storing, Prev: Float-comparing, Up: Float +File: gst-base.info, Node: FileStream class-file-in, Next: FileStream class-standard streams, Up: FileStream -1.75.9 Float: printing ----------------------- +1.76.1 FileStream class: file-in +-------------------------------- -printOn: aStream - Print a representation of the receiver on aStream +fileIn: aFileName + File in the aFileName file. During a file in operation, global + variables (starting with an uppercase letter) that are not + declared yet don't yield an `unknown variable' error. Instead, + they are defined as nil in the `Undeclared' dictionary (a global + variable residing in Smalltalk). As soon as you add the variable + to a namespace (for example by creating a class) the Association + will be removed from Undeclared and reused in the namespace, so + that the old references will automagically point to the new value. +fileIn: aFileName ifMissing: aSymbol + Conditionally do a file in, only if the key (often a class) + specified by 'aSymbol' is not present in the Smalltalk system + dictionary already. During a file in operation, global variables + (starting with an uppercase letter) that are not declared don't + yield an `unknown variable' error. Instead, they are defined as + nil in the `Undeclared' dictionary (a global variable residing in + Smalltalk). As soon as you add the variable to a namespace (for + example by creating a class) the Association will be removed from + Undeclared and reused in the namespace, so that the old references + will automagically point to the new value. - -File: gst-base.info, Node: Float-storing, Next: Float-testing, Prev: Float-printing, Up: Float +fileIn: aFileName ifTrue: aBoolean + Conditionally do a file in, only if the supplied boolean is true. + During a file in operation, global variables (starting with an + uppercase letter) that are not declared don't yield an `unknown + variable' error. Instead, they are defined as nil in the + `Undeclared' dictionary (a global variable residing in Smalltalk). + As soon as you add the variable to a namespace (for example by + creating a class) the Association will be removed from Undeclared + and reused in the namespace, so that the old references will + automagically point to the new value. -1.75.10 Float: storing ----------------------- +fileIn: aFileName line: lineInteger from: realFileName at: aCharPos + File in the aFileName file giving errors such as if it was loaded + from the given line, file name and starting position (instead of + 1). -isLiteralObject - Answer whether the receiver is expressible as a Smalltalk literal. +generateMakefileOnto: aStream + Generate a make file for the file-ins since record was last set to + true. Store it on aStream -storeLiteralOn: aStream - Store on aStream some Smalltalk code which compiles to the receiver +initialize + Private - Initialize the receiver's class variables -storeOn: aStream - Print a representation of the receiver on aStream +record: recordFlag + Set whether Smalltalk should record information about nested + file-ins. When recording is enabled, use #generateMakefileOnto: + to automatically generate a valid makefile for the intervening + file-ins. + +require: assoc + Conditionally do a file in from the value of assoc, only if the + key of assoc is not present in the Smalltalk system dictionary + already. During a file in operation, global variables (starting + with an uppercase letter) that are not declared don't yield an + `unknown variable' error. Instead, they are defined as nil in the + `Undeclared' dictionary (a global variable residing in Smalltalk). + As soon as you add the variable to a namespace (for example by + creating a class) the Association will be removed from Undeclared + and reused in the namespace, so that the old references will + automagically point to the new value. + +verbose: verboseFlag + Set whether Smalltalk should output debugging messages when filing + in  -File: gst-base.info, Node: Float-testing, Next: Float-testing functionality, Prev: Float-storing, Up: Float +File: gst-base.info, Node: FileStream class-standard streams, Next: FileStream-basic, Prev: FileStream class-file-in, Up: FileStream -1.75.11 Float: testing ----------------------- +1.76.2 FileStream class: standard streams +----------------------------------------- -isFinite - Answer whether the receiver does not represent infinity, nor a NaN +stderr + Answer a FileStream that is attached the Smalltalk program's + standard error file handle, which can be used for error messages + and diagnostics issued by the program. -isInfinite - Answer whether the receiver represents positive or negative - infinity +stdin + Answer a FileStream that is attached the Smalltalk program's + standard input file handle, which is the normal source of input + for the program. -isNaN - Answer whether the receiver represents a NaN +stdout + Answer a FileStream that is attached the Smalltalk program's + standard output file handle; this is used for normal output from + the program. -negative - Answer whether the receiver is negative -positive - Answer whether the receiver is positive. Negative zero is not - positive, so the definition is not simply >= 0. + +File: gst-base.info, Node: FileStream-basic, Next: FileStream-buffering, Prev: FileStream class-standard streams, Up: FileStream -sign - Answer 1 if the receiver is greater than 0, -1 if less than 0, - else 0. Negative zero is the same as positive zero. +1.76.3 FileStream: basic +------------------------ -strictlyPositive - Answer whether the receiver is > 0 +bufferStart + Private - Answer the offset from the start of the file + corresponding to the beginning of the read buffer. +copyFrom: from to: to + Answer the contents of the file between the two given positions - -File: gst-base.info, Node: Float-testing functionality, Next: Float-transcendental operations, Prev: Float-testing, Up: Float +next + Return the next character in the file, or nil at eof -1.75.12 Float: testing functionality ------------------------------------- +nextPut: aCharacter + Store aCharacter on the file -isFloat - Answer `true'. +peek + Return the next character in the file, or nil at eof. Don't + advance the file pointer. +position + Answer the zero-based position from the start of the file - -File: gst-base.info, Node: Float-transcendental operations, Prev: Float-testing functionality, Up: Float +position: n + Set the file pointer to the zero-based position n -1.75.13 Float: transcendental operations ----------------------------------------- +size + Return the current size of the file, in bytes -asFloat - Just defined for completeness. Return the receiver. +truncate + Truncate the file at the current position -ceilingLog: radix - Answer (self log: radix) ceiling. -estimatedLog - Answer an estimate of (self abs floorLog: 10) + +File: gst-base.info, Node: FileStream-buffering, Next: FileStream-compiling, Prev: FileStream-basic, Up: FileStream -floorLog: radix - Answer (self log: radix) floor. +1.76.4 FileStream: buffering +---------------------------- -log - Answer log base 10 of the receiver. +bufferSize + Answer the file's current buffer +bufferSize: bufSize + Flush the file and set the buffer's size to bufSize - -File: gst-base.info, Node: FloatD, Next: FloatE, Prev: Float, Up: Base classes +clean + Synchronize the file descriptor's state with the object's state. -1.76 FloatD -=========== +fill + Private - Fill the input buffer -Defined in namespace Smalltalk -Superclass: Float -Category: Language-Data types - My instances represent floating point numbers that have the same - accuracy as C's "double" numbers. +flush + Flush the output buffer. -* Menu: +newBuffer + Private - Answer a String to be used as the receiver's buffer -* FloatD class-byte-order dependencies:: (class) -* FloatD class-characterization:: (class) -* FloatD class-converting:: (class) -* FloatD-built ins:: (instance) -* FloatD-coercing:: (instance) +next: n bufferAll: aCollection startingAt: pos + Private - Assuming that the buffer has space for n characters, + store n characters of aCollection in the buffer, starting from the + pos-th. - -File: gst-base.info, Node: FloatD class-byte-order dependencies, Next: FloatD class-characterization, Up: FloatD +nextAvailable: anInteger into: aCollection startingAt: pos + Read up to anInteger bytes from the stream and store them into + aCollection. Return the number of bytes read. + +nextAvailable: anInteger putAllOn: aStream + Copy up to anInteger bytes from the stream into aStream. Return + the number of bytes read. -1.76.1 FloatD class: byte-order dependencies --------------------------------------------- +pendingWrite + Answer whether the output buffer is full. -fromBytes: aByteArray - Answer a float with the bytes in aByteArray, which are in - big-endian format. -signByte - Answer the byte of the receiver that contains the sign bit + +File: gst-base.info, Node: FileStream-compiling, Next: FileStream-initialize-release, Prev: FileStream-buffering, Up: FileStream + +1.76.5 FileStream: compiling +---------------------------- + +segmentFrom: startPos to: endPos + Answer an object that, when sent #asString, will yield the result + of sending `copyFrom: startPos to: endPos' to the receiver  -File: gst-base.info, Node: FloatD class-characterization, Next: FloatD class-converting, Prev: FloatD class-byte-order dependencies, Up: FloatD +File: gst-base.info, Node: FileStream-initialize-release, Next: FileStream-overriding inherited methods, Prev: FileStream-compiling, Up: FileStream -1.76.2 FloatD class: characterization +1.76.6 FileStream: initialize-release ------------------------------------- -decimalDigits - Return the number of decimal digits of precision for a FloatD. - Technically, if P is the precision for the representation, then - the decimal precision Q is the maximum number of decimal digits - such that any floating point number with Q base 10 digits can be - rounded to a floating point number with P base 2 digits and back - again, without change to the Q decimal digits. - -emax - Return the maximum allowable exponent for a FloatD that is finite. +initialize + Initialize the receiver's instance variables -emin - Return the maximum allowable exponent for a FloatD that is finite. -fmax - Return the largest normalized FloatD that is not infinite. + +File: gst-base.info, Node: FileStream-overriding inherited methods, Next: FileStream-testing, Prev: FileStream-initialize-release, Up: FileStream -fminNormalized - Return the smallest normalized FloatD that is > 0 +1.76.7 FileStream: overriding inherited methods +----------------------------------------------- -infinity - Return a FloatD that represents positive infinity. +next: n putAll: aCollection startingAt: pos + Write n values from aCollection, the first being at pos. -nan - Return a FloatD that represents a mathematically indeterminate - value (e.g. Inf - Inf, Inf / Inf). +nextLine + Returns a collection of the same type that the stream accesses, + containing the next line up to the next new-line character. + Returns the entire rest of the stream's contents if no new-line + character is found. -negativeInfinity - Return a FloatD that represents negative infinity. +nextPutAllOn: aStream + Put all the characters of the receiver in aStream. -precision - Answer the number of bits in the mantissa. 1 + (2^-precision) = 1 +upTo: aCharacter + Returns a collection of the same type that the stream accesses, + containing data up to aCharacter. Returns the entire rest of the + stream's contents if no such character is found.  -File: gst-base.info, Node: FloatD class-converting, Next: FloatD-built ins, Prev: FloatD class-characterization, Up: FloatD +File: gst-base.info, Node: FileStream-testing, Prev: FileStream-overriding inherited methods, Up: FileStream -1.76.3 FloatD class: converting -------------------------------- +1.76.8 FileStream: testing +-------------------------- -coerce: aNumber - Answer aNumber converted to a FloatD +atEnd + Answer whether data has come to an end  -File: gst-base.info, Node: FloatD-built ins, Next: FloatD-coercing, Prev: FloatD class-converting, Up: FloatD +File: gst-base.info, Node: Float, Next: FloatD, Prev: FileStream, Up: Base classes -1.76.4 FloatD: built ins ------------------------- +1.77 Float +========== -* arg - Multiply the receiver and arg and answer another Number +Defined in namespace Smalltalk +Superclass: Number +Category: Language-Data types + My instances represent floating point numbers that have arbitrary + precision. Besides the standard numerical operations, they provide + transcendental operations too. They implement IEEE-754 correctly + if the hardware supports it. -+ arg - Sum the receiver and arg and answer another Number +* Menu: -- arg - Subtract arg from the receiver and answer another Number +* Float class-byte-order dependancies:: (class) +* Float class-characterization:: (class) +* Float-arithmetic:: (instance) +* Float-basic:: (instance) +* Float-built ins:: (instance) +* Float-coercing:: (instance) +* Float-coercion:: (instance) +* Float-comparing:: (instance) +* Float-printing:: (instance) +* Float-storing:: (instance) +* Float-testing:: (instance) +* Float-testing functionality:: (instance) +* Float-transcendental operations:: (instance) -/ arg - Divide the receiver by arg and answer another FloatD + +File: gst-base.info, Node: Float class-byte-order dependancies, Next: Float class-characterization, Up: Float -< arg - Answer whether the receiver is less than arg +1.77.1 Float class: byte-order dependancies +------------------------------------------- -<= arg - Answer whether the receiver is less than or equal to arg +signByte + Answer the byte of the receiver that contains the sign bit -= arg - Answer whether the receiver is equal to arg -> arg - Answer whether the receiver is greater than arg + +File: gst-base.info, Node: Float class-characterization, Next: Float-arithmetic, Prev: Float class-byte-order dependancies, Up: Float ->= arg - Answer whether the receiver is greater than or equal to arg +1.77.2 Float class: characterization +------------------------------------ -asFloatE - Answer the receiver converted to a FloatE +denormalized + Answer whether instances of the receiver can be in denormalized + form. -asFloatQ - Answer the receiver converted to a FloatQ +e + Returns the value of e. Hope is that it is precise enough -exponent - Answer the exponent of the receiver in mantissa*2^exponent - representation ( |mantissa|<=1 ) +epsilon + Return the smallest Float x for which is 1 + x ~= 1 -fractionPart - Answer the fractional part of the receiver +fmin + Return the smallest Float that is > 0. -timesTwoPower: arg - Answer the receiver multiplied by 2^arg +fminDenormalized + Return the smallest Float that is > 0 if denormalized values are + supported, else return 0. -truncated - Truncate the receiver towards zero and answer the result +ln10 + Returns the value of ln 10. Hope is that it is precise enough -~= arg - Answer whether the receiver is not equal to arg +log10Base2 + Returns the value of log2 10. Hope is that it is precise enough +pi + Returns the value of pi. Hope is that it is precise enough - -File: gst-base.info, Node: FloatD-coercing, Prev: FloatD-built ins, Up: FloatD +radix + Answer the base in which computations between instances of the + receiver are made. This should be 2 on about every known + computer, so GNU Smalltalk always answers 2. -1.76.5 FloatD: coercing ------------------------ -asFloatD - Just defined for completeness. Return the receiver. + +File: gst-base.info, Node: Float-arithmetic, Next: Float-basic, Prev: Float class-characterization, Up: Float -coerce: aNumber - Coerce aNumber to the receiver's class +1.77.3 Float: arithmetic +------------------------ -generality - Answer the receiver's generality +integerPart + Return the receiver's integer part -unity - Coerce 1 to the receiver's class +negated + Return the negation of the receiver. Unlike 0-self, this converts + correctly signed zeros. -zero - Coerce 0 to the receiver's class +raisedToInteger: anInteger + Return self raised to the anInteger-th power  -File: gst-base.info, Node: FloatE, Next: FloatQ, Prev: FloatD, Up: Base classes - -1.77 FloatE -=========== +File: gst-base.info, Node: Float-basic, Next: Float-built ins, Prev: Float-arithmetic, Up: Float -Defined in namespace Smalltalk -Superclass: Float -Category: Language-Data types - My instances represent floating point numbers that have the same - accuracy as C's "float" numbers. +1.77.4 Float: basic +------------------- -* Menu: +hash + Answer an hash value for the receiver -* FloatE class-byte-order dependancies:: (class) -* FloatE class-byte-order dependencies:: (class) -* FloatE class-characterization:: (class) -* FloatE class-converting:: (class) -* FloatE-built ins:: (instance) -* FloatE-coercing:: (instance)  -File: gst-base.info, Node: FloatE class-byte-order dependancies, Next: FloatE class-byte-order dependencies, Up: FloatE - -1.77.1 FloatE class: byte-order dependancies --------------------------------------------- - -signByte - Answer the byte of the receiver that contains the sign bit +File: gst-base.info, Node: Float-built ins, Next: Float-coercing, Prev: Float-basic, Up: Float +1.77.5 Float: built ins +----------------------- - -File: gst-base.info, Node: FloatE class-byte-order dependencies, Next: FloatE class-characterization, Prev: FloatE class-byte-order dependancies, Up: FloatE +arcCos + Answer the arc-cosine of the receiver -1.77.2 FloatE class: byte-order dependencies --------------------------------------------- +arcSin + Answer the arc-sine of the receiver -fromBytes: aByteArray - Answer a float with the bytes in aByteArray, which are in - big-endian format. +arcTan + Answer the arc-tangent of the receiver +ceiling + Answer the integer part of the receiver, truncated towards + +infinity - -File: gst-base.info, Node: FloatE class-characterization, Next: FloatE class-converting, Prev: FloatE class-byte-order dependencies, Up: FloatE +cos + Answer the cosine of the receiver -1.77.3 FloatE class: characterization -------------------------------------- +exp + Answer 'e' (2.718281828459...) raised to the receiver -decimalDigits - Return the number of decimal digits of precision for a FloatE. - Technically, if P is the precision for the representation, then - the decimal precision Q is the maximum number of decimal digits - such that any floating point number with Q base 10 digits can be - rounded to a floating point number with P base 2 digits and back - again, without change to the Q decimal digits. +floor + Answer the integer part of the receiver, truncated towards + -infinity -e - Returns the value of e. Hope is that it is precise enough +ln + Answer the logarithm of the receiver in base 'e' + (2.718281828459...) -emax - Return the maximum allowable exponent for a FloatE that is finite. +primHash + Private - Answer an hash value for the receiver -emin - Return the maximum allowable exponent for a FloatE that is finite. +raisedTo: aNumber + Answer the receiver raised to its aNumber power -fmax - Return the largest normalized FloatE that is not infinite. +sin + Answer the sine of the receiver -fminNormalized - Return the smallest normalized FloatE that is > 0 +sqrt + Answer the square root of the receiver -infinity - Return a FloatE that represents positive infinity. +tan + Answer the tangent of the receiver -ln10 - Returns the value of ln 10. Hope is that it is precise enough -log10Base2 - Returns the value of log2 10. Hope is that it is precise enough + +File: gst-base.info, Node: Float-coercing, Next: Float-coercion, Prev: Float-built ins, Up: Float -nan - Return a FloatE that represents a mathematically indeterminate - value (e.g. Inf - Inf, Inf / Inf). +1.77.6 Float: coercing +---------------------- -negativeInfinity - Return a FloatE that represents negative infinity. +asExactFraction + Convert the receiver into a fraction with optimal approximation, + but with usually huge terms. -pi - Returns the value of pi. Hope is that it is precise enough +asFraction + Convert the receiver into a fraction with a good (but undefined) + approximation -precision - Answer the number of bits in the mantissa. 1 + (2^-precision) = 1 +truncated + Convert the receiver to an Integer. Only used for LargeIntegers, + there are primitives for the other cases.  -File: gst-base.info, Node: FloatE class-converting, Next: FloatE-built ins, Prev: FloatE class-characterization, Up: FloatE +File: gst-base.info, Node: Float-coercion, Next: Float-comparing, Prev: Float-coercing, Up: Float -1.77.4 FloatE class: converting -------------------------------- +1.77.7 Float: coercion +---------------------- -coerce: aNumber - Answer aNumber converted to a FloatE +asCNumber + Convert the receiver to a kind of number that is understood by the + C call-out mechanism.  -File: gst-base.info, Node: FloatE-built ins, Next: FloatE-coercing, Prev: FloatE class-converting, Up: FloatE - -1.77.5 FloatE: built ins ------------------------- +File: gst-base.info, Node: Float-comparing, Next: Float-printing, Prev: Float-coercion, Up: Float -* arg - Multiply the receiver and arg and answer another Number +1.77.8 Float: comparing +----------------------- -+ arg - Sum the receiver and arg and answer another Number +max: aNumber + Answer the maximum between the receiver and aNumber. Redefine in + subclasses if necessary to ensure that if either self or aNumber + is a NaN, it is always answered. -- arg - Subtract arg from the receiver and answer another Number +min: aNumber + Answer the minimum between the receiver and aNumber. Redefine in + subclasses if necessary to ensure that if either self or aNumber + is a NaN, it is always answered. + +withSignOf: aNumber + Answer the receiver, with its sign possibly changed to match that + of aNumber. + + + +File: gst-base.info, Node: Float-printing, Next: Float-storing, Prev: Float-comparing, Up: Float + +1.77.9 Float: printing +---------------------- + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: Float-storing, Next: Float-testing, Prev: Float-printing, Up: Float + +1.77.10 Float: storing +---------------------- + +isLiteralObject + Answer whether the receiver is expressible as a Smalltalk literal. + +storeLiteralOn: aStream + Store on aStream some Smalltalk code which compiles to the receiver + +storeOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: Float-testing, Next: Float-testing functionality, Prev: Float-storing, Up: Float + +1.77.11 Float: testing +---------------------- + +isFinite + Answer whether the receiver does not represent infinity, nor a NaN + +isInfinite + Answer whether the receiver represents positive or negative + infinity + +isNaN + Answer whether the receiver represents a NaN + +negative + Answer whether the receiver is negative + +positive + Answer whether the receiver is positive. Negative zero is not + positive, so the definition is not simply >= 0. + +sign + Answer 1 if the receiver is greater than 0, -1 if less than 0, + else 0. Negative zero is the same as positive zero. + +strictlyPositive + Answer whether the receiver is > 0 + + + +File: gst-base.info, Node: Float-testing functionality, Next: Float-transcendental operations, Prev: Float-testing, Up: Float + +1.77.12 Float: testing functionality +------------------------------------ + +isFloat + Answer `true'. + + + +File: gst-base.info, Node: Float-transcendental operations, Prev: Float-testing functionality, Up: Float + +1.77.13 Float: transcendental operations +---------------------------------------- + +asFloat + Just defined for completeness. Return the receiver. + +ceilingLog: radix + Answer (self log: radix) ceiling. + +estimatedLog + Answer an estimate of (self abs floorLog: 10) + +floorLog: radix + Answer (self log: radix) floor. + +log + Answer log base 10 of the receiver. + + + +File: gst-base.info, Node: FloatD, Next: FloatE, Prev: Float, Up: Base classes + +1.78 FloatD +=========== + +Defined in namespace Smalltalk +Superclass: Float +Category: Language-Data types + My instances represent floating point numbers that have the same + accuracy as C's "double" numbers. + +* Menu: + +* FloatD class-byte-order dependencies:: (class) +* FloatD class-characterization:: (class) +* FloatD class-converting:: (class) +* FloatD-built ins:: (instance) +* FloatD-coercing:: (instance) + + +File: gst-base.info, Node: FloatD class-byte-order dependencies, Next: FloatD class-characterization, Up: FloatD + +1.78.1 FloatD class: byte-order dependencies +-------------------------------------------- + +fromBytes: aByteArray + Answer a float with the bytes in aByteArray, which are in + big-endian format. + +signByte + Answer the byte of the receiver that contains the sign bit + + + +File: gst-base.info, Node: FloatD class-characterization, Next: FloatD class-converting, Prev: FloatD class-byte-order dependencies, Up: FloatD + +1.78.2 FloatD class: characterization +------------------------------------- + +decimalDigits + Return the number of decimal digits of precision for a FloatD. + Technically, if P is the precision for the representation, then + the decimal precision Q is the maximum number of decimal digits + such that any floating point number with Q base 10 digits can be + rounded to a floating point number with P base 2 digits and back + again, without change to the Q decimal digits. + +emax + Return the maximum allowable exponent for a FloatD that is finite. + +emin + Return the maximum allowable exponent for a FloatD that is finite. + +fmax + Return the largest normalized FloatD that is not infinite. + +fminNormalized + Return the smallest normalized FloatD that is > 0 + +infinity + Return a FloatD that represents positive infinity. + +nan + Return a FloatD that represents a mathematically indeterminate + value (e.g. Inf - Inf, Inf / Inf). + +negativeInfinity + Return a FloatD that represents negative infinity. + +precision + Answer the number of bits in the mantissa. 1 + (2^-precision) = 1 -/ arg - Divide the receiver by arg and answer another FloatE + + +File: gst-base.info, Node: FloatD class-converting, Next: FloatD-built ins, Prev: FloatD class-characterization, Up: FloatD + +1.78.3 FloatD class: converting +------------------------------- + +coerce: aNumber + Answer aNumber converted to a FloatD + + + +File: gst-base.info, Node: FloatD-built ins, Next: FloatD-coercing, Prev: FloatD class-converting, Up: FloatD + +1.78.4 FloatD: built ins +------------------------ + +* arg + Multiply the receiver and arg and answer another Number + ++ arg + Sum the receiver and arg and answer another Number + +- arg + Subtract arg from the receiver and answer another Number + +/ arg + Divide the receiver by arg and answer another FloatD < arg Answer whether the receiver is less than arg @@ -1110,8 +1508,8 @@ >= arg Answer whether the receiver is greater than or equal to arg -asFloatD - Answer the receiver converted to a FloatD +asFloatE + Answer the receiver converted to a FloatE asFloatQ Answer the receiver converted to a FloatQ @@ -1134,12 +1532,12 @@  -File: gst-base.info, Node: FloatE-coercing, Prev: FloatE-built ins, Up: FloatE +File: gst-base.info, Node: FloatD-coercing, Prev: FloatD-built ins, Up: FloatD -1.77.6 FloatE: coercing +1.78.5 FloatD: coercing ----------------------- -asFloatE +asFloatD Just defined for completeness. Return the receiver. coerce: aNumber @@ -1156,30 +1554,30 @@  -File: gst-base.info, Node: FloatQ, Next: Fraction, Prev: FloatE, Up: Base classes +File: gst-base.info, Node: FloatE, Next: FloatQ, Prev: FloatD, Up: Base classes -1.78 FloatQ +1.79 FloatE =========== Defined in namespace Smalltalk Superclass: Float Category: Language-Data types My instances represent floating point numbers that have the same - accuracy as C's "long double" numbers. + accuracy as C's "float" numbers. * Menu: -* FloatQ class-byte-order dependancies:: (class) -* FloatQ class-characterization:: (class) -* FloatQ class-converting:: (class) -* FloatQ-built ins:: (instance) -* FloatQ-coercing:: (instance) -* FloatQ-misc math:: (instance) +* FloatE class-byte-order dependancies:: (class) +* FloatE class-byte-order dependencies:: (class) +* FloatE class-characterization:: (class) +* FloatE class-converting:: (class) +* FloatE-built ins:: (instance) +* FloatE-coercing:: (instance)  -File: gst-base.info, Node: FloatQ class-byte-order dependancies, Next: FloatQ class-characterization, Up: FloatQ +File: gst-base.info, Node: FloatE class-byte-order dependancies, Next: FloatE class-byte-order dependencies, Up: FloatE -1.78.1 FloatQ class: byte-order dependancies +1.79.1 FloatE class: byte-order dependancies -------------------------------------------- signByte @@ -1187,13 +1585,24 @@  -File: gst-base.info, Node: FloatQ class-characterization, Next: FloatQ class-converting, Prev: FloatQ class-byte-order dependancies, Up: FloatQ +File: gst-base.info, Node: FloatE class-byte-order dependencies, Next: FloatE class-characterization, Prev: FloatE class-byte-order dependancies, Up: FloatE + +1.79.2 FloatE class: byte-order dependencies +-------------------------------------------- + +fromBytes: aByteArray + Answer a float with the bytes in aByteArray, which are in + big-endian format. + + + +File: gst-base.info, Node: FloatE class-characterization, Next: FloatE class-converting, Prev: FloatE class-byte-order dependencies, Up: FloatE -1.78.2 FloatQ class: characterization +1.79.3 FloatE class: characterization ------------------------------------- decimalDigits - Return the number of decimal digits of precision for a FloatQ. + Return the number of decimal digits of precision for a FloatE. Technically, if P is the precision for the representation, then the decimal precision Q is the maximum number of decimal digits such that any floating point number with Q base 10 digits can be @@ -1204,19 +1613,19 @@ Returns the value of e. Hope is that it is precise enough emax - Return the maximum allowable exponent for a FloatQ that is finite. + Return the maximum allowable exponent for a FloatE that is finite. emin - Return the maximum allowable exponent for a FloatQ that is finite. + Return the maximum allowable exponent for a FloatE that is finite. fmax - Return the largest normalized FloatQ that is not infinite. + Return the largest normalized FloatE that is not infinite. fminNormalized - Return the smallest normalized FloatQ that is > 0 + Return the smallest normalized FloatE that is > 0 infinity - Return a FloatQ that represents positive infinity. + Return a FloatE that represents positive infinity. ln10 Returns the value of ln 10. Hope is that it is precise enough @@ -1225,11 +1634,11 @@ Returns the value of log2 10. Hope is that it is precise enough nan - Return a FloatQ that represents a mathematically indeterminate + Return a FloatE that represents a mathematically indeterminate value (e.g. Inf - Inf, Inf / Inf). negativeInfinity - Return a FloatQ that represents negative infinity. + Return a FloatE that represents negative infinity. pi Returns the value of pi. Hope is that it is precise enough @@ -1239,19 +1648,19 @@  -File: gst-base.info, Node: FloatQ class-converting, Next: FloatQ-built ins, Prev: FloatQ class-characterization, Up: FloatQ +File: gst-base.info, Node: FloatE class-converting, Next: FloatE-built ins, Prev: FloatE class-characterization, Up: FloatE -1.78.3 FloatQ class: converting +1.79.4 FloatE class: converting ------------------------------- coerce: aNumber - Answer aNumber converted to a FloatQ + Answer aNumber converted to a FloatE  -File: gst-base.info, Node: FloatQ-built ins, Next: FloatQ-coercing, Prev: FloatQ class-converting, Up: FloatQ +File: gst-base.info, Node: FloatE-built ins, Next: FloatE-coercing, Prev: FloatE class-converting, Up: FloatE -1.78.4 FloatQ: built ins +1.79.5 FloatE: built ins ------------------------ * arg @@ -1264,7 +1673,7 @@ Subtract arg from the receiver and answer another Number / arg - Divide the receiver by arg and answer another FloatQ + Divide the receiver by arg and answer another FloatE < arg Answer whether the receiver is less than arg @@ -1284,8 +1693,8 @@ asFloatD Answer the receiver converted to a FloatD -asFloatE - Answer the receiver converted to a FloatE +asFloatQ + Answer the receiver converted to a FloatQ exponent Answer the exponent of the receiver in mantissa*2^exponent @@ -1305,12 +1714,183 @@  -File: gst-base.info, Node: FloatQ-coercing, Next: FloatQ-misc math, Prev: FloatQ-built ins, Up: FloatQ +File: gst-base.info, Node: FloatE-coercing, Prev: FloatE-built ins, Up: FloatE -1.78.5 FloatQ: coercing +1.79.6 FloatE: coercing ----------------------- -asFloatQ +asFloatE + Just defined for completeness. Return the receiver. + +coerce: aNumber + Coerce aNumber to the receiver's class + +generality + Answer the receiver's generality + +unity + Coerce 1 to the receiver's class + +zero + Coerce 0 to the receiver's class + + + +File: gst-base.info, Node: FloatQ, Next: Fraction, Prev: FloatE, Up: Base classes + +1.80 FloatQ +=========== + +Defined in namespace Smalltalk +Superclass: Float +Category: Language-Data types + My instances represent floating point numbers that have the same + accuracy as C's "long double" numbers. + +* Menu: + +* FloatQ class-byte-order dependancies:: (class) +* FloatQ class-characterization:: (class) +* FloatQ class-converting:: (class) +* FloatQ-built ins:: (instance) +* FloatQ-coercing:: (instance) +* FloatQ-misc math:: (instance) + + +File: gst-base.info, Node: FloatQ class-byte-order dependancies, Next: FloatQ class-characterization, Up: FloatQ + +1.80.1 FloatQ class: byte-order dependancies +-------------------------------------------- + +signByte + Answer the byte of the receiver that contains the sign bit + + + +File: gst-base.info, Node: FloatQ class-characterization, Next: FloatQ class-converting, Prev: FloatQ class-byte-order dependancies, Up: FloatQ + +1.80.2 FloatQ class: characterization +------------------------------------- + +decimalDigits + Return the number of decimal digits of precision for a FloatQ. + Technically, if P is the precision for the representation, then + the decimal precision Q is the maximum number of decimal digits + such that any floating point number with Q base 10 digits can be + rounded to a floating point number with P base 2 digits and back + again, without change to the Q decimal digits. + +e + Returns the value of e. Hope is that it is precise enough + +emax + Return the maximum allowable exponent for a FloatQ that is finite. + +emin + Return the maximum allowable exponent for a FloatQ that is finite. + +fmax + Return the largest normalized FloatQ that is not infinite. + +fminNormalized + Return the smallest normalized FloatQ that is > 0 + +infinity + Return a FloatQ that represents positive infinity. + +ln10 + Returns the value of ln 10. Hope is that it is precise enough + +log10Base2 + Returns the value of log2 10. Hope is that it is precise enough + +nan + Return a FloatQ that represents a mathematically indeterminate + value (e.g. Inf - Inf, Inf / Inf). + +negativeInfinity + Return a FloatQ that represents negative infinity. + +pi + Returns the value of pi. Hope is that it is precise enough + +precision + Answer the number of bits in the mantissa. 1 + (2^-precision) = 1 + + + +File: gst-base.info, Node: FloatQ class-converting, Next: FloatQ-built ins, Prev: FloatQ class-characterization, Up: FloatQ + +1.80.3 FloatQ class: converting +------------------------------- + +coerce: aNumber + Answer aNumber converted to a FloatQ + + + +File: gst-base.info, Node: FloatQ-built ins, Next: FloatQ-coercing, Prev: FloatQ class-converting, Up: FloatQ + +1.80.4 FloatQ: built ins +------------------------ + +* arg + Multiply the receiver and arg and answer another Number + ++ arg + Sum the receiver and arg and answer another Number + +- arg + Subtract arg from the receiver and answer another Number + +/ arg + Divide the receiver by arg and answer another FloatQ + +< arg + Answer whether the receiver is less than arg + +<= arg + Answer whether the receiver is less than or equal to arg + += arg + Answer whether the receiver is equal to arg + +> arg + Answer whether the receiver is greater than arg + +>= arg + Answer whether the receiver is greater than or equal to arg + +asFloatD + Answer the receiver converted to a FloatD + +asFloatE + Answer the receiver converted to a FloatE + +exponent + Answer the exponent of the receiver in mantissa*2^exponent + representation ( |mantissa|<=1 ) + +fractionPart + Answer the fractional part of the receiver + +timesTwoPower: arg + Answer the receiver multiplied by 2^arg + +truncated + Truncate the receiver towards zero and answer the result + +~= arg + Answer whether the receiver is not equal to arg + + + +File: gst-base.info, Node: FloatQ-coercing, Next: FloatQ-misc math, Prev: FloatQ-built ins, Up: FloatQ + +1.80.5 FloatQ: coercing +----------------------- + +asFloatQ Just defined for completeness. Return the receiver. coerce: aNumber @@ -1329,7 +1909,7 @@  File: gst-base.info, Node: FloatQ-misc math, Prev: FloatQ-coercing, Up: FloatQ -1.78.6 FloatQ: misc math +1.80.6 FloatQ: misc math ------------------------ raisedTo: aNumber @@ -1339,7 +1919,7 @@  File: gst-base.info, Node: Fraction, Next: Generator, Prev: FloatQ, Up: Base classes -1.79 Fraction +1.81 Fraction ============= Defined in namespace Smalltalk @@ -1366,7 +1946,7 @@  File: gst-base.info, Node: Fraction class-converting, Next: Fraction class-instance creation, Up: Fraction -1.79.1 Fraction class: converting +1.81.1 Fraction class: converting --------------------------------- coerce: aNumber @@ -1376,7 +1956,7 @@  File: gst-base.info, Node: Fraction class-instance creation, Next: Fraction-accessing, Prev: Fraction class-converting, Up: Fraction -1.79.2 Fraction class: instance creation +1.81.2 Fraction class: instance creation ---------------------------------------- initialize @@ -1389,7 +1969,7 @@  File: gst-base.info, Node: Fraction-accessing, Next: Fraction-arithmetic, Prev: Fraction class-instance creation, Up: Fraction -1.79.3 Fraction: accessing +1.81.3 Fraction: accessing -------------------------- denominator @@ -1402,7 +1982,7 @@  File: gst-base.info, Node: Fraction-arithmetic, Next: Fraction-coercing, Prev: Fraction-accessing, Up: Fraction -1.79.4 Fraction: arithmetic +1.81.4 Fraction: arithmetic --------------------------- * aNumber @@ -1432,7 +2012,7 @@  File: gst-base.info, Node: Fraction-coercing, Next: Fraction-coercion, Prev: Fraction-arithmetic, Up: Fraction -1.79.5 Fraction: coercing +1.81.5 Fraction: coercing ------------------------- ceiling @@ -1462,7 +2042,7 @@  File: gst-base.info, Node: Fraction-coercion, Next: Fraction-comparing, Prev: Fraction-coercing, Up: Fraction -1.79.6 Fraction: coercion +1.81.6 Fraction: coercion ------------------------- asCNumber @@ -1473,7 +2053,7 @@  File: gst-base.info, Node: Fraction-comparing, Next: Fraction-converting, Prev: Fraction-coercion, Up: Fraction -1.79.7 Fraction: comparing +1.81.7 Fraction: comparing -------------------------- < arg @@ -1498,7 +2078,7 @@  File: gst-base.info, Node: Fraction-converting, Next: Fraction-optimized cases, Prev: Fraction-comparing, Up: Fraction -1.79.8 Fraction: converting +1.81.8 Fraction: converting --------------------------- asFloatD @@ -1520,7 +2100,7 @@  File: gst-base.info, Node: Fraction-optimized cases, Next: Fraction-printing, Prev: Fraction-converting, Up: Fraction -1.79.9 Fraction: optimized cases +1.81.9 Fraction: optimized cases -------------------------------- negated @@ -1539,7 +2119,7 @@  File: gst-base.info, Node: Fraction-printing, Next: Fraction-testing, Prev: Fraction-optimized cases, Up: Fraction -1.79.10 Fraction: printing +1.81.10 Fraction: printing -------------------------- printOn: aStream @@ -1552,7 +2132,7 @@  File: gst-base.info, Node: Fraction-testing, Prev: Fraction-printing, Up: Fraction -1.79.11 Fraction: testing +1.81.11 Fraction: testing ------------------------- isRational @@ -1562,7 +2142,7 @@  File: gst-base.info, Node: Generator, Next: Getopt, Prev: Fraction, Up: Base classes -1.80 Generator +1.82 Generator ============== Defined in namespace Smalltalk @@ -1610,7 +2190,7 @@  File: gst-base.info, Node: Generator class-instance creation, Next: Generator-stream protocol, Up: Generator -1.80.1 Generator class: instance creation +1.82.1 Generator class: instance creation ----------------------------------------- inject: aValue into: aBlock @@ -1632,7 +2212,7 @@  File: gst-base.info, Node: Generator-stream protocol, Prev: Generator class-instance creation, Up: Generator -1.80.2 Generator: stream protocol +1.82.2 Generator: stream protocol --------------------------------- atEnd @@ -1663,7 +2243,7 @@  File: gst-base.info, Node: Getopt, Next: Halt, Prev: Generator, Up: Base classes -1.81 Getopt +1.83 Getopt =========== Defined in namespace Smalltalk @@ -1679,7 +2259,7 @@  File: gst-base.info, Node: Getopt class-instance creation, Up: Getopt -1.81.1 Getopt class: instance creation +1.83.1 Getopt class: instance creation -------------------------------------- parse: args with: pattern do: actionBlock @@ -1731,7 +2311,7 @@  File: gst-base.info, Node: Halt, Next: HashedCollection, Prev: Getopt, Up: Base classes -1.82 Halt +1.84 Halt ========= Defined in namespace Smalltalk @@ -1746,7 +2326,7 @@  File: gst-base.info, Node: Halt-description, Up: Halt -1.82.1 Halt: description +1.84.1 Halt: description ------------------------ description @@ -1759,7 +2339,7 @@  File: gst-base.info, Node: HashedCollection, Next: HomedAssociation, Prev: Halt, Up: Base classes -1.83 HashedCollection +1.85 HashedCollection ===================== Defined in namespace Smalltalk @@ -1784,7 +2364,7 @@  File: gst-base.info, Node: HashedCollection class-instance creation, Next: HashedCollection-accessing, Up: HashedCollection -1.83.1 HashedCollection class: instance creation +1.85.1 HashedCollection class: instance creation ------------------------------------------------ new @@ -1800,7 +2380,7 @@  File: gst-base.info, Node: HashedCollection-accessing, Next: HashedCollection-builtins, Prev: HashedCollection class-instance creation, Up: HashedCollection -1.83.2 HashedCollection: accessing +1.85.2 HashedCollection: accessing ---------------------------------- add: newObject @@ -1818,7 +2398,7 @@  File: gst-base.info, Node: HashedCollection-builtins, Next: HashedCollection-copying, Prev: HashedCollection-accessing, Up: HashedCollection -1.83.3 HashedCollection: builtins +1.85.3 HashedCollection: builtins --------------------------------- primAt: anIndex @@ -1840,7 +2420,7 @@  File: gst-base.info, Node: HashedCollection-copying, Next: HashedCollection-enumerating the elements of a collection, Prev: HashedCollection-builtins, Up: HashedCollection -1.83.4 HashedCollection: copying +1.85.4 HashedCollection: copying -------------------------------- deepCopy @@ -1855,7 +2435,7 @@  File: gst-base.info, Node: HashedCollection-enumerating the elements of a collection, Next: HashedCollection-rehashing, Prev: HashedCollection-copying, Up: HashedCollection -1.83.5 HashedCollection: enumerating the elements of a collection +1.85.5 HashedCollection: enumerating the elements of a collection ----------------------------------------------------------------- do: aBlock @@ -1865,7 +2445,7 @@  File: gst-base.info, Node: HashedCollection-rehashing, Next: HashedCollection-removing, Prev: HashedCollection-enumerating the elements of a collection, Up: HashedCollection -1.83.6 HashedCollection: rehashing +1.85.6 HashedCollection: rehashing ---------------------------------- rehash @@ -1875,7 +2455,7 @@  File: gst-base.info, Node: HashedCollection-removing, Next: HashedCollection-saving and loading, Prev: HashedCollection-rehashing, Up: HashedCollection -1.83.7 HashedCollection: removing +1.85.7 HashedCollection: removing --------------------------------- remove: oldObject ifAbsent: anExceptionBlock @@ -1886,7 +2466,7 @@  File: gst-base.info, Node: HashedCollection-saving and loading, Next: HashedCollection-storing, Prev: HashedCollection-removing, Up: HashedCollection -1.83.8 HashedCollection: saving and loading +1.85.8 HashedCollection: saving and loading ------------------------------------------- postLoad @@ -1901,7 +2481,7 @@  File: gst-base.info, Node: HashedCollection-storing, Next: HashedCollection-testing collections, Prev: HashedCollection-saving and loading, Up: HashedCollection -1.83.9 HashedCollection: storing +1.85.9 HashedCollection: storing -------------------------------- storeOn: aStream @@ -1911,7 +2491,7 @@  File: gst-base.info, Node: HashedCollection-testing collections, Prev: HashedCollection-storing, Up: HashedCollection -1.83.10 HashedCollection: testing collections +1.85.10 HashedCollection: testing collections --------------------------------------------- = aHashedCollection @@ -1944,7 +2524,7 @@  File: gst-base.info, Node: HomedAssociation, Next: IdentityDictionary, Prev: HashedCollection, Up: Base classes -1.84 HomedAssociation +1.86 HomedAssociation ===================== Defined in namespace Smalltalk @@ -1963,7 +2543,7 @@  File: gst-base.info, Node: HomedAssociation class-basic, Next: HomedAssociation-accessing, Up: HomedAssociation -1.84.1 HomedAssociation class: basic +1.86.1 HomedAssociation class: basic ------------------------------------ key: aKey value: aValue environment: aNamespace @@ -1973,7 +2553,7 @@  File: gst-base.info, Node: HomedAssociation-accessing, Next: HomedAssociation-finalization, Prev: HomedAssociation class-basic, Up: HomedAssociation -1.84.2 HomedAssociation: accessing +1.86.2 HomedAssociation: accessing ---------------------------------- environment @@ -1986,7 +2566,7 @@  File: gst-base.info, Node: HomedAssociation-finalization, Next: HomedAssociation-storing, Prev: HomedAssociation-accessing, Up: HomedAssociation -1.84.3 HomedAssociation: finalization +1.86.3 HomedAssociation: finalization ------------------------------------- mourn @@ -2001,7 +2581,7 @@  File: gst-base.info, Node: HomedAssociation-storing, Prev: HomedAssociation-finalization, Up: HomedAssociation -1.84.4 HomedAssociation: storing +1.86.4 HomedAssociation: storing -------------------------------- storeOn: aStream @@ -2011,7 +2591,7 @@  File: gst-base.info, Node: IdentityDictionary, Next: IdentitySet, Prev: HomedAssociation, Up: Base classes -1.85 IdentityDictionary +1.87 IdentityDictionary ======================= Defined in namespace Smalltalk @@ -2025,7 +2605,7 @@  File: gst-base.info, Node: IdentitySet, Next: Integer, Prev: IdentityDictionary, Up: Base classes -1.86 IdentitySet +1.88 IdentitySet ================ Defined in namespace Smalltalk @@ -2041,7 +2621,7 @@  File: gst-base.info, Node: IdentitySet-testing, Up: IdentitySet -1.86.1 IdentitySet: testing +1.88.1 IdentitySet: testing --------------------------- identityIncludes: anObject @@ -2052,7 +2632,7 @@  File: gst-base.info, Node: Integer, Next: Interval, Prev: IdentitySet, Up: Base classes -1.87 Integer +1.89 Integer ============ Defined in namespace Smalltalk @@ -2080,7 +2660,7 @@  File: gst-base.info, Node: Integer class-converting, Next: Integer-accessing, Up: Integer -1.87.1 Integer class: converting +1.89.1 Integer class: converting -------------------------------- coerce: aNumber @@ -2094,7 +2674,7 @@  File: gst-base.info, Node: Integer-accessing, Next: Integer-basic, Prev: Integer class-converting, Up: Integer -1.87.2 Integer: accessing +1.89.2 Integer: accessing ------------------------- denominator @@ -2107,7 +2687,7 @@  File: gst-base.info, Node: Integer-basic, Next: Integer-bit operators, Prev: Integer-accessing, Up: Integer -1.87.3 Integer: basic +1.89.3 Integer: basic --------------------- hash @@ -2117,7 +2697,7 @@  File: gst-base.info, Node: Integer-bit operators, Next: Integer-converting, Prev: Integer-basic, Up: Integer -1.87.4 Integer: bit operators +1.89.4 Integer: bit operators ----------------------------- allMask: anInteger @@ -2164,7 +2744,7 @@  File: gst-base.info, Node: Integer-converting, Next: Integer-extension, Prev: Integer-bit operators, Up: Integer -1.87.5 Integer: converting +1.89.5 Integer: converting -------------------------- asCharacter @@ -2196,7 +2776,7 @@  File: gst-base.info, Node: Integer-extension, Next: Integer-iterators, Prev: Integer-converting, Up: Integer -1.87.6 Integer: extension +1.89.6 Integer: extension ------------------------- alignTo: anInteger @@ -2207,7 +2787,7 @@  File: gst-base.info, Node: Integer-iterators, Next: Integer-math methods, Prev: Integer-extension, Up: Integer -1.87.7 Integer: iterators +1.89.7 Integer: iterators ------------------------- timesRepeat: aBlock @@ -2219,7 +2799,7 @@  File: gst-base.info, Node: Integer-math methods, Next: Integer-printing, Prev: Integer-iterators, Up: Integer -1.87.8 Integer: math methods +1.89.8 Integer: math methods ---------------------------- binomial: anInteger @@ -2255,7 +2835,7 @@  File: gst-base.info, Node: Integer-printing, Next: Integer-storing, Prev: Integer-math methods, Up: Integer -1.87.9 Integer: printing +1.89.9 Integer: printing ------------------------ displayOn: aStream @@ -2301,7 +2881,7 @@  File: gst-base.info, Node: Integer-storing, Next: Integer-testing functionality, Prev: Integer-printing, Up: Integer -1.87.10 Integer: storing +1.89.10 Integer: storing ------------------------ storeOn: aStream @@ -2314,7 +2894,7 @@  File: gst-base.info, Node: Integer-testing functionality, Prev: Integer-storing, Up: Integer -1.87.11 Integer: testing functionality +1.89.11 Integer: testing functionality -------------------------------------- isInteger @@ -2325,9 +2905,9 @@  -File: gst-base.info, Node: Interval, Next: LargeArray, Prev: Integer, Up: Base classes +File: gst-base.info, Node: Interval, Next: Iterable, Prev: Integer, Up: Base classes -1.88 Interval +1.90 Interval ============= Defined in namespace Smalltalk @@ -2348,7 +2928,7 @@  File: gst-base.info, Node: Interval class-instance creation, Next: Interval-basic, Up: Interval -1.88.1 Interval class: instance creation +1.90.1 Interval class: instance creation ---------------------------------------- from: startInteger to: stopInteger @@ -2367,7 +2947,7 @@  File: gst-base.info, Node: Interval-basic, Next: Interval-printing, Prev: Interval class-instance creation, Up: Interval -1.88.2 Interval: basic +1.90.2 Interval: basic ---------------------- at: index @@ -2396,7 +2976,7 @@  File: gst-base.info, Node: Interval-printing, Next: Interval-storing, Prev: Interval-basic, Up: Interval -1.88.3 Interval: printing +1.90.3 Interval: printing ------------------------- first @@ -2415,7 +2995,7 @@  File: gst-base.info, Node: Interval-storing, Next: Interval-testing, Prev: Interval-printing, Up: Interval -1.88.4 Interval: storing +1.90.4 Interval: storing ------------------------ storeOn: aStream @@ -2425,7 +3005,7 @@  File: gst-base.info, Node: Interval-testing, Prev: Interval-storing, Up: Interval -1.88.5 Interval: testing +1.90.5 Interval: testing ------------------------ = anInterval @@ -2436,9 +3016,124 @@  -File: gst-base.info, Node: LargeArray, Next: LargeArrayedCollection, Prev: Interval, Up: Base classes +File: gst-base.info, Node: Iterable, Next: LargeArray, Prev: Interval, Up: Base classes + +1.91 Iterable +============= + +Defined in namespace Smalltalk +Superclass: Object +Category: Collections + I am an abstract class. My instances are collections of objects + that can be iterated. The details on how they can be mutated (if + at all possible) are left to the subclasses. + +* Menu: + +* Iterable class-multibyte encodings:: (class) +* Iterable-enumeration:: (instance) +* Iterable-streaming:: (instance) + + +File: gst-base.info, Node: Iterable class-multibyte encodings, Next: Iterable-enumeration, Up: Iterable + +1.91.1 Iterable class: multibyte encodings +------------------------------------------ + +isUnicode + Answer true; the receiver is able to store arbitrary Unicode + characters. + + + +File: gst-base.info, Node: Iterable-enumeration, Next: Iterable-streaming, Prev: Iterable class-multibyte encodings, Up: Iterable + +1.91.2 Iterable: enumeration +---------------------------- + +allSatisfy: aBlock + Search the receiver for an element for which aBlock returns false. + Answer true if none does, false otherwise. + +anySatisfy: aBlock + Search the receiver for an element for which aBlock returns true. + Answer true if some does, false otherwise. + +collect: aBlock + Answer a new instance of a Collection containing all the results + of evaluating aBlock passing each of the receiver's elements + +conform: aBlock + Search the receiver for an element for which aBlock returns false. + Answer true if none does, false otherwise. + +contains: aBlock + Search the receiver for an element for which aBlock returns true. + Answer true if some does, false otherwise. + +count: aBlock + Count the elements of the receiver for which aBlock returns true, + and return their number. + +detect: aBlock + Search the receiver for an element for which aBlock returns true. + If some does, answer it. If none does, fail + +detect: aBlock ifNone: exceptionBlock + Search the receiver for an element for which aBlock returns true. + If some does, answer it. If none does, answer the result of + evaluating aBlock + +do: aBlock + Enumerate each object of the receiver, passing them to aBlock + +do: aBlock separatedBy: separatorBlock + Enumerate each object of the receiver, passing them to aBlock. + Between every two invocations of aBlock, invoke separatorBlock + +fold: binaryBlock + First, pass to binaryBlock the first and second elements of the + receiver; for each subsequent element, pass the result of the + previous evaluation and an element. Answer the result of the last + invocation, or the first element if the collection has size 1. + Fail if the collection is empty. + +inject: thisValue into: binaryBlock + First, pass to binaryBlock thisValue and the first element of the + receiver; for each subsequent element, pass the result of the + previous evaluation and an element. Answer the result of the last + invocation. + +noneSatisfy: aBlock + Search the receiver for an element for which aBlock returns true. + Answer true if none does, false otherwise. + +reject: aBlock + Answer a new instance of a Collection containing all the elements + in the receiver which, when passed to aBlock, don't answer true + +select: aBlock + Answer a new instance of a Collection containing all the elements + in the receiver which, when passed to aBlock, answer true + + + +File: gst-base.info, Node: Iterable-streaming, Prev: Iterable-enumeration, Up: Iterable -1.89 LargeArray +1.91.3 Iterable: streaming +-------------------------- + +nextPutAllOn: aStream + Write all the objects in the receiver to aStream + +readStream + Return a stream with the same contents as the receiver. + + + +File: gst-base.info, Node: LargeArray, Next: LargeArrayedCollection, Prev: Iterable, Up: Base classes + +1.92 LargeArray =============== Defined in namespace Smalltalk @@ -2454,7 +3149,7 @@  File: gst-base.info, Node: LargeArray-overridden, Up: LargeArray -1.89.1 LargeArray: overridden +1.92.1 LargeArray: overridden ----------------------------- newCollection: size @@ -2464,7 +3159,7 @@  File: gst-base.info, Node: LargeArrayedCollection, Next: LargeByteArray, Prev: LargeArray, Up: Base classes -1.90 LargeArrayedCollection +1.93 LargeArrayedCollection =========================== Defined in namespace Smalltalk @@ -2482,7 +3177,7 @@  File: gst-base.info, Node: LargeArrayedCollection class-instance creation, Next: LargeArrayedCollection-accessing, Up: LargeArrayedCollection -1.90.1 LargeArrayedCollection class: instance creation +1.93.1 LargeArrayedCollection class: instance creation ------------------------------------------------------ new: anInteger @@ -2493,7 +3188,7 @@  File: gst-base.info, Node: LargeArrayedCollection-accessing, Next: LargeArrayedCollection-basic, Prev: LargeArrayedCollection class-instance creation, Up: LargeArrayedCollection -1.90.2 LargeArrayedCollection: accessing +1.93.2 LargeArrayedCollection: accessing ---------------------------------------- at: anIndex @@ -2509,7 +3204,7 @@  File: gst-base.info, Node: LargeArrayedCollection-basic, Prev: LargeArrayedCollection-accessing, Up: LargeArrayedCollection -1.90.3 LargeArrayedCollection: basic +1.93.3 LargeArrayedCollection: basic ------------------------------------ = aLargeArray @@ -2525,7 +3220,7 @@  File: gst-base.info, Node: LargeByteArray, Next: LargeInteger, Prev: LargeArrayedCollection, Up: Base classes -1.91 LargeByteArray +1.94 LargeByteArray =================== Defined in namespace Smalltalk @@ -2541,7 +3236,7 @@  File: gst-base.info, Node: LargeByteArray-overridden, Up: LargeByteArray -1.91.1 LargeByteArray: overridden +1.94.1 LargeByteArray: overridden --------------------------------- costOfNewIndex @@ -2558,7 +3253,7 @@  File: gst-base.info, Node: LargeInteger, Next: LargeNegativeInteger, Prev: LargeByteArray, Up: Base classes -1.92 LargeInteger +1.95 LargeInteger ================= Defined in namespace Smalltalk @@ -2584,7 +3279,7 @@  File: gst-base.info, Node: LargeInteger-accessing, Next: LargeInteger-arithmetic, Up: LargeInteger -1.92.1 LargeInteger: accessing +1.95.1 LargeInteger: accessing ------------------------------ raisedToInteger: n @@ -2594,7 +3289,7 @@  File: gst-base.info, Node: LargeInteger-arithmetic, Next: LargeInteger-bit operations, Prev: LargeInteger-accessing, Up: LargeInteger -1.92.2 LargeInteger: arithmetic +1.95.2 LargeInteger: arithmetic ------------------------------- * aNumber @@ -2640,7 +3335,7 @@  File: gst-base.info, Node: LargeInteger-bit operations, Next: LargeInteger-built-ins, Prev: LargeInteger-arithmetic, Up: LargeInteger -1.92.3 LargeInteger: bit operations +1.95.3 LargeInteger: bit operations ----------------------------------- bitAnd: aNumber @@ -2668,7 +3363,7 @@  File: gst-base.info, Node: LargeInteger-built-ins, Next: LargeInteger-coercion, Prev: LargeInteger-bit operations, Up: LargeInteger -1.92.4 LargeInteger: built-ins +1.95.4 LargeInteger: built-ins ------------------------------ at: anIndex @@ -2703,7 +3398,7 @@  File: gst-base.info, Node: LargeInteger-coercion, Next: LargeInteger-disabled, Prev: LargeInteger-built-ins, Up: LargeInteger -1.92.5 LargeInteger: coercion +1.95.5 LargeInteger: coercion ----------------------------- asCNumber @@ -2727,7 +3422,7 @@  File: gst-base.info, Node: LargeInteger-disabled, Next: LargeInteger-primitive operations, Prev: LargeInteger-coercion, Up: LargeInteger -1.92.6 LargeInteger: disabled +1.95.6 LargeInteger: disabled ----------------------------- asObject @@ -2741,7 +3436,7 @@  File: gst-base.info, Node: LargeInteger-primitive operations, Next: LargeInteger-testing, Prev: LargeInteger-disabled, Up: LargeInteger -1.92.7 LargeInteger: primitive operations +1.95.7 LargeInteger: primitive operations ----------------------------------------- basicLeftShift: totalShift @@ -2757,7 +3452,7 @@  File: gst-base.info, Node: LargeInteger-testing, Prev: LargeInteger-primitive operations, Up: LargeInteger -1.92.8 LargeInteger: testing +1.95.8 LargeInteger: testing ---------------------------- < aNumber @@ -2782,7 +3477,7 @@  File: gst-base.info, Node: LargeNegativeInteger, Next: LargePositiveInteger, Prev: LargeInteger, Up: Base classes -1.93 LargeNegativeInteger +1.96 LargeNegativeInteger ========================= Defined in namespace Smalltalk @@ -2802,7 +3497,7 @@  File: gst-base.info, Node: LargeNegativeInteger-converting, Next: LargeNegativeInteger-numeric testing, Up: LargeNegativeInteger -1.93.1 LargeNegativeInteger: converting +1.96.1 LargeNegativeInteger: converting --------------------------------------- asFloatD @@ -2818,7 +3513,7 @@  File: gst-base.info, Node: LargeNegativeInteger-numeric testing, Next: LargeNegativeInteger-reverting to LargePositiveInteger, Prev: LargeNegativeInteger-converting, Up: LargeNegativeInteger -1.93.2 LargeNegativeInteger: numeric testing +1.96.2 LargeNegativeInteger: numeric testing -------------------------------------------- abs @@ -2840,7 +3535,7 @@  File: gst-base.info, Node: LargeNegativeInteger-reverting to LargePositiveInteger, Prev: LargeNegativeInteger-numeric testing, Up: LargeNegativeInteger -1.93.3 LargeNegativeInteger: reverting to LargePositiveInteger +1.96.3 LargeNegativeInteger: reverting to LargePositiveInteger -------------------------------------------------------------- + aNumber @@ -2860,7 +3555,7 @@  File: gst-base.info, Node: LargePositiveInteger, Next: LargeWordArray, Prev: LargeNegativeInteger, Up: Base classes -1.94 LargePositiveInteger +1.97 LargePositiveInteger ========================= Defined in namespace Smalltalk @@ -2883,7 +3578,7 @@  File: gst-base.info, Node: LargePositiveInteger-arithmetic, Next: LargePositiveInteger-converting, Up: LargePositiveInteger -1.94.1 LargePositiveInteger: arithmetic +1.97.1 LargePositiveInteger: arithmetic --------------------------------------- + aNumber @@ -2902,7 +3597,7 @@  File: gst-base.info, Node: LargePositiveInteger-converting, Next: LargePositiveInteger-helper byte-level methods, Prev: LargePositiveInteger-arithmetic, Up: LargePositiveInteger -1.94.2 LargePositiveInteger: converting +1.97.2 LargePositiveInteger: converting --------------------------------------- asFloatD @@ -2922,7 +3617,7 @@  File: gst-base.info, Node: LargePositiveInteger-helper byte-level methods, Next: LargePositiveInteger-numeric testing, Prev: LargePositiveInteger-converting, Up: LargePositiveInteger -1.94.3 LargePositiveInteger: helper byte-level methods +1.97.3 LargePositiveInteger: helper byte-level methods ------------------------------------------------------ bytes: byteArray1 from: j compare: byteArray2 @@ -2967,7 +3662,7 @@  File: gst-base.info, Node: LargePositiveInteger-numeric testing, Next: LargePositiveInteger-primitive operations, Prev: LargePositiveInteger-helper byte-level methods, Up: LargePositiveInteger -1.94.4 LargePositiveInteger: numeric testing +1.97.4 LargePositiveInteger: numeric testing -------------------------------------------- abs @@ -2989,7 +3684,7 @@  File: gst-base.info, Node: LargePositiveInteger-primitive operations, Prev: LargePositiveInteger-numeric testing, Up: LargePositiveInteger -1.94.5 LargePositiveInteger: primitive operations +1.97.5 LargePositiveInteger: primitive operations ------------------------------------------------- divide: aNumber using: aBlock @@ -3008,7 +3703,7 @@  File: gst-base.info, Node: LargeWordArray, Next: LargeZeroInteger, Prev: LargePositiveInteger, Up: Base classes -1.95 LargeWordArray +1.98 LargeWordArray =================== Defined in namespace Smalltalk @@ -3024,7 +3719,7 @@  File: gst-base.info, Node: LargeWordArray-overridden, Up: LargeWordArray -1.95.1 LargeWordArray: overridden +1.98.1 LargeWordArray: overridden --------------------------------- defaultElement @@ -3037,7 +3732,7 @@  File: gst-base.info, Node: LargeZeroInteger, Next: Link, Prev: LargeWordArray, Up: Base classes -1.96 LargeZeroInteger +1.99 LargeZeroInteger ===================== Defined in namespace Smalltalk @@ -3060,7 +3755,7 @@  File: gst-base.info, Node: LargeZeroInteger-accessing, Next: LargeZeroInteger-arithmetic, Up: LargeZeroInteger -1.96.1 LargeZeroInteger: accessing +1.99.1 LargeZeroInteger: accessing ---------------------------------- at: anIndex @@ -3076,7 +3771,7 @@  File: gst-base.info, Node: LargeZeroInteger-arithmetic, Next: LargeZeroInteger-numeric testing, Prev: LargeZeroInteger-accessing, Up: LargeZeroInteger -1.96.2 LargeZeroInteger: arithmetic +1.99.2 LargeZeroInteger: arithmetic ----------------------------------- * aNumber @@ -3112,7 +3807,7 @@  File: gst-base.info, Node: LargeZeroInteger-numeric testing, Next: LargeZeroInteger-printing, Prev: LargeZeroInteger-arithmetic, Up: LargeZeroInteger -1.96.3 LargeZeroInteger: numeric testing +1.99.3 LargeZeroInteger: numeric testing ---------------------------------------- sign @@ -3125,7 +3820,7 @@  File: gst-base.info, Node: LargeZeroInteger-printing, Prev: LargeZeroInteger-numeric testing, Up: LargeZeroInteger -1.96.4 LargeZeroInteger: printing +1.99.4 LargeZeroInteger: printing --------------------------------- replace: str withStringBase: radix @@ -3135,8 +3830,8 @@  File: gst-base.info, Node: Link, Next: LinkedList, Prev: LargeZeroInteger, Up: Base classes -1.97 Link -========= +1.100 Link +========== Defined in namespace Smalltalk Superclass: Object @@ -3155,8 +3850,8 @@  File: gst-base.info, Node: Link class-instance creation, Next: Link-basic, Up: Link -1.97.1 Link class: instance creation ------------------------------------- +1.100.1 Link class: instance creation +------------------------------------- nextLink: aLink Create an instance with the given next link @@ -3165,8 +3860,8 @@  File: gst-base.info, Node: Link-basic, Next: Link-iteration, Prev: Link class-instance creation, Up: Link -1.97.2 Link: basic ------------------- +1.100.2 Link: basic +------------------- nextLink Answer the next item in the list @@ -3178,8 +3873,8 @@  File: gst-base.info, Node: Link-iteration, Prev: Link-basic, Up: Link -1.97.3 Link: iteration ----------------------- +1.100.3 Link: iteration +----------------------- at: index Retrieve a node (instance of Link) that is at a distance of `index' @@ -3198,8 +3893,8 @@  File: gst-base.info, Node: LinkedList, Next: LookupKey, Prev: Link, Up: Base classes -1.98 LinkedList -=============== +1.101 LinkedList +================ Defined in namespace Smalltalk Superclass: SequenceableCollection @@ -3219,8 +3914,8 @@  File: gst-base.info, Node: LinkedList-accessing, Next: LinkedList-adding, Up: LinkedList -1.98.1 LinkedList: accessing ----------------------------- +1.101.1 LinkedList: accessing +----------------------------- at: index Return the element that is index into the linked list. @@ -3232,8 +3927,8 @@  File: gst-base.info, Node: LinkedList-adding, Next: LinkedList-enumerating, Prev: LinkedList-accessing, Up: LinkedList -1.98.2 LinkedList: adding -------------------------- +1.101.2 LinkedList: adding +-------------------------- add: aLink Add aLink at the end of the list; return aLink. @@ -3260,8 +3955,8 @@  File: gst-base.info, Node: LinkedList-enumerating, Next: LinkedList-testing, Prev: LinkedList-adding, Up: LinkedList -1.98.3 LinkedList: enumerating ------------------------------- +1.101.3 LinkedList: enumerating +------------------------------- do: aBlock Enumerate each object in the list, passing it to aBlock (actual @@ -3277,8 +3972,8 @@  File: gst-base.info, Node: LinkedList-testing, Prev: LinkedList-enumerating, Up: LinkedList -1.98.4 LinkedList: testing --------------------------- +1.101.4 LinkedList: testing +--------------------------- isEmpty Returns true if the list contains no members @@ -3293,8 +3988,8 @@  File: gst-base.info, Node: LookupKey, Next: LookupTable, Prev: LinkedList, Up: Base classes -1.99 LookupKey -============== +1.102 LookupKey +=============== Defined in namespace Smalltalk Superclass: Magnitude @@ -3314,8 +4009,8 @@  File: gst-base.info, Node: LookupKey class-basic, Next: LookupKey-accessing, Up: LookupKey -1.99.1 LookupKey class: basic ------------------------------ +1.102.1 LookupKey class: basic +------------------------------ key: aKey Answer a new instance of the receiver with the given key and value @@ -3324,8 +4019,8 @@  File: gst-base.info, Node: LookupKey-accessing, Next: LookupKey-printing, Prev: LookupKey class-basic, Up: LookupKey -1.99.2 LookupKey: accessing ---------------------------- +1.102.2 LookupKey: accessing +---------------------------- key Answer the receiver's key @@ -3337,8 +4032,8 @@  File: gst-base.info, Node: LookupKey-printing, Next: LookupKey-storing, Prev: LookupKey-accessing, Up: LookupKey -1.99.3 LookupKey: printing --------------------------- +1.102.3 LookupKey: printing +--------------------------- printOn: aStream Put on aStream a representation of the receiver @@ -3347,8 +4042,8 @@  File: gst-base.info, Node: LookupKey-storing, Next: LookupKey-testing, Prev: LookupKey-printing, Up: LookupKey -1.99.4 LookupKey: storing -------------------------- +1.102.4 LookupKey: storing +-------------------------- storeOn: aStream Put on aStream some Smalltalk code compiling to the receiver @@ -3357,8 +4052,8 @@  File: gst-base.info, Node: LookupKey-testing, Prev: LookupKey-storing, Up: LookupKey -1.99.5 LookupKey: testing -------------------------- +1.102.5 LookupKey: testing +-------------------------- < aLookupKey Answer whether the receiver's key is less than aLookupKey's @@ -3375,7 +4070,7 @@  File: gst-base.info, Node: LookupTable, Next: Magnitude, Prev: LookupKey, Up: Base classes -1.100 LookupTable +1.103 LookupTable ================= Defined in namespace Smalltalk @@ -3401,7 +4096,7 @@  File: gst-base.info, Node: LookupTable class-instance creation, Next: LookupTable-accessing, Up: LookupTable -1.100.1 LookupTable class: instance creation +1.103.1 LookupTable class: instance creation -------------------------------------------- new @@ -3411,7 +4106,7 @@  File: gst-base.info, Node: LookupTable-accessing, Next: LookupTable-enumerating, Prev: LookupTable class-instance creation, Up: LookupTable -1.100.2 LookupTable: accessing +1.103.2 LookupTable: accessing ------------------------------ add: anAssociation @@ -3436,7 +4131,7 @@  File: gst-base.info, Node: LookupTable-enumerating, Next: LookupTable-hashing, Prev: LookupTable-accessing, Up: LookupTable -1.100.3 LookupTable: enumerating +1.103.3 LookupTable: enumerating -------------------------------- associationsDo: aBlock @@ -3456,7 +4151,7 @@  File: gst-base.info, Node: LookupTable-hashing, Next: LookupTable-rehashing, Prev: LookupTable-enumerating, Up: LookupTable -1.100.4 LookupTable: hashing +1.103.4 LookupTable: hashing ---------------------------- hash @@ -3466,7 +4161,7 @@  File: gst-base.info, Node: LookupTable-rehashing, Next: LookupTable-removing, Prev: LookupTable-hashing, Up: LookupTable -1.100.5 LookupTable: rehashing +1.103.5 LookupTable: rehashing ------------------------------ rehash @@ -3476,7 +4171,7 @@  File: gst-base.info, Node: LookupTable-removing, Next: LookupTable-storing, Prev: LookupTable-rehashing, Up: LookupTable -1.100.6 LookupTable: removing +1.103.6 LookupTable: removing ----------------------------- remove: anAssociation @@ -3493,7 +4188,7 @@  File: gst-base.info, Node: LookupTable-storing, Prev: LookupTable-removing, Up: LookupTable -1.100.7 LookupTable: storing +1.103.7 LookupTable: storing ---------------------------- storeOn: aStream @@ -3503,7 +4198,7 @@  File: gst-base.info, Node: Magnitude, Next: MappedCollection, Prev: LookupTable, Up: Base classes -1.101 Magnitude +1.104 Magnitude =============== Defined in namespace Smalltalk @@ -3521,7 +4216,7 @@  File: gst-base.info, Node: Magnitude-basic, Next: Magnitude-misc methods, Up: Magnitude -1.101.1 Magnitude: basic +1.104.1 Magnitude: basic ------------------------ < aMagnitude @@ -3543,7 +4238,7 @@  File: gst-base.info, Node: Magnitude-misc methods, Prev: Magnitude-basic, Up: Magnitude -1.101.2 Magnitude: misc methods +1.104.2 Magnitude: misc methods ------------------------------- between: min and: max @@ -3559,7 +4254,7 @@  File: gst-base.info, Node: MappedCollection, Next: Memory, Prev: Magnitude, Up: Base classes -1.102 MappedCollection +1.105 MappedCollection ====================== Defined in namespace Smalltalk @@ -3593,7 +4288,7 @@  File: gst-base.info, Node: MappedCollection class-instance creation, Next: MappedCollection-basic, Up: MappedCollection -1.102.1 MappedCollection class: instance creation +1.105.1 MappedCollection class: instance creation ------------------------------------------------- collection: aCollection map: aMap @@ -3608,7 +4303,7 @@  File: gst-base.info, Node: MappedCollection-basic, Prev: MappedCollection class-instance creation, Up: MappedCollection -1.102.2 MappedCollection: basic +1.105.2 MappedCollection: basic ------------------------------- add: anObject @@ -3672,7 +4367,7 @@  File: gst-base.info, Node: Memory, Next: Message, Prev: MappedCollection, Up: Base classes -1.103 Memory +1.106 Memory ============ Defined in namespace Smalltalk @@ -3691,7 +4386,7 @@  File: gst-base.info, Node: Memory class-accessing, Up: Memory -1.103.1 Memory class: accessing +1.106.1 Memory class: accessing ------------------------------- at: anAddress @@ -3818,7 +4513,7 @@  File: gst-base.info, Node: Message, Next: MessageNotUnderstood, Prev: Memory, Up: Base classes -1.104 Message +1.107 Message ============= Defined in namespace Smalltalk @@ -3840,7 +4535,7 @@  File: gst-base.info, Node: Message class-creating instances, Next: Message-accessing, Up: Message -1.104.1 Message class: creating instances +1.107.1 Message class: creating instances ----------------------------------------- selector: aSymbol argument: anObject @@ -3853,7 +4548,7 @@  File: gst-base.info, Node: Message-accessing, Next: Message-basic, Prev: Message class-creating instances, Up: Message -1.104.2 Message: accessing +1.107.2 Message: accessing -------------------------- argument @@ -3875,7 +4570,7 @@  File: gst-base.info, Node: Message-basic, Next: Message-printing, Prev: Message-accessing, Up: Message -1.104.3 Message: basic +1.107.3 Message: basic ---------------------- printAsAttributeOn: aStream @@ -3886,7 +4581,7 @@  File: gst-base.info, Node: Message-printing, Prev: Message-basic, Up: Message -1.104.4 Message: printing +1.107.4 Message: printing ------------------------- printOn: aStream @@ -3902,7 +4597,7 @@  File: gst-base.info, Node: MessageNotUnderstood, Next: Metaclass, Prev: Message, Up: Base classes -1.105 MessageNotUnderstood +1.108 MessageNotUnderstood ========================== Defined in namespace Smalltalk @@ -3920,7 +4615,7 @@  File: gst-base.info, Node: MessageNotUnderstood-accessing, Next: MessageNotUnderstood-description, Up: MessageNotUnderstood -1.105.1 MessageNotUnderstood: accessing +1.108.1 MessageNotUnderstood: accessing --------------------------------------- message @@ -3933,7 +4628,7 @@  File: gst-base.info, Node: MessageNotUnderstood-description, Prev: MessageNotUnderstood-accessing, Up: MessageNotUnderstood -1.105.2 MessageNotUnderstood: description +1.108.2 MessageNotUnderstood: description ----------------------------------------- description @@ -3943,7 +4638,7 @@  File: gst-base.info, Node: Metaclass, Next: MethodContext, Prev: MessageNotUnderstood, Up: Base classes -1.106 Metaclass +1.109 Metaclass =============== Defined in namespace Smalltalk @@ -3962,6 +4657,7 @@ * Metaclass class-instance creation:: (class) * Metaclass-accessing:: (instance) * Metaclass-basic:: (instance) +* Metaclass-compiling methods:: (instance) * Metaclass-delegation:: (instance) * Metaclass-filing:: (instance) * Metaclass-printing:: (instance) @@ -3970,7 +4666,7 @@  File: gst-base.info, Node: Metaclass class-instance creation, Next: Metaclass-accessing, Up: Metaclass -1.106.1 Metaclass class: instance creation +1.109.1 Metaclass class: instance creation ------------------------------------------ subclassOf: superMeta @@ -3980,7 +4676,7 @@  File: gst-base.info, Node: Metaclass-accessing, Next: Metaclass-basic, Prev: Metaclass class-instance creation, Up: Metaclass -1.106.2 Metaclass: accessing +1.109.2 Metaclass: accessing ---------------------------- instanceClass @@ -3996,9 +4692,9 @@  -File: gst-base.info, Node: Metaclass-basic, Next: Metaclass-delegation, Prev: Metaclass-accessing, Up: Metaclass +File: gst-base.info, Node: Metaclass-basic, Next: Metaclass-compiling methods, Prev: Metaclass-accessing, Up: Metaclass -1.106.3 Metaclass: basic +1.109.3 Metaclass: basic ------------------------ name: className environment: aNamespace subclassOf: theSuperclass @@ -4020,9 +4716,19 @@  -File: gst-base.info, Node: Metaclass-delegation, Next: Metaclass-filing, Prev: Metaclass-basic, Up: Metaclass +File: gst-base.info, Node: Metaclass-compiling methods, Next: Metaclass-delegation, Prev: Metaclass-basic, Up: Metaclass + +1.109.4 Metaclass: compiling methods +------------------------------------ + +poolResolution + Use my instance's poolResolution. + + + +File: gst-base.info, Node: Metaclass-delegation, Next: Metaclass-filing, Prev: Metaclass-compiling methods, Up: Metaclass -1.106.4 Metaclass: delegation +1.109.5 Metaclass: delegation ----------------------------- addClassVarName: aString @@ -4037,6 +4743,10 @@ Answer the names of the variables in the receiver's class pool dictionary and in each of the superclasses' class pool dictionaries +allSharedPoolDictionariesDo: aBlock + Answer the shared pools visible from methods in the metaclass, in + the correct search order. + allSharedPools Return the names of the shared pools defined by the class and any of its superclasses @@ -4081,7 +4791,7 @@  File: gst-base.info, Node: Metaclass-filing, Next: Metaclass-printing, Prev: Metaclass-delegation, Up: Metaclass -1.106.5 Metaclass: filing +1.109.6 Metaclass: filing ------------------------- fileOutOn: aFileStream @@ -4092,7 +4802,7 @@  File: gst-base.info, Node: Metaclass-printing, Next: Metaclass-testing functionality, Prev: Metaclass-filing, Up: Metaclass -1.106.6 Metaclass: printing +1.109.7 Metaclass: printing --------------------------- nameIn: aNamespace @@ -4112,7 +4822,7 @@  File: gst-base.info, Node: Metaclass-testing functionality, Prev: Metaclass-printing, Up: Metaclass -1.106.7 Metaclass: testing functionality +1.109.8 Metaclass: testing functionality ---------------------------------------- asClass @@ -4125,7 +4835,7 @@  File: gst-base.info, Node: MethodContext, Next: MethodDictionary, Prev: Metaclass, Up: Base classes -1.107 MethodContext +1.110 MethodContext =================== Defined in namespace Smalltalk @@ -4144,7 +4854,7 @@  File: gst-base.info, Node: MethodContext-accessing, Next: MethodContext-debugging, Up: MethodContext -1.107.1 MethodContext: accessing +1.110.1 MethodContext: accessing -------------------------------- home @@ -4176,6 +4886,12 @@ a call to the #continue: method of ContextPart). Such contexts are created only by #ensure:. +mark + To create a valid execution environment for the interpreter even + before it starts, GST creates a fake context which invokes a + special "termination" method. A similar context is created by + #valueWithUnwind, by using this method. + sender Return the context from which the receiver was sent @@ -4183,7 +4899,7 @@  File: gst-base.info, Node: MethodContext-debugging, Next: MethodContext-printing, Prev: MethodContext-accessing, Up: MethodContext -1.107.2 MethodContext: debugging +1.110.2 MethodContext: debugging -------------------------------- isInternalExceptionHandlingContext @@ -4202,7 +4918,7 @@  File: gst-base.info, Node: MethodContext-printing, Prev: MethodContext-debugging, Up: MethodContext -1.107.3 MethodContext: printing +1.110.3 MethodContext: printing ------------------------------- printOn: aStream @@ -4212,7 +4928,7 @@  File: gst-base.info, Node: MethodDictionary, Next: MethodInfo, Prev: MethodContext, Up: Base classes -1.108 MethodDictionary +1.111 MethodDictionary ====================== Defined in namespace Smalltalk @@ -4231,7 +4947,7 @@  File: gst-base.info, Node: MethodDictionary-adding, Next: MethodDictionary-rehashing, Up: MethodDictionary -1.108.1 MethodDictionary: adding +1.111.1 MethodDictionary: adding -------------------------------- at: key put: value @@ -4241,7 +4957,7 @@  File: gst-base.info, Node: MethodDictionary-rehashing, Next: MethodDictionary-removing, Prev: MethodDictionary-adding, Up: MethodDictionary -1.108.2 MethodDictionary: rehashing +1.111.2 MethodDictionary: rehashing ----------------------------------- rehash @@ -4251,7 +4967,7 @@  File: gst-base.info, Node: MethodDictionary-removing, Prev: MethodDictionary-rehashing, Up: MethodDictionary -1.108.3 MethodDictionary: removing +1.111.3 MethodDictionary: removing ---------------------------------- remove: anAssociation @@ -4265,7 +4981,7 @@  File: gst-base.info, Node: MethodInfo, Next: Namespace, Prev: MethodDictionary, Up: Base classes -1.109 MethodInfo +1.112 MethodInfo ================ Defined in namespace Smalltalk @@ -4283,7 +4999,7 @@  File: gst-base.info, Node: MethodInfo-accessing, Next: MethodInfo-equality, Up: MethodInfo -1.109.1 MethodInfo: accessing +1.112.1 MethodInfo: accessing ----------------------------- category @@ -4325,7 +5041,7 @@  File: gst-base.info, Node: MethodInfo-equality, Prev: MethodInfo-accessing, Up: MethodInfo -1.109.2 MethodInfo: equality +1.112.2 MethodInfo: equality ---------------------------- = aMethodInfo @@ -4338,7 +5054,7 @@  File: gst-base.info, Node: Namespace, Next: NetClients.URIResolver, Prev: MethodInfo, Up: Base classes -1.110 Namespace +1.113 Namespace =============== Defined in namespace Smalltalk @@ -4359,7 +5075,7 @@  File: gst-base.info, Node: Namespace class-accessing, Next: Namespace class-disabling instance creation, Up: Namespace -1.110.1 Namespace class: accessing +1.113.1 Namespace class: accessing ---------------------------------- current @@ -4373,7 +5089,7 @@  File: gst-base.info, Node: Namespace class-disabling instance creation, Next: Namespace class-initialization, Prev: Namespace class-accessing, Up: Namespace -1.110.2 Namespace class: disabling instance creation +1.113.2 Namespace class: disabling instance creation ---------------------------------------------------- new @@ -4386,7 +5102,7 @@  File: gst-base.info, Node: Namespace class-initialization, Next: Namespace-accessing, Prev: Namespace class-disabling instance creation, Up: Namespace -1.110.3 Namespace class: initialization +1.113.3 Namespace class: initialization --------------------------------------- initialize @@ -4398,7 +5114,7 @@  File: gst-base.info, Node: Namespace-accessing, Next: Namespace-namespace hierarchy, Prev: Namespace class-initialization, Up: Namespace -1.110.4 Namespace: accessing +1.113.4 Namespace: accessing ---------------------------- inheritedKeys @@ -4408,7 +5124,7 @@  File: gst-base.info, Node: Namespace-namespace hierarchy, Next: Namespace-overrides for superspaces, Prev: Namespace-accessing, Up: Namespace -1.110.5 Namespace: namespace hierarchy +1.113.5 Namespace: namespace hierarchy -------------------------------------- siblings @@ -4424,7 +5140,7 @@  File: gst-base.info, Node: Namespace-overrides for superspaces, Next: Namespace-printing, Prev: Namespace-namespace hierarchy, Up: Namespace -1.110.6 Namespace: overrides for superspaces +1.113.6 Namespace: overrides for superspaces -------------------------------------------- associationAt: key ifAbsent: aBlock @@ -4475,7 +5191,7 @@  File: gst-base.info, Node: Namespace-printing, Prev: Namespace-overrides for superspaces, Up: Namespace -1.110.7 Namespace: printing +1.113.7 Namespace: printing --------------------------- nameIn: aNamespace @@ -4493,7 +5209,7 @@  File: gst-base.info, Node: NetClients.URIResolver, Next: NetClients.URL, Prev: Namespace, Up: Base classes -1.111 NetClients.URIResolver +1.114 NetClients.URIResolver ============================ Defined in namespace Smalltalk.NetClients @@ -4509,7 +5225,7 @@  File: gst-base.info, Node: NetClients.URIResolver class-api, Next: NetClients.URIResolver class-instance creation, Up: NetClients.URIResolver -1.111.1 NetClients.URIResolver class: api +1.114.1 NetClients.URIResolver class: api ----------------------------------------- openOn: aURI @@ -4537,7 +5253,7 @@  File: gst-base.info, Node: NetClients.URIResolver class-instance creation, Prev: NetClients.URIResolver class-api, Up: NetClients.URIResolver -1.111.2 NetClients.URIResolver class: instance creation +1.114.2 NetClients.URIResolver class: instance creation ------------------------------------------------------- on: anURL @@ -4548,7 +5264,7 @@  File: gst-base.info, Node: NetClients.URL, Next: Notification, Prev: NetClients.URIResolver, Up: Base classes -1.112 NetClients.URL +1.115 NetClients.URL ==================== Defined in namespace Smalltalk.NetClients @@ -4566,13 +5282,14 @@ * NetClients.URL-copying:: (instance) * NetClients.URL-initialize-release:: (instance) * NetClients.URL-printing:: (instance) +* NetClients.URL-still unclassified:: (instance) * NetClients.URL-testing:: (instance) * NetClients.URL-utilities:: (instance)  File: gst-base.info, Node: NetClients.URL class-encoding URLs, Next: NetClients.URL class-instance creation, Up: NetClients.URL -1.112.1 NetClients.URL class: encoding URLs +1.115.1 NetClients.URL class: encoding URLs ------------------------------------------- decode: aString @@ -4590,7 +5307,7 @@  File: gst-base.info, Node: NetClients.URL class-instance creation, Next: NetClients.URL-accessing, Prev: NetClients.URL class-encoding URLs, Up: NetClients.URL -1.112.2 NetClients.URL class: instance creation +1.115.2 NetClients.URL class: instance creation ----------------------------------------------- fromString: aString @@ -4612,7 +5329,7 @@  File: gst-base.info, Node: NetClients.URL-accessing, Next: NetClients.URL-comparing, Prev: NetClients.URL class-instance creation, Up: NetClients.URL -1.112.3 NetClients.URL: accessing +1.115.3 NetClients.URL: accessing --------------------------------- decodedFields @@ -4713,7 +5430,7 @@  File: gst-base.info, Node: NetClients.URL-comparing, Next: NetClients.URL-copying, Prev: NetClients.URL-accessing, Up: NetClients.URL -1.112.4 NetClients.URL: comparing +1.115.4 NetClients.URL: comparing --------------------------------- = anURL @@ -4729,7 +5446,7 @@  File: gst-base.info, Node: NetClients.URL-copying, Next: NetClients.URL-initialize-release, Prev: NetClients.URL-comparing, Up: NetClients.URL -1.112.5 NetClients.URL: copying +1.115.5 NetClients.URL: copying ------------------------------- copyWithoutAuxiliaryParts @@ -4747,7 +5464,7 @@  File: gst-base.info, Node: NetClients.URL-initialize-release, Next: NetClients.URL-printing, Prev: NetClients.URL-copying, Up: NetClients.URL -1.112.6 NetClients.URL: initialize-release +1.115.6 NetClients.URL: initialize-release ------------------------------------------ initialize @@ -4755,9 +5472,9 @@  -File: gst-base.info, Node: NetClients.URL-printing, Next: NetClients.URL-testing, Prev: NetClients.URL-initialize-release, Up: NetClients.URL +File: gst-base.info, Node: NetClients.URL-printing, Next: NetClients.URL-still unclassified, Prev: NetClients.URL-initialize-release, Up: NetClients.URL -1.112.7 NetClients.URL: printing +1.115.7 NetClients.URL: printing -------------------------------- printOn: stream @@ -4765,10 +5482,23 @@  -File: gst-base.info, Node: NetClients.URL-testing, Next: NetClients.URL-utilities, Prev: NetClients.URL-printing, Up: NetClients.URL +File: gst-base.info, Node: NetClients.URL-still unclassified, Next: NetClients.URL-testing, Prev: NetClients.URL-printing, Up: NetClients.URL + +1.115.8 NetClients.URL: still unclassified +------------------------------------------ + +contents + Not commented. + +readStream + Not commented. -1.112.8 NetClients.URL: testing -------------------------------- + + +File: gst-base.info, Node: NetClients.URL-testing, Next: NetClients.URL-utilities, Prev: NetClients.URL-still unclassified, Up: NetClients.URL + +1.115.9 NetClients.URL: testing +------------------------------- canCache Answer whether the URL is cacheable. The current implementation @@ -4793,8 +5523,8 @@  File: gst-base.info, Node: NetClients.URL-utilities, Prev: NetClients.URL-testing, Up: NetClients.URL -1.112.9 NetClients.URL: utilities ---------------------------------- +1.115.10 NetClients.URL: utilities +---------------------------------- construct: anURL Construct an absolute URL based on the relative URL anURL and the @@ -4804,7 +5534,7 @@  File: gst-base.info, Node: Notification, Next: NullProxy, Prev: NetClients.URL, Up: Base classes -1.113 Notification +1.116 Notification ================== Defined in namespace Smalltalk @@ -4821,7 +5551,7 @@  File: gst-base.info, Node: Notification-exception description, Up: Notification -1.113.1 Notification: exception description +1.116.1 Notification: exception description ------------------------------------------- defaultAction @@ -4838,7 +5568,7 @@  File: gst-base.info, Node: NullProxy, Next: NullValueHolder, Prev: Notification, Up: Base classes -1.114 NullProxy +1.117 NullProxy =============== Defined in namespace Smalltalk @@ -4858,7 +5588,7 @@  File: gst-base.info, Node: NullProxy class-instance creation, Next: NullProxy-accessing, Up: NullProxy -1.114.1 NullProxy class: instance creation +1.117.1 NullProxy class: instance creation ------------------------------------------ loadFrom: anObjectDumper @@ -4868,7 +5598,7 @@  File: gst-base.info, Node: NullProxy-accessing, Prev: NullProxy class-instance creation, Up: NullProxy -1.114.2 NullProxy: accessing +1.117.2 NullProxy: accessing ---------------------------- dumpTo: anObjectDumper @@ -4878,7 +5608,7 @@  File: gst-base.info, Node: NullValueHolder, Next: Number, Prev: NullProxy, Up: Base classes -1.115 NullValueHolder +1.118 NullValueHolder ===================== Defined in namespace Smalltalk @@ -4897,7 +5627,7 @@  File: gst-base.info, Node: NullValueHolder class-creating instances, Next: NullValueHolder-accessing, Up: NullValueHolder -1.115.1 NullValueHolder class: creating instances +1.118.1 NullValueHolder class: creating instances ------------------------------------------------- new @@ -4910,7 +5640,7 @@  File: gst-base.info, Node: NullValueHolder-accessing, Prev: NullValueHolder class-creating instances, Up: NullValueHolder -1.115.2 NullValueHolder: accessing +1.118.2 NullValueHolder: accessing ---------------------------------- value @@ -4923,7 +5653,7 @@  File: gst-base.info, Node: Number, Next: Object, Prev: NullValueHolder, Up: Base classes -1.116 Number +1.119 Number ============ Defined in namespace Smalltalk @@ -4953,7 +5683,7 @@  File: gst-base.info, Node: Number class-converting, Next: Number class-testing, Up: Number -1.116.1 Number class: converting +1.119.1 Number class: converting -------------------------------- coerce: aNumber @@ -4968,7 +5698,7 @@  File: gst-base.info, Node: Number class-testing, Next: Number-arithmetic, Prev: Number class-converting, Up: Number -1.116.2 Number class: testing +1.119.2 Number class: testing ----------------------------- isImmediate @@ -4978,7 +5708,7 @@  File: gst-base.info, Node: Number-arithmetic, Next: Number-coercion, Prev: Number class-testing, Up: Number -1.116.3 Number: arithmetic +1.119.3 Number: arithmetic -------------------------- * aNumber @@ -5022,7 +5752,7 @@  File: gst-base.info, Node: Number-coercion, Next: Number-comparing, Prev: Number-arithmetic, Up: Number -1.116.4 Number: coercion +1.119.4 Number: coercion ------------------------ asCNumber @@ -5033,7 +5763,7 @@  File: gst-base.info, Node: Number-comparing, Next: Number-converting, Prev: Number-coercion, Up: Number -1.116.5 Number: comparing +1.119.5 Number: comparing ------------------------- max: aNumber @@ -5050,7 +5780,7 @@  File: gst-base.info, Node: Number-converting, Next: Number-copying, Prev: Number-comparing, Up: Number -1.116.6 Number: converting +1.119.6 Number: converting -------------------------- asFloat @@ -5105,7 +5835,7 @@  File: gst-base.info, Node: Number-copying, Next: Number-error raising, Prev: Number-converting, Up: Number -1.116.7 Number: copying +1.119.7 Number: copying ----------------------- deepCopy @@ -5118,7 +5848,7 @@  File: gst-base.info, Node: Number-error raising, Next: Number-misc math, Prev: Number-copying, Up: Number -1.116.8 Number: error raising +1.119.8 Number: error raising ----------------------------- arithmeticError: msg @@ -5132,7 +5862,7 @@  File: gst-base.info, Node: Number-misc math, Next: Number-point creation, Prev: Number-error raising, Up: Number -1.116.9 Number: misc math +1.119.9 Number: misc math ------------------------- abs @@ -5228,7 +5958,7 @@  File: gst-base.info, Node: Number-point creation, Next: Number-retrying, Prev: Number-misc math, Up: Number -1.116.10 Number: point creation +1.119.10 Number: point creation ------------------------------- @ y @@ -5241,7 +5971,7 @@  File: gst-base.info, Node: Number-retrying, Next: Number-shortcuts and iterators, Prev: Number-point creation, Up: Number -1.116.11 Number: retrying +1.119.11 Number: retrying ------------------------- retry: aSymbol coercing: aNumber @@ -5287,7 +6017,7 @@  File: gst-base.info, Node: Number-shortcuts and iterators, Next: Number-testing, Prev: Number-retrying, Up: Number -1.116.12 Number: shortcuts and iterators +1.119.12 Number: shortcuts and iterators ---------------------------------------- to: stop @@ -5322,7 +6052,7 @@  File: gst-base.info, Node: Number-testing, Next: Number-truncation and round off, Prev: Number-shortcuts and iterators, Up: Number -1.116.13 Number: testing +1.119.13 Number: testing ------------------------ closeTo: num @@ -5373,7 +6103,7 @@  File: gst-base.info, Node: Number-truncation and round off, Prev: Number-testing, Up: Number -1.116.14 Number: truncation and round off +1.119.14 Number: truncation and round off ----------------------------------------- asInteger @@ -5406,7 +6136,7 @@  File: gst-base.info, Node: Object, Next: ObjectDumper, Prev: Number, Up: Base classes -1.117 Object +1.120 Object ============ Defined in namespace Smalltalk @@ -5438,7 +6168,7 @@  File: gst-base.info, Node: Object class-initialization, Next: Object-built ins, Up: Object -1.117.1 Object class: initialization +1.120.1 Object class: initialization ------------------------------------ dependencies @@ -5462,7 +6192,7 @@  File: gst-base.info, Node: Object-built ins, Next: Object-change and update, Prev: Object class-initialization, Up: Object -1.117.2 Object: built ins +1.120.2 Object: built ins ------------------------- = arg @@ -5689,7 +6419,7 @@  File: gst-base.info, Node: Object-change and update, Next: Object-class type methods, Prev: Object-built ins, Up: Object -1.117.3 Object: change and update +1.120.3 Object: change and update --------------------------------- broadcast: aSymbol @@ -5727,7 +6457,7 @@  File: gst-base.info, Node: Object-class type methods, Next: Object-conversion, Prev: Object-change and update, Up: Object -1.117.4 Object: class type methods +1.120.4 Object: class type methods ---------------------------------- species @@ -5748,7 +6478,7 @@  File: gst-base.info, Node: Object-conversion, Next: Object-copying, Prev: Object-class type methods, Up: Object -1.117.5 Object: conversion +1.120.5 Object: conversion -------------------------- asValue @@ -5758,7 +6488,7 @@  File: gst-base.info, Node: Object-copying, Next: Object-debugging, Prev: Object-conversion, Up: Object -1.117.6 Object: copying +1.120.6 Object: copying ----------------------- copy @@ -5779,7 +6509,7 @@  File: gst-base.info, Node: Object-debugging, Next: Object-dependents access, Prev: Object-copying, Up: Object -1.117.7 Object: debugging +1.120.7 Object: debugging ------------------------- inspect @@ -5792,7 +6522,7 @@  File: gst-base.info, Node: Object-dependents access, Next: Object-error raising, Prev: Object-debugging, Up: Object -1.117.8 Object: dependents access +1.120.8 Object: dependents access --------------------------------- addDependent: anObject @@ -5814,7 +6544,7 @@  File: gst-base.info, Node: Object-error raising, Next: Object-finalization, Prev: Object-dependents access, Up: Object -1.117.9 Object: error raising +1.120.9 Object: error raising ----------------------------- doesNotUnderstand: aMessage @@ -5835,7 +6565,7 @@  File: gst-base.info, Node: Object-finalization, Next: Object-printing, Prev: Object-error raising, Up: Object -1.117.10 Object: finalization +1.120.10 Object: finalization ----------------------------- addToBeFinalized @@ -5863,7 +6593,7 @@  File: gst-base.info, Node: Object-printing, Next: Object-relational operators, Prev: Object-finalization, Up: Object -1.117.11 Object: printing +1.120.11 Object: printing ------------------------- basicPrintNl @@ -5917,7 +6647,7 @@  File: gst-base.info, Node: Object-relational operators, Next: Object-saving and loading, Prev: Object-printing, Up: Object -1.117.12 Object: relational operators +1.120.12 Object: relational operators ------------------------------------- ~= anObject @@ -5930,7 +6660,7 @@  File: gst-base.info, Node: Object-saving and loading, Next: Object-storing, Prev: Object-relational operators, Up: Object -1.117.13 Object: saving and loading +1.120.13 Object: saving and loading ----------------------------------- binaryRepresentationObject @@ -5959,7 +6689,7 @@  File: gst-base.info, Node: Object-storing, Next: Object-syntax shortcuts, Prev: Object-saving and loading, Up: Object -1.117.14 Object: storing +1.120.14 Object: storing ------------------------ store @@ -5983,7 +6713,7 @@  File: gst-base.info, Node: Object-syntax shortcuts, Next: Object-testing functionality, Prev: Object-storing, Up: Object -1.117.15 Object: syntax shortcuts +1.120.15 Object: syntax shortcuts --------------------------------- -> anObject @@ -5994,7 +6724,7 @@  File: gst-base.info, Node: Object-testing functionality, Next: Object-VM callbacks, Prev: Object-syntax shortcuts, Up: Object -1.117.16 Object: testing functionality +1.120.16 Object: testing functionality -------------------------------------- ifNil: nilBlock @@ -6018,6 +6748,9 @@ isBehavior Answer `false'. +isCObject + Answer `false'. + isCharacter Answer `false'. @@ -6077,7 +6810,7 @@  File: gst-base.info, Node: Object-VM callbacks, Prev: Object-testing functionality, Up: Object -1.117.17 Object: VM callbacks +1.120.17 Object: VM callbacks ----------------------------- badReturnError @@ -6097,7 +6830,7 @@  File: gst-base.info, Node: ObjectDumper, Next: ObjectMemory, Prev: Object, Up: Base classes -1.118 ObjectDumper +1.121 ObjectDumper ================== Defined in namespace Smalltalk @@ -6128,7 +6861,7 @@  File: gst-base.info, Node: ObjectDumper class-establishing proxy classes, Next: ObjectDumper class-instance creation, Up: ObjectDumper -1.118.1 ObjectDumper class: establishing proxy classes +1.121.1 ObjectDumper class: establishing proxy classes ------------------------------------------------------ disableProxyFor: aClass @@ -6154,7 +6887,7 @@  File: gst-base.info, Node: ObjectDumper class-instance creation, Next: ObjectDumper class-shortcuts, Prev: ObjectDumper class-establishing proxy classes, Up: ObjectDumper -1.118.2 ObjectDumper class: instance creation +1.121.2 ObjectDumper class: instance creation --------------------------------------------- new @@ -6167,7 +6900,7 @@  File: gst-base.info, Node: ObjectDumper class-shortcuts, Next: ObjectDumper class-testing, Prev: ObjectDumper class-instance creation, Up: ObjectDumper -1.118.3 ObjectDumper class: shortcuts +1.121.3 ObjectDumper class: shortcuts ------------------------------------- dump: anObject to: aFileStream @@ -6180,7 +6913,7 @@  File: gst-base.info, Node: ObjectDumper class-testing, Next: ObjectDumper-accessing, Prev: ObjectDumper class-shortcuts, Up: ObjectDumper -1.118.4 ObjectDumper class: testing +1.121.4 ObjectDumper class: testing ----------------------------------- example @@ -6193,7 +6926,7 @@  File: gst-base.info, Node: ObjectDumper-accessing, Next: ObjectDumper-loading/dumping objects, Prev: ObjectDumper class-testing, Up: ObjectDumper -1.118.5 ObjectDumper: accessing +1.121.5 ObjectDumper: accessing ------------------------------- flush @@ -6211,7 +6944,7 @@  File: gst-base.info, Node: ObjectDumper-loading/dumping objects, Next: ObjectDumper-stream interface, Prev: ObjectDumper-accessing, Up: ObjectDumper -1.118.6 ObjectDumper: loading/dumping objects +1.121.6 ObjectDumper: loading/dumping objects --------------------------------------------- dump: anObject @@ -6226,7 +6959,7 @@  File: gst-base.info, Node: ObjectDumper-stream interface, Prev: ObjectDumper-loading/dumping objects, Up: ObjectDumper -1.118.7 ObjectDumper: stream interface +1.121.7 ObjectDumper: stream interface -------------------------------------- atEnd @@ -6242,7 +6975,7 @@  File: gst-base.info, Node: ObjectMemory, Next: OrderedCollection, Prev: ObjectDumper, Up: Base classes -1.119 ObjectMemory +1.122 ObjectMemory ================== Defined in namespace Smalltalk @@ -6272,7 +7005,7 @@  File: gst-base.info, Node: ObjectMemory class-accessing, Next: ObjectMemory class-builtins, Up: ObjectMemory -1.119.1 ObjectMemory class: accessing +1.122.1 ObjectMemory class: accessing ------------------------------------- current @@ -6282,7 +7015,7 @@  File: gst-base.info, Node: ObjectMemory class-builtins, Next: ObjectMemory class-initialization, Prev: ObjectMemory class-accessing, Up: ObjectMemory -1.119.2 ObjectMemory class: builtins +1.122.2 ObjectMemory class: builtins ------------------------------------ abort @@ -6365,9 +7098,6 @@ updating the averages, 1 disables the smoothing (the statistics return the last value). -snapshot: aString - Save an image on the aString file - spaceGrowRate Answer the rate with which the amount of memory used by the system grows @@ -6380,7 +7110,7 @@  File: gst-base.info, Node: ObjectMemory class-initialization, Next: ObjectMemory class-saving the image, Prev: ObjectMemory class-builtins, Up: ObjectMemory -1.119.3 ObjectMemory class: initialization +1.122.3 ObjectMemory class: initialization ------------------------------------------ changed: aSymbol @@ -6393,17 +7123,20 @@  File: gst-base.info, Node: ObjectMemory class-saving the image, Next: ObjectMemory-accessing, Prev: ObjectMemory class-initialization, Up: ObjectMemory -1.119.4 ObjectMemory class: saving the image +1.122.4 ObjectMemory class: saving the image -------------------------------------------- snapshot Save a snapshot on the image file that was loaded on startup. +snapshot: aString + Save an image on the aString file +  File: gst-base.info, Node: ObjectMemory-accessing, Next: ObjectMemory-builtins, Prev: ObjectMemory class-saving the image, Up: ObjectMemory -1.119.5 ObjectMemory: accessing +1.122.5 ObjectMemory: accessing ------------------------------- allocFailures @@ -6551,7 +7284,7 @@  File: gst-base.info, Node: ObjectMemory-builtins, Next: ObjectMemory-derived information, Prev: ObjectMemory-accessing, Up: ObjectMemory -1.119.6 ObjectMemory: builtins +1.122.6 ObjectMemory: builtins ------------------------------ update @@ -6561,7 +7294,7 @@  File: gst-base.info, Node: ObjectMemory-derived information, Prev: ObjectMemory-builtins, Up: ObjectMemory -1.119.7 ObjectMemory: derived information +1.122.7 ObjectMemory: derived information ----------------------------------------- scavengesBeforeTenuring @@ -6581,7 +7314,7 @@  File: gst-base.info, Node: OrderedCollection, Next: Package, Prev: ObjectMemory, Up: Base classes -1.120 OrderedCollection +1.123 OrderedCollection ======================= Defined in namespace Smalltalk @@ -6602,7 +7335,7 @@  File: gst-base.info, Node: OrderedCollection class-instance creation, Next: OrderedCollection-accessing, Up: OrderedCollection -1.120.1 OrderedCollection class: instance creation +1.123.1 OrderedCollection class: instance creation -------------------------------------------------- new @@ -6615,7 +7348,7 @@  File: gst-base.info, Node: OrderedCollection-accessing, Next: OrderedCollection-adding, Prev: OrderedCollection class-instance creation, Up: OrderedCollection -1.120.2 OrderedCollection: accessing +1.123.2 OrderedCollection: accessing ------------------------------------ at: anIndex @@ -6625,6 +7358,12 @@ Store anObject at the anIndex-th item of the receiver, answer anObject +first + Answer the first item of the receiver + +last + Answer the last item of the receiver + size Return the number of objects in the receiver @@ -6632,7 +7371,7 @@  File: gst-base.info, Node: OrderedCollection-adding, Next: OrderedCollection-removing, Prev: OrderedCollection-accessing, Up: OrderedCollection -1.120.3 OrderedCollection: adding +1.123.3 OrderedCollection: adding --------------------------------- add: anObject @@ -6654,3469 +7393,2807 @@ Add newObject in the receiver just before the i-th, answer it. Fail if i < 1 or i > self size + 1 -addAll: aCollection - Add every item of aCollection to the receiver, answer it - -addAll: newCollection after: oldObject - Add every item of newCollection to the receiver just after - oldObject, answer it. Fail if oldObject is not found - -addAll: newCollection afterIndex: i - Add every item of newCollection to the receiver just after the - i-th, answer it. Fail if i < 0 or i > self size - -addAll: newCollection before: oldObject - Add every item of newCollection to the receiver just before - oldObject, answer it. Fail if oldObject is not found - -addAll: newCollection beforeIndex: i - Add every item of newCollection to the receiver just before the - i-th, answer it. Fail if i < 1 or i > self size + 1 - -addAllFirst: aCollection - Add every item of newCollection to the receiver right at the start - of the receiver. Answer aCollection - -addAllLast: aCollection - Add every item of newCollection to the receiver right at the end - of the receiver. Answer aCollection - -addFirst: newObject - Add newObject to the receiver right at the start of the receiver. - Answer newObject - -addLast: newObject - Add newObject to the receiver right at the end of the receiver. - Answer newObject - - - -File: gst-base.info, Node: OrderedCollection-removing, Prev: OrderedCollection-adding, Up: OrderedCollection - -1.120.4 OrderedCollection: removing ------------------------------------ - -remove: anObject ifAbsent: aBlock - Remove anObject from the receiver. If it can't be found, answer the - result of evaluating aBlock - -removeAtIndex: anIndex - Remove the object at index anIndex from the receiver. Fail if the - index is out of bounds. - -removeFirst - Remove an object from the start of the receiver. Fail if the - receiver is empty - -removeLast - Remove an object from the end of the receiver. Fail if the receiver - is empty - - - -File: gst-base.info, Node: Package, Next: PackageLoader, Prev: OrderedCollection, Up: Base classes - -1.121 Package -============= - -Defined in namespace Smalltalk -Superclass: Kernel.PackageInfo -Category: Language-Packaging - I am not part of a standard Smalltalk system. I store internally - the information on a Smalltalk package, and can output my - description in XML. - -* Menu: - -* Package class-instance creation:: (class) -* Package-accessing:: (instance) - - -File: gst-base.info, Node: Package class-instance creation, Next: Package-accessing, Up: Package - -1.121.1 Package class: instance creation ----------------------------------------- - -parse: file - Answer a package from the XML description in file. - - - -File: gst-base.info, Node: Package-accessing, Prev: Package class-instance creation, Up: Package - -1.121.2 Package: accessing --------------------------- - -baseDirectories - Answer `baseDirectories'. - -baseDirectories: aCollection - Check if it's possible to resolve the names in the package - according to the base directories in baseDirectories, which depend - on where the packages.xml is found: the three possible places are - 1) the system kernel directory's parent directory, 2) the local - kernel directory's parent directory, 3) the local image directory - (in order of decreasing priority). - - For a packages.xml found in the system kernel directory's parent - directory, all three directories are searched. For a packages.xml - found in the local kernel directory's parent directory, only - directories 2 and 3 are searched. For a packages.xml directory in - the local image directory, instead, only directory 3 is searched. - -builtFiles - Answer a (modifiable) OrderedCollection of files that are part of - the package but are not distributed. - -callouts - Answer a (modifiable) Set of call-outs that are required to load - the package. Their presence is checked after the libraries and - modules are loaded so that you can do a kind of versioning. - -directory - Answer the base directory from which to load the package. - -features - Answer a (modifiable) Set of features provided by the package. - -fileIns - Answer a (modifiable) OrderedCollections of files that are to be - filed-in to load the package. This is usually a subset of `files' - and `builtFiles'. - -files - Answer a (modifiable) OrderedCollection of files that are part of - the package. - -fullPathOf: fileName - Try appending 'self directory' and fileName to each of the - directory in baseDirectories, and return the path to the first - tried filename that exists. Raise a PackageNotAvailable exception - if no directory is found that contains the file. - -isDisabled - Answer `false'. - -libraries - Answer a (modifiable) Set of shared library names that are - required to load the package. - -modules - Answer a (modifiable) Set of modules that are required to load the - package. - -namespace - Answer the namespace in which the package is loaded. - -namespace: aString - Set to aString the namespace in which the package is loaded. - -prerequisites - Answer a (modifiable) Set of prerequisites. - -primFileIn - Private - File in the given package without paying attention at - dependencies and C callout availability - -relativeDirectory - Answer the directory, relative to the packages file, from which to - load the package. - -relativeDirectory: dir - Set the directory, relative to the packages file, from which to - load the package, to dir. - -sunitScripts - Answer a (modifiable) OrderedCollection of SUnit scripts that - compose the package's test suite. - -test - Answer the test sub-package. - -test: aPackage - Set the test sub-package to be aPackage. - - - -File: gst-base.info, Node: PackageLoader, Next: Permission, Prev: Package, Up: Base classes - -1.122 PackageLoader -=================== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Packaging - I am not part of a standard Smalltalk system. I provide methods for - retrieving package information from an XML file and to load - packages into a Smalltalk image, correctly handling dependencies. - -* Menu: - -* PackageLoader class-accessing:: (class) -* PackageLoader class-loading:: (class) -* PackageLoader class-testing:: (class) - - -File: gst-base.info, Node: PackageLoader class-accessing, Next: PackageLoader class-loading, Up: PackageLoader - -1.122.1 PackageLoader class: accessing --------------------------------------- - -builtFilesFor: package - Answer a Set of Strings containing the filenames of the given - package's machine-generated files (relative to the directory - answered by #directoryFor:) - -calloutsFor: package - Answer a Set of Strings containing the filenames of the given - package's required callouts (relative to the directory answered by - #directoryFor:) - -directoryFor: package - Answer a complete path to the given package's files - -featuresFor: package - Answer a Set of Strings containing the features provided by the - given package. - -fileInsFor: package - Answer a Set of Strings containing the filenames of the given - package's file-ins (relative to the directory answered by - #directoryFor:) - -filesFor: package - Answer a Set of Strings containing the filenames of the given - package's files (relative to the directory answered by - #directoryFor:) - -flush - Set to reload the `packages.xml' file the next time it is needed. - -ignoreCallouts - Answer whether unavailable C callouts must generate errors or not. - -ignoreCallouts: aBoolean - Set whether unavailable C callouts must generate errors or not. - -librariesFor: package - Answer a Set of Strings containing the filenames of the given - package's libraries (relative to the directory answered by - #directoryFor:) - -modulesFor: package - Answer a Set of Strings containing the filenames of the given - package's modules (relative to the directory answered by - #directoryFor:) - -packageAt: package - Answer a Package object for the given package - -prerequisitesFor: package - Answer a Set of Strings containing the prerequisites for the given - package - -refresh - Reload the `packages.xml' file in the image and kernel directories. - The three possible places are 1) the kernel directory's parent - directory, 2) the `.st' subdirectory of the user's home directory, - 3) the local image directory (in order of decreasing priority). - - For a packages.xml found in the kernel directory's parent - directory, all three directories are searched. For a packages.xml - found in the `.st' subdirectory, only directories 2 and 3 are - searched. For a packages.xml directory in the local image - directory, finally, only directory 3 is searched. - -sunitScriptFor: package - Answer a Strings containing a SUnit script that describes the - package's test suite. - - - -File: gst-base.info, Node: PackageLoader class-loading, Next: PackageLoader class-testing, Prev: PackageLoader class-accessing, Up: PackageLoader - -1.122.2 PackageLoader class: loading ------------------------------------- - -fileInPackage: package - File in the given package into GNU Smalltalk. - -fileInPackages: packagesList - File in all the packages in packagesList into GNU Smalltalk. - - - -File: gst-base.info, Node: PackageLoader class-testing, Prev: PackageLoader class-loading, Up: PackageLoader - -1.122.3 PackageLoader class: testing ------------------------------------- - -canLoad: package - Answer whether all the needed pre-requisites for package are - available. - - - -File: gst-base.info, Node: Permission, Next: PluggableAdaptor, Prev: PackageLoader, Up: Base classes - -1.123 Permission -================ - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Security - I am the basic class that represents whether operations that could - harm the system's security are allowed or denied. - -* Menu: - -* Permission class-testing:: (class) -* Permission-accessing:: (instance) -* Permission-testing:: (instance) - - -File: gst-base.info, Node: Permission class-testing, Next: Permission-accessing, Up: Permission - -1.123.1 Permission class: testing ---------------------------------- - -allowing: aSymbol target: aTarget action: action - Not commented. - -allowing: aSymbol target: aTarget actions: actionsArray - Not commented. - -denying: aSymbol target: aTarget action: action - Not commented. - -denying: aSymbol target: aTarget actions: actionsArray - Not commented. - -granting: aSymbol target: aTarget action: action - Not commented. - -granting: aSymbol target: aTarget actions: actionsArray - Not commented. - -name: aSymbol target: aTarget action: action - Not commented. - -name: aSymbol target: aTarget actions: actionsArray - Not commented. - - - -File: gst-base.info, Node: Permission-accessing, Next: Permission-testing, Prev: Permission class-testing, Up: Permission - -1.123.2 Permission: accessing ------------------------------ - -action: anObject - Not commented. - -actions - Answer `actions'. - -actions: anObject - Not commented. - -allow - Not commented. - -allowing - Not commented. - -deny - Not commented. - -denying - Not commented. - -isAllowing - Answer `positive'. - -name - Answer `name'. - -name: anObject - Not commented. - -target - Answer `target'. - -target: anObject - Not commented. - - - -File: gst-base.info, Node: Permission-testing, Prev: Permission-accessing, Up: Permission - -1.123.3 Permission: testing ---------------------------- - -check: aPermission for: anObject - Not commented. - -implies: aPermission - Not commented. - - - -File: gst-base.info, Node: PluggableAdaptor, Next: PluggableProxy, Prev: Permission, Up: Base classes - -1.124 PluggableAdaptor -====================== - -Defined in namespace Smalltalk -Superclass: ValueAdaptor -Category: Language-Data types - I mediate between complex get/set behavior and the #value/#value: - protocol used by ValueAdaptors. The get/set behavior can be - implemented by two blocks, or can be delegated to another object - with messages such as #someProperty to get and #someProperty: to - set. - -* Menu: - -* PluggableAdaptor class-creating instances:: (class) -* PluggableAdaptor-accessing:: (instance) - - -File: gst-base.info, Node: PluggableAdaptor class-creating instances, Next: PluggableAdaptor-accessing, Up: PluggableAdaptor - -1.124.1 PluggableAdaptor class: creating instances --------------------------------------------------- - -getBlock: getBlock putBlock: putBlock - Answer a PluggableAdaptor using the given blocks to implement - #value and #value: - -on: anObject aspect: aSymbol - Answer a PluggableAdaptor using anObject's aSymbol message to - implement #value, and anObject's aSymbol: message (aSymbol - followed by a colon) to implement #value: - -on: anObject getSelector: getSelector putSelector: putSelector - Answer a PluggableAdaptor using anObject's getSelector message to - implement #value, and anObject's putSelector message to implement - #value: - - message - -on: anObject index: anIndex - Answer a PluggableAdaptor using anObject's #at: and #at:put: - message to implement #value and #value:; the first parameter of - #at: and #at:put: is anIndex - -on: aDictionary key: aKey - Same as #on:index:. Provided for clarity and completeness. - - - -File: gst-base.info, Node: PluggableAdaptor-accessing, Prev: PluggableAdaptor class-creating instances, Up: PluggableAdaptor - -1.124.2 PluggableAdaptor: accessing ------------------------------------ - -value - Get the value of the receiver. - -value: anObject - Set the value of the receiver. - - - -File: gst-base.info, Node: PluggableProxy, Next: Point, Prev: PluggableAdaptor, Up: Base classes - -1.125 PluggableProxy -==================== - -Defined in namespace Smalltalk -Superclass: AlternativeObjectProxy -Category: Streams-Files - I am a proxy that stores a different object and, upon load, sends - #reconstructOriginalObject to that object (which can be a - DirectedMessage, in which case the message is sent). The object - to be stored is retrieved by sending #binaryRepresentationObject to - the object. - -* Menu: - -* PluggableProxy class-accessing:: (class) -* PluggableProxy-saving and restoring:: (instance) - - -File: gst-base.info, Node: PluggableProxy class-accessing, Next: PluggableProxy-saving and restoring, Up: PluggableProxy - -1.125.1 PluggableProxy class: accessing ---------------------------------------- - -on: anObject - Answer a proxy to be used to save anObject. The proxy stores a - different object obtained by sending to anObject the - #binaryRepresentationObject message (embedded between #preStore - and #postStore as usual). - - - -File: gst-base.info, Node: PluggableProxy-saving and restoring, Prev: PluggableProxy class-accessing, Up: PluggableProxy - -1.125.2 PluggableProxy: saving and restoring --------------------------------------------- - -object - Reconstruct the object stored in the proxy and answer it; the - binaryRepresentationObject is sent the #reconstructOriginalObject - message, and the resulting object is sent the #postLoad message. - - - -File: gst-base.info, Node: Point, Next: PositionableStream, Prev: PluggableProxy, Up: Base classes - -1.126 Point -=========== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Data types - Beginning of a Point class for simple display manipulation. Has - not been exhaustively tested but appears to work for the basic - primitives and for the needs of the Rectangle class. - -* Menu: - -* Point class-instance creation:: (class) -* Point-accessing:: (instance) -* Point-arithmetic:: (instance) -* Point-comparing:: (instance) -* Point-converting:: (instance) -* Point-point functions:: (instance) -* Point-printing:: (instance) -* Point-storing:: (instance) -* Point-truncation and round off:: (instance) - - -File: gst-base.info, Node: Point class-instance creation, Next: Point-accessing, Up: Point - -1.126.1 Point class: instance creation --------------------------------------- - -new - Create a new point with both coordinates set to 0 - -x: xInteger y: yInteger - Create a new point with the given coordinates +addAll: aCollection + Add every item of aCollection to the receiver, answer it +addAll: newCollection after: oldObject + Add every item of newCollection to the receiver just after + oldObject, answer it. Fail if oldObject is not found - -File: gst-base.info, Node: Point-accessing, Next: Point-arithmetic, Prev: Point class-instance creation, Up: Point +addAll: newCollection afterIndex: i + Add every item of newCollection to the receiver just after the + i-th, answer it. Fail if i < 0 or i > self size -1.126.2 Point: accessing ------------------------- +addAll: newCollection before: oldObject + Add every item of newCollection to the receiver just before + oldObject, answer it. Fail if oldObject is not found -x - Answer the x coordinate +addAll: newCollection beforeIndex: i + Add every item of newCollection to the receiver just before the + i-th, answer it. Fail if i < 1 or i > self size + 1 -x: aNumber - Set the x coordinate to aNumber +addAllFirst: aCollection + Add every item of newCollection to the receiver right at the start + of the receiver. Answer aCollection -x: anXNumber y: aYNumber - Set the x and y coordinate to anXNumber and aYNumber, respectively +addAllLast: aCollection + Add every item of newCollection to the receiver right at the end + of the receiver. Answer aCollection -y - Answer the y coordinate +addFirst: newObject + Add newObject to the receiver right at the start of the receiver. + Answer newObject -y: aNumber - Set the y coordinate to aNumber +addLast: newObject + Add newObject to the receiver right at the end of the receiver. + Answer newObject  -File: gst-base.info, Node: Point-arithmetic, Next: Point-comparing, Prev: Point-accessing, Up: Point +File: gst-base.info, Node: OrderedCollection-removing, Prev: OrderedCollection-adding, Up: OrderedCollection -1.126.3 Point: arithmetic -------------------------- +1.123.4 OrderedCollection: removing +----------------------------------- -* scale - Multiply the receiver by scale, which can be a Number or a Point +remove: anObject ifAbsent: aBlock + Remove anObject from the receiver. If it can't be found, answer the + result of evaluating aBlock -+ delta - Sum the receiver and delta, which can be a Number or a Point +removeAtIndex: anIndex + Remove the object at index anIndex from the receiver. Fail if the + index is out of bounds. -- delta - Subtract delta, which can be a Number or a Point, from the receiver +removeFirst + Remove an object from the start of the receiver. Fail if the + receiver is empty -/ scale - Divide the receiver by scale, which can be a Number or a Point, - with no loss of precision +removeLast + Remove an object from the end of the receiver. Fail if the receiver + is empty -// scale - Divide the receiver by scale, which can be a Number or a Point, - with truncation towards -infinity -abs - Answer a new point whose coordinates are the absolute values of the - receiver's + +File: gst-base.info, Node: Package, Next: PackageLoader, Prev: OrderedCollection, Up: Base classes +1.124 Package +============= - -File: gst-base.info, Node: Point-comparing, Next: Point-converting, Prev: Point-arithmetic, Up: Point +Defined in namespace Smalltalk +Superclass: Kernel.PackageInfo +Category: Language-Packaging + I am not part of a standard Smalltalk system. I store internally + the information on a Smalltalk package, and can output my + description in XML. -1.126.4 Point: comparing ------------------------- +* Menu: -< aPoint - Answer whether the receiver is higher and to the left of aPoint +* Package class-instance creation:: (class) +* Package-accessing:: (instance) -<= aPoint - Answer whether aPoint is equal to the receiver, or the receiver is - higher and to the left of aPoint + +File: gst-base.info, Node: Package class-instance creation, Next: Package-accessing, Up: Package -= aPoint - Answer whether the receiver is equal to aPoint +1.124.1 Package class: instance creation +---------------------------------------- -> aPoint - Answer whether the receiver is lower and to the right of aPoint +parse: file + Answer a package from the XML description in file. ->= aPoint - Answer whether aPoint is equal to the receiver, or the receiver is - lower and to the right of aPoint -max: aPoint - Answer self if it is lower and to the right of aPoint, aPoint - otherwise + +File: gst-base.info, Node: Package-accessing, Prev: Package class-instance creation, Up: Package -min: aPoint - Answer self if it is higher and to the left of aPoint, aPoint - otherwise +1.124.2 Package: accessing +-------------------------- +baseDirectories + Answer `baseDirectories'. - -File: gst-base.info, Node: Point-converting, Next: Point-point functions, Prev: Point-comparing, Up: Point +baseDirectories: aCollection + Check if it's possible to resolve the names in the package + according to the base directories in baseDirectories, which depend + on where the packages.xml is found: the three possible places are + 1) the system kernel directory's parent directory, 2) the local + kernel directory's parent directory, 3) the local image directory + (in order of decreasing priority). -1.126.5 Point: converting -------------------------- + For a packages.xml found in the system kernel directory's parent + directory, all three directories are searched. For a packages.xml + found in the local kernel directory's parent directory, only + directories 2 and 3 are searched. For a packages.xml directory in + the local image directory, instead, only directory 3 is searched. -asPoint - Answer the receiver. +builtFiles + Answer a (modifiable) OrderedCollection of files that are part of + the package but are not distributed. -asRectangle - Answer an empty rectangle whose origin is self +callouts + Answer a (modifiable) Set of call-outs that are required to load + the package. Their presence is checked after the libraries and + modules are loaded so that you can do a kind of versioning. -corner: aPoint - Answer a Rectangle whose origin is the receiver and whose corner - is aPoint +directory + Answer the base directory from which to load the package. -extent: aPoint - Answer a Rectangle whose origin is the receiver and whose extent - is aPoint +features + Answer a (modifiable) Set of features provided by the package. -hash - Answer an hash value for the receiver +fileIns + Answer a (modifiable) OrderedCollections of files that are to be + filed-in to load the package. This is usually a subset of `files' + and `builtFiles'. +files + Answer a (modifiable) OrderedCollection of files that are part of + the package. - -File: gst-base.info, Node: Point-point functions, Next: Point-printing, Prev: Point-converting, Up: Point +fullPathOf: fileName + Try appending 'self directory' and fileName to each of the + directory in baseDirectories, and return the path to the first + tried filename that exists. Raise a PackageNotAvailable exception + if no directory is found that contains the file. -1.126.6 Point: point functions ------------------------------- +isDisabled + Answer `false'. -arcTan - Answer the angle (measured counterclockwise) between the receiver - and a ray starting in (0, 0) and moving towards (1, 0) - i.e. 3 - o'clock +libraries + Answer a (modifiable) Set of shared library names that are + required to load the package. -dist: aPoint - Answer the distance between the receiver and aPoint +modules + Answer a (modifiable) Set of modules that are required to load the + package. -dotProduct: aPoint - Answer the dot product between the receiver and aPoint +namespace + Answer the namespace in which the package is loaded. -grid: aPoint - Answer a new point whose coordinates are rounded towards the - nearest multiple of aPoint +namespace: aString + Set to aString the namespace in which the package is loaded. -normal - Rotate the Point 90degrees clockwise and get the unit vector +prerequisites + Answer a (modifiable) Set of prerequisites. -transpose - Answer a new point whose coordinates are the receiver's coordinates - exchanged (x becomes y, y becomes x) +primFileIn + Private - File in the given package without paying attention at + dependencies and C callout availability -truncatedGrid: aPoint - Answer a new point whose coordinates are rounded towards -infinity, - to a multiple of grid (which must be a Point) +relativeDirectory + Answer the directory, relative to the packages file, from which to + load the package. +relativeDirectory: dir + Set the directory, relative to the packages file, from which to + load the package, to dir. - -File: gst-base.info, Node: Point-printing, Next: Point-storing, Prev: Point-point functions, Up: Point +startScript + Answer the start script for the package. -1.126.7 Point: printing ------------------------ +startScript: aString + Set the start script for the package to aString. -printOn: aStream - Print a representation for the receiver on aStream +stopScript + Answer the start script for the package. +stopScript: aString + Set the stop script for the package to aString. - -File: gst-base.info, Node: Point-storing, Next: Point-truncation and round off, Prev: Point-printing, Up: Point +sunitScripts + Answer a (modifiable) OrderedCollection of SUnit scripts that + compose the package's test suite. -1.126.8 Point: storing ----------------------- +test + Answer the test sub-package. -storeOn: aStream - Print Smalltalk code compiling to the receiver on aStream +test: aPackage + Set the test sub-package to be aPackage.  -File: gst-base.info, Node: Point-truncation and round off, Prev: Point-storing, Up: Point +File: gst-base.info, Node: PackageLoader, Next: Permission, Prev: Package, Up: Base classes -1.126.9 Point: truncation and round off ---------------------------------------- +1.125 PackageLoader +=================== -rounded - Answer a new point whose coordinates are rounded to the nearest - integer +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Packaging + I am not part of a standard Smalltalk system. I provide methods for + retrieving package information from an XML file and to load + packages into a Smalltalk image, correctly handling dependencies. -truncateTo: grid - Answer a new point whose coordinates are rounded towards -infinity, - to a multiple of grid (which must be a Number) +* Menu: +* PackageLoader class-accessing:: (class) +* PackageLoader class-loading:: (class) +* PackageLoader class-testing:: (class)  -File: gst-base.info, Node: PositionableStream, Next: Process, Prev: Point, Up: Base classes +File: gst-base.info, Node: PackageLoader class-accessing, Next: PackageLoader class-loading, Up: PackageLoader + +1.125.1 PackageLoader class: accessing +-------------------------------------- + +builtFilesFor: package + Answer a Set of Strings containing the filenames of the given + package's machine-generated files (relative to the directory + answered by #directoryFor:) -1.127 PositionableStream -======================== +calloutsFor: package + Answer a Set of Strings containing the filenames of the given + package's required callouts (relative to the directory answered by + #directoryFor:) -Defined in namespace Smalltalk -Superclass: Stream -Category: Streams-Collections - My instances represent streams where explicit positioning is - permitted. Thus, my streams act in a manner to normal disk files: - you can read or write sequentially, but also position the file to - a particular place whenever you choose. Generally, you'll want to - use ReadStream, WriteStream or ReadWriteStream instead of me to - create and use streams. +directoryFor: package + Answer a Directory object to the given package's files -* Menu: +featuresFor: package + Answer a Set of Strings containing the features provided by the + given package. -* PositionableStream class-instance creation:: (class) -* PositionableStream-accessing-reading:: (instance) -* PositionableStream-class type methods:: (instance) -* PositionableStream-compiling:: (instance) -* PositionableStream-positioning:: (instance) -* PositionableStream-testing:: (instance) -* PositionableStream-truncating:: (instance) +fileInsFor: package + Answer a Set of Strings containing the filenames of the given + package's file-ins (relative to the directory answered by + #directoryFor:) - -File: gst-base.info, Node: PositionableStream class-instance creation, Next: PositionableStream-accessing-reading, Up: PositionableStream +filesFor: package + Answer a Set of Strings containing the filenames of the given + package's files (relative to the directory answered by + #directoryFor:) -1.127.1 PositionableStream class: instance creation ---------------------------------------------------- +flush + Set to reload the `packages.xml' file the next time it is needed. -on: aCollection - Answer an instance of the receiver streaming on the whole contents - of aCollection +ignoreCallouts + Answer whether unavailable C callouts must generate errors or not. -on: aCollection from: firstIndex to: lastIndex - Answer an instance of the receiver streaming from the - firstIndex-th item of aCollection to the lastIndex-th +ignoreCallouts: aBoolean + Set whether unavailable C callouts must generate errors or not. +librariesFor: package + Answer a Set of Strings containing the filenames of the given + package's libraries (relative to the directory answered by + #directoryFor:) - -File: gst-base.info, Node: PositionableStream-accessing-reading, Next: PositionableStream-class type methods, Prev: PositionableStream class-instance creation, Up: PositionableStream +modulesFor: package + Answer a Set of Strings containing the filenames of the given + package's modules (relative to the directory answered by + #directoryFor:) -1.127.2 PositionableStream: accessing-reading ---------------------------------------------- +packageAt: package + Answer a Package object for the given package -close - Disassociate a stream from its backing store. +prerequisitesFor: package + Answer a Set of Strings containing the prerequisites for the given + package -contents - Returns a collection of the same type that the stream accesses, up - to and including the final element. +refresh + Reload the `packages.xml' file in the image and kernel directories. + The three possible places are 1) the kernel directory's parent + directory, 2) the `.st' subdirectory of the user's home directory, + 3) the local image directory (in order of decreasing priority). -copyFrom: start to: end - Answer the data on which the receiver is streaming, from the - start-th item to the end-th. Note that this method is 0-based, - unlike the one in Collection, because a Stream's #position method - returns 0-based values. + For a packages.xml found in the kernel directory's parent + directory, all three directories are searched. For a packages.xml + found in the `.st' subdirectory, only directories 2 and 3 are + searched. For a packages.xml directory in the local image + directory, finally, only directory 3 is searched. -next - Answer the next item of the receiver. Returns nil when at end of - stream. +sunitScriptFor: package + Answer a Strings containing a SUnit script that describes the + package's test suite. -peek - Returns the next element of the stream without moving the pointer. - Returns nil when at end of stream. -peekFor: anObject - Returns true and gobbles the next element from the stream of it is - equal to anObject, returns false and doesn't gobble the next - element if the next element is not equal to anObject. + +File: gst-base.info, Node: PackageLoader class-loading, Next: PackageLoader class-testing, Prev: PackageLoader class-accessing, Up: PackageLoader -readStream - Answer a ReadStream on the same contents as the receiver +1.125.2 PackageLoader class: loading +------------------------------------ -reverseContents - Returns a collection of the same type that the stream accesses, up - to and including the final element, but in reverse order. +fileInPackage: package + File in the given package into GNU Smalltalk. +fileInPackages: packagesList + File in all the packages in packagesList into GNU Smalltalk. - -File: gst-base.info, Node: PositionableStream-class type methods, Next: PositionableStream-compiling, Prev: PositionableStream-accessing-reading, Up: PositionableStream -1.127.3 PositionableStream: class type methods ----------------------------------------------- + +File: gst-base.info, Node: PackageLoader class-testing, Prev: PackageLoader class-loading, Up: PackageLoader -isExternalStream - We stream on a collection residing in the image, so answer false +1.125.3 PackageLoader class: testing +------------------------------------ -species - Return the type of the collections returned by #upTo: etc., which - are the same kind as those returned by the collection with methods - such as #select:. +canLoad: package + Answer whether all the needed pre-requisites for package are + available.  -File: gst-base.info, Node: PositionableStream-compiling, Next: PositionableStream-positioning, Prev: PositionableStream-class type methods, Up: PositionableStream +File: gst-base.info, Node: Permission, Next: PluggableAdaptor, Prev: PackageLoader, Up: Base classes -1.127.4 PositionableStream: compiling -------------------------------------- +1.126 Permission +================ -name - Answer a string that represents what the receiver is streaming on +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Security + I am the basic class that represents whether operations that could + harm the system's security are allowed or denied. -segmentFrom: startPos to: endPos - Answer an object that, when sent #asString, will yield the result - of sending `copyFrom: startPos to: endPos' to the receiver +* Menu: +* Permission class-testing:: (class) +* Permission-accessing:: (instance) +* Permission-testing:: (instance)  -File: gst-base.info, Node: PositionableStream-positioning, Next: PositionableStream-testing, Prev: PositionableStream-compiling, Up: PositionableStream - -1.127.5 PositionableStream: positioning ---------------------------------------- +File: gst-base.info, Node: Permission class-testing, Next: Permission-accessing, Up: Permission -basicPosition: anInteger - Move the stream pointer to the anInteger-th object +1.126.1 Permission class: testing +--------------------------------- -isPositionable - Answer true if the stream supports moving backwards with #skip:. +allowing: aSymbol target: aTarget action: action + Not commented. -position - Answer the current value of the stream pointer +allowing: aSymbol target: aTarget actions: actionsArray + Not commented. -position: anInteger - Move the stream pointer to the anInteger-th object +denying: aSymbol target: aTarget action: action + Not commented. -reset - Move the stream back to its first element. For write-only streams, - the stream is truncated there. +denying: aSymbol target: aTarget actions: actionsArray + Not commented. -setToEnd - Move the current position to the end of the stream. +granting: aSymbol target: aTarget action: action + Not commented. -size - Answer the size of data on which we are streaming. +granting: aSymbol target: aTarget actions: actionsArray + Not commented. -skip: anInteger - Move the current position by anInteger places, either forwards or - backwards. +name: aSymbol target: aTarget action: action + Not commented. -skipSeparators - Advance the receiver until we find a character that is not a - separator. Answer false if we reach the end of the stream, else - answer true; in this case, sending #next will return the first - non-separator character (possibly the same to which the stream - pointed before #skipSeparators was sent). +name: aSymbol target: aTarget actions: actionsArray + Not commented.  -File: gst-base.info, Node: PositionableStream-testing, Next: PositionableStream-truncating, Prev: PositionableStream-positioning, Up: PositionableStream +File: gst-base.info, Node: Permission-accessing, Next: Permission-testing, Prev: Permission class-testing, Up: Permission -1.127.6 PositionableStream: testing ------------------------------------ +1.126.2 Permission: accessing +----------------------------- -atEnd - Answer whether the objects in the stream have reached an end +action: anObject + Not commented. -basicAtEnd - Answer whether the objects in the stream have reached an end. - This method must NOT be overridden. +actions + Answer `actions'. -isEmpty - Answer whether the stream has no objects +actions: anObject + Not commented. +allow + Not commented. - -File: gst-base.info, Node: PositionableStream-truncating, Prev: PositionableStream-testing, Up: PositionableStream +allowing + Not commented. -1.127.7 PositionableStream: truncating --------------------------------------- +deny + Not commented. -truncate - Truncate the receiver to the current position - only valid for - writing streams +denying + Not commented. +isAllowing + Answer `positive'. - -File: gst-base.info, Node: Process, Next: ProcessorScheduler, Prev: PositionableStream, Up: Base classes +name + Answer `name'. -1.128 Process -============= +name: anObject + Not commented. -Defined in namespace Smalltalk -Superclass: Link -Category: Language-Processes - I represent a unit of computation. My instances are independantly - executable blocks that have a priority associated with them, and - they can suspend themselves and resume themselves however they - wish. +target + Answer `target'. -* Menu: +target: anObject + Not commented. -* Process-accessing:: (instance) -* Process-basic:: (instance) -* Process-builtins:: (instance) -* Process-printing:: (instance)  -File: gst-base.info, Node: Process-accessing, Next: Process-basic, Up: Process - -1.128.1 Process: accessing --------------------------- +File: gst-base.info, Node: Permission-testing, Prev: Permission-accessing, Up: Permission -externalInterruptsEnabled - Answer whether the receiver is executed with interrupts enabled +1.126.3 Permission: testing +--------------------------- -name - Answer the user-friendly name of the process. +check: aPermission for: anObject + Not commented. -name: aString - Give the name aString to the process +implies: aPermission + Not commented. -priority - Answer the receiver's priority -priority: anInteger - Change the receiver's priority to anInteger + +File: gst-base.info, Node: PluggableAdaptor, Next: PluggableProxy, Prev: Permission, Up: Base classes -queueInterrupt: aBlock - Force the receiver to be interrupted and to evaluate aBlock as - soon as it becomes the active process (this could mean NOW if the - receiver is active). If the process is temporarily suspended or - waiting on a semaphore, it is temporarily woken up so that the - interrupt is processed as soon as the process priority allows to - do. Answer the receiver. +1.127 PluggableAdaptor +====================== -suspendedContext - Answer the context that the process was executing at the time it - was suspended. +Defined in namespace Smalltalk +Superclass: ValueAdaptor +Category: Language-Data types + I mediate between complex get/set behavior and the #value/#value: + protocol used by ValueAdaptors. The get/set behavior can be + implemented by two blocks, or can be delegated to another object + with messages such as #someProperty to get and #someProperty: to + set. -valueWithoutInterrupts: aBlock - Evaluate aBlock and delay all interrupts that are requested during - its execution to after aBlock returns. +* Menu: +* PluggableAdaptor class-creating instances:: (class) +* PluggableAdaptor-accessing:: (instance)  -File: gst-base.info, Node: Process-basic, Next: Process-builtins, Prev: Process-accessing, Up: Process +File: gst-base.info, Node: PluggableAdaptor class-creating instances, Next: PluggableAdaptor-accessing, Up: PluggableAdaptor -1.128.2 Process: basic ----------------------- +1.127.1 PluggableAdaptor class: creating instances +-------------------------------------------------- -context - Return the execution context of the receiver. +getBlock: getBlock putBlock: putBlock + Answer a PluggableAdaptor using the given blocks to implement + #value and #value: -debugger - Return the object in charge of debugging the receiver. This - always returns nil unless the DebugTools package is loaded. +on: anObject aspect: aSymbol + Answer a PluggableAdaptor using anObject's aSymbol message to + implement #value, and anObject's aSymbol: message (aSymbol + followed by a colon) to implement #value: -finalize - Terminate processes that are GCed while waiting on a dead - semaphore. +on: anObject getSelector: getSelector putSelector: putSelector + Answer a PluggableAdaptor using anObject's getSelector message to + implement #value, and anObject's putSelector message to implement + #value: -lowerPriority - Lower a bit the priority of the receiver. A #lowerPriority will - cancel a previous #raisePriority, and vice versa. + message -makeUntrusted: aBoolean - Set whether the receiver is trusted or not. +on: anObject index: anIndex + Answer a PluggableAdaptor using anObject's #at: and #at:put: + message to implement #value and #value:; the first parameter of + #at: and #at:put: is anIndex -primTerminate - Terminate the receiver - This is nothing more than prohibiting to - resume the process, then suspending it. +on: aDictionary key: aKey + Same as #on:index:. Provided for clarity and completeness. -raisePriority - Raise a bit the priority of the receiver. A #lowerPriority will - cancel a previous #raisePriority, and vice versa. -singleStep - Execute a limited amount of code (usually a bytecode, or up to the - next backward jump, or up to the next message send) of the - receiver, which must in a ready-to-run state (neither executing - nor terminating nor suspended), then restart running the current - process. The current process should have higher priority than the - receiver. For better performance, use the underlying primitive, - Process>>#singleStepWaitingOn:. + +File: gst-base.info, Node: PluggableAdaptor-accessing, Prev: PluggableAdaptor class-creating instances, Up: PluggableAdaptor -terminate - Terminate the receiver after having evaluated all the #ensure: and - #ifCurtailed: blocks that are active in it. This is done by - signalling a ProcessBeingTerminated notification. +1.127.2 PluggableAdaptor: accessing +----------------------------------- -terminateOnQuit - Mark the receiver so that it is terminated when ObjectMemory - class>>#quit: is sent. +value + Get the value of the receiver. + +value: anObject + Set the value of the receiver.  -File: gst-base.info, Node: Process-builtins, Next: Process-printing, Prev: Process-basic, Up: Process +File: gst-base.info, Node: PluggableProxy, Next: Point, Prev: PluggableAdaptor, Up: Base classes -1.128.3 Process: builtins -------------------------- +1.128 PluggableProxy +==================== -resume - Resume the receiver's execution +Defined in namespace Smalltalk +Superclass: AlternativeObjectProxy +Category: Streams-Files + I am a proxy that stores a different object and, upon load, sends + #reconstructOriginalObject to that object (which can be a + DirectedMessage, in which case the message is sent). The object + to be stored is retrieved by sending #binaryRepresentationObject to + the object. -singleStepWaitingOn: aSemaphore - Execute a limited amount of code (usually a bytecode, or up to the - next backward jump, or up to the next message send) of the - receiver, which must in a ready-to-run state (neither executing - nor terminating nor suspended), then restart running the current - process. aSemaphore is used as a means to synchronize the - execution of the current process and the receiver and should have - no signals on it. The current process should have higher priority - than the receiver. +* Menu: -suspend - Do nothing if we're already suspended. Note that the blue book made - suspend a primitive - but the real primitive is yielding control to - another process. Suspending is nothing more than taking ourselves - out of every scheduling list and THEN yielding control to another - process +* PluggableProxy class-accessing:: (class) +* PluggableProxy-saving and restoring:: (instance) -yield - Yield control from the receiver to other processes + +File: gst-base.info, Node: PluggableProxy class-accessing, Next: PluggableProxy-saving and restoring, Up: PluggableProxy + +1.128.1 PluggableProxy class: accessing +--------------------------------------- + +on: anObject + Answer a proxy to be used to save anObject. The proxy stores a + different object obtained by sending to anObject the + #binaryRepresentationObject message (embedded between #preStore + and #postStore as usual).  -File: gst-base.info, Node: Process-printing, Prev: Process-builtins, Up: Process +File: gst-base.info, Node: PluggableProxy-saving and restoring, Prev: PluggableProxy class-accessing, Up: PluggableProxy -1.128.4 Process: printing -------------------------- +1.128.2 PluggableProxy: saving and restoring +-------------------------------------------- -printOn: aStream - Print a representation of the receiver on aStream +object + Reconstruct the object stored in the proxy and answer it; the + binaryRepresentationObject is sent the #reconstructOriginalObject + message, and the resulting object is sent the #postLoad message.  -File: gst-base.info, Node: ProcessorScheduler, Next: Promise, Prev: Process, Up: Base classes +File: gst-base.info, Node: Point, Next: PositionableStream, Prev: PluggableProxy, Up: Base classes -1.129 ProcessorScheduler -======================== +1.129 Point +=========== Defined in namespace Smalltalk Superclass: Object -Category: Language-Processes - I provide methods that control the execution of processes. +Category: Language-Data types + Beginning of a Point class for simple display manipulation. Has + not been exhaustively tested but appears to work for the basic + primitives and for the needs of the Rectangle class. * Menu: -* ProcessorScheduler class-instance creation:: (class) -* ProcessorScheduler-basic:: (instance) -* ProcessorScheduler-built ins:: (instance) -* ProcessorScheduler-idle tasks:: (instance) -* ProcessorScheduler-printing:: (instance) -* ProcessorScheduler-priorities:: (instance) -* ProcessorScheduler-storing:: (instance) -* ProcessorScheduler-timed invocation:: (instance) +* Point class-instance creation:: (class) +* Point-accessing:: (instance) +* Point-arithmetic:: (instance) +* Point-comparing:: (instance) +* Point-converting:: (instance) +* Point-point functions:: (instance) +* Point-printing:: (instance) +* Point-storing:: (instance) +* Point-truncation and round off:: (instance)  -File: gst-base.info, Node: ProcessorScheduler class-instance creation, Next: ProcessorScheduler-basic, Up: ProcessorScheduler +File: gst-base.info, Node: Point class-instance creation, Next: Point-accessing, Up: Point -1.129.1 ProcessorScheduler class: instance creation ---------------------------------------------------- +1.129.1 Point class: instance creation +-------------------------------------- new - Error--new instances of ProcessorScheduler should not be created. + Create a new point with both coordinates set to 0 + +x: xInteger y: yInteger + Create a new point with the given coordinates  -File: gst-base.info, Node: ProcessorScheduler-basic, Next: ProcessorScheduler-built ins, Prev: ProcessorScheduler class-instance creation, Up: ProcessorScheduler +File: gst-base.info, Node: Point-accessing, Next: Point-arithmetic, Prev: Point class-instance creation, Up: Point -1.129.2 ProcessorScheduler: basic ---------------------------------- +1.129.2 Point: accessing +------------------------ -activeDebugger - Answer the active process' debugger +x + Answer the x coordinate -activePriority - Answer the active process' priority +x: aNumber + Set the x coordinate to aNumber -activeProcess - Answer the active process +x: anXNumber y: aYNumber + Set the x and y coordinate to anXNumber and aYNumber, respectively -processesAt: aPriority - Answer a linked list of processes at the given priority +y + Answer the y coordinate -terminateActive - Terminate the active process +y: aNumber + Set the y coordinate to aNumber -timeSlice - Answer the timeslice that is assigned to each Process before it is - automatically preempted by the system (in milliseconds). An - answer of zero means that preemptive multitasking is disabled. - Note that the system by default is compiled without preemptive - multitasking, and that even if it is enabled it will work only - under BSD derivatives (or, in general, systems that support - ITIMER_VIRTUAL). -timeSlice: milliSeconds - Set the timeslice that is assigned to each Process before it is - automatically preempted by the system. Setting this to zero - disables preemptive multitasking. Note that the system by default - is compiled with preemptive multitasking disabled, and that even - if it is enabled it will surely work only under BSD derivatives - (or, in general, systems that support ITIMER_VIRTUAL). + +File: gst-base.info, Node: Point-arithmetic, Next: Point-comparing, Prev: Point-accessing, Up: Point -yield - Let the active process yield control to other processes +1.129.3 Point: arithmetic +------------------------- + +* scale + Multiply the receiver by scale, which can be a Number or a Point ++ delta + Sum the receiver and delta, which can be a Number or a Point - -File: gst-base.info, Node: ProcessorScheduler-built ins, Next: ProcessorScheduler-idle tasks, Prev: ProcessorScheduler-basic, Up: ProcessorScheduler +- delta + Subtract delta, which can be a Number or a Point, from the receiver -1.129.3 ProcessorScheduler: built ins -------------------------------------- +/ scale + Divide the receiver by scale, which can be a Number or a Point, + with no loss of precision - twice +// scale + Divide the receiver by scale, which can be a Number or a Point, + with truncation towards -infinity -disableInterrupts - Disable interrupts caused by external events while the current - process is executing. Note that interrupts are disabled on a - per-process basis, and that calling #disableInterrupts twice - requires calling #enableInterrupts twice as well to re-enable - interrupts. +abs + Answer a new point whose coordinates are the absolute values of the + receiver's -enableInterrupts - Re-enable interrupts caused by external events while the current - process is executing. By default, interrupts are enabled. + +File: gst-base.info, Node: Point-comparing, Next: Point-converting, Prev: Point-arithmetic, Up: Point + +1.129.4 Point: comparing +------------------------ + +< aPoint + Answer whether the receiver is higher and to the left of aPoint - -File: gst-base.info, Node: ProcessorScheduler-idle tasks, Next: ProcessorScheduler-printing, Prev: ProcessorScheduler-built ins, Up: ProcessorScheduler +<= aPoint + Answer whether aPoint is equal to the receiver, or the receiver is + higher and to the left of aPoint -1.129.4 ProcessorScheduler: idle tasks --------------------------------------- += aPoint + Answer whether the receiver is equal to aPoint -idle - Private - Call the next idle task +> aPoint + Answer whether the receiver is lower and to the right of aPoint -idleAdd: aBlock - Register aBlock to be executed when things are idle +>= aPoint + Answer whether aPoint is equal to the receiver, or the receiver is + lower and to the right of aPoint -initialize - Private - Start the finalization process. +max: aPoint + Answer self if it is lower and to the right of aPoint, aPoint + otherwise -update: aSymbol - If we left some work behind when the image was saved, do it now. +min: aPoint + Answer self if it is higher and to the left of aPoint, aPoint + otherwise  -File: gst-base.info, Node: ProcessorScheduler-printing, Next: ProcessorScheduler-priorities, Prev: ProcessorScheduler-idle tasks, Up: ProcessorScheduler +File: gst-base.info, Node: Point-converting, Next: Point-point functions, Prev: Point-comparing, Up: Point -1.129.5 ProcessorScheduler: printing ------------------------------------- +1.129.5 Point: converting +------------------------- -printOn: aStream - Store onto aStream a printed representation of the receiver +asPoint + Answer the receiver. +asRectangle + Answer an empty rectangle whose origin is self - -File: gst-base.info, Node: ProcessorScheduler-priorities, Next: ProcessorScheduler-storing, Prev: ProcessorScheduler-printing, Up: ProcessorScheduler +corner: aPoint + Answer a Rectangle whose origin is the receiver and whose corner + is aPoint -1.129.6 ProcessorScheduler: priorities --------------------------------------- +extent: aPoint + Answer a Rectangle whose origin is the receiver and whose extent + is aPoint -highIOPriority - Answer the priority for system high-priority I/O processes, such - as a process handling input from a network. +hash + Answer an hash value for the receiver -highestPriority - Answer the highest valid priority -lowIOPriority - Answer the priority for system low-priority I/O processes. - Examples are the process handling input from the user (keyboard, - pointing device, etc.) and the process distributing input from a - network. + +File: gst-base.info, Node: Point-point functions, Next: Point-printing, Prev: Point-converting, Up: Point -lowestPriority - Answer the lowest valid priority +1.129.6 Point: point functions +------------------------------ -priorityName: priority - Private - Answer a name for the given process priority +arcTan + Answer the angle (measured counterclockwise) between the receiver + and a ray starting in (0, 0) and moving towards (1, 0) - i.e. 3 + o'clock -rockBottomPriority - Answer the lowest valid priority +dist: aPoint + Answer the distance between the receiver and aPoint -systemBackgroundPriority - Answer the priority for system background-priority processes. - Examples are an incremental garbage collector or status checker. +dotProduct: aPoint + Answer the dot product between the receiver and aPoint -timingPriority - Answer the priority for system real-time processes. +grid: aPoint + Answer a new point whose coordinates are rounded towards the + nearest multiple of aPoint -unpreemptedPriority - Answer the highest priority avilable in the system; never create a - process with this priority, instead use - BlockClosure>>#valueWithoutPreemption. +normal + Rotate the Point 90degrees clockwise and get the unit vector -userBackgroundPriority - Answer the priority for user background-priority processes +transpose + Answer a new point whose coordinates are the receiver's coordinates + exchanged (x becomes y, y becomes x) -userInterruptPriority - Answer the priority for user interrupt-priority processes. - Processes run at this level will preempt the window scheduler and - should, therefore, not consume the processor forever. +truncatedGrid: aPoint + Answer a new point whose coordinates are rounded towards -infinity, + to a multiple of grid (which must be a Point) -userSchedulingPriority - Answer the priority for user standard-priority processes + + +File: gst-base.info, Node: Point-printing, Next: Point-storing, Prev: Point-point functions, Up: Point + +1.129.7 Point: printing +----------------------- + +printOn: aStream + Print a representation for the receiver on aStream  -File: gst-base.info, Node: ProcessorScheduler-storing, Next: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-priorities, Up: ProcessorScheduler +File: gst-base.info, Node: Point-storing, Next: Point-truncation and round off, Prev: Point-printing, Up: Point -1.129.7 ProcessorScheduler: storing ------------------------------------ +1.129.8 Point: storing +---------------------- storeOn: aStream - Store onto aStream a Smalltalk expression which evaluates to the - receiver + Print Smalltalk code compiling to the receiver on aStream  -File: gst-base.info, Node: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-storing, Up: ProcessorScheduler - -1.129.8 ProcessorScheduler: timed invocation --------------------------------------------- +File: gst-base.info, Node: Point-truncation and round off, Prev: Point-storing, Up: Point -isTimeoutProgrammed - Private - Answer whether there is a pending call to - #signal:atMilliseconds: +1.129.9 Point: truncation and round off +--------------------------------------- -signal: aSemaphore atMilliseconds: millis - Private - signal 'aSemaphore' after 'millis' milliseconds have - elapsed +rounded + Answer a new point whose coordinates are rounded to the nearest + integer -signal: aSemaphore onInterrupt: anIntegerSignalNumber - Private - signal 'aSemaphore' when the given C signal occurs +truncateTo: grid + Answer a new point whose coordinates are rounded towards -infinity, + to a multiple of grid (which must be a Number)  -File: gst-base.info, Node: Promise, Next: Random, Prev: ProcessorScheduler, Up: Base classes +File: gst-base.info, Node: PositionableStream, Next: Process, Prev: Point, Up: Base classes -1.130 Promise -============= +1.130 PositionableStream +======================== Defined in namespace Smalltalk -Superclass: ValueHolder -Category: Language-Data types - I store my value in a variable, and know whether I have been - initialized or not. If you ask for my value and I have not been - initialized, I suspend the process until a value has been assigned. +Superclass: Stream +Category: Streams-Collections + My instances represent streams where explicit positioning is + permitted. Thus, my streams act in a manner to normal disk files: + you can read or write sequentially, but also position the file to + a particular place whenever you choose. Generally, you'll want to + use ReadStream, WriteStream or ReadWriteStream instead of me to + create and use streams. * Menu: -* Promise class-creating instances:: (class) -* Promise-accessing:: (instance) -* Promise-initializing:: (instance) -* Promise-printing:: (instance) -* Promise-still unclassified:: (instance) +* PositionableStream class-instance creation:: (class) +* PositionableStream-accessing-reading:: (instance) +* PositionableStream-class type methods:: (instance) +* PositionableStream-compiling:: (instance) +* PositionableStream-positioning:: (instance) +* PositionableStream-still unclassified:: (instance) +* PositionableStream-testing:: (instance) +* PositionableStream-truncating:: (instance)  -File: gst-base.info, Node: Promise class-creating instances, Next: Promise-accessing, Up: Promise +File: gst-base.info, Node: PositionableStream class-instance creation, Next: PositionableStream-accessing-reading, Up: PositionableStream -1.130.1 Promise class: creating instances ------------------------------------------ +1.130.1 PositionableStream class: instance creation +--------------------------------------------------- -for: aBlock - Invoke aBlock at an indeterminate time in an indeterminate process - before answering its value from #value sent to my result. +on: aCollection + Answer an instance of the receiver streaming on the whole contents + of aCollection -null - This method should not be called for instances of this class. +on: aCollection from: firstIndex to: lastIndex + Answer an instance of the receiver streaming from the + firstIndex-th item of aCollection to the lastIndex-th  -File: gst-base.info, Node: Promise-accessing, Next: Promise-initializing, Prev: Promise class-creating instances, Up: Promise - -1.130.2 Promise: accessing --------------------------- - -hasError - Answer whether calling #value will raise an exception. - -hasValue - Answer whether we already have a value (or calling #value will - raise an error). +File: gst-base.info, Node: PositionableStream-accessing-reading, Next: PositionableStream-class type methods, Prev: PositionableStream class-instance creation, Up: PositionableStream -value - Get the value of the receiver. +1.130.2 PositionableStream: accessing-reading +--------------------------------------------- -value: anObject - Set the value of the receiver. +close + Disassociate a stream from its backing store. +contents + Returns a collection of the same type that the stream accesses, up + to and including the final element. - -File: gst-base.info, Node: Promise-initializing, Next: Promise-printing, Prev: Promise-accessing, Up: Promise +copyFrom: start to: end + Answer the data on which the receiver is streaming, from the + start-th item to the end-th. Note that this method is 0-based, + unlike the one in Collection, because a Stream's #position method + returns 0-based values. -1.130.3 Promise: initializing ------------------------------ +next + Answer the next item of the receiver. Returns nil when at end of + stream. -initialize - Private - set the initial state of the receiver +nextAvailable: anInteger into: aCollection startingAt: pos + Place up to anInteger objects from the receiver into aCollection, + starting from position pos in the collection and stopping if no + more data is available. + +nextAvailable: anInteger putAllOn: aStream + Copy up to anInteger objects from the receiver into aStream, + stopping if no more data is available. +peek + Returns the next element of the stream without moving the pointer. + Returns nil when at end of stream. - -File: gst-base.info, Node: Promise-printing, Next: Promise-still unclassified, Prev: Promise-initializing, Up: Promise +peekFor: anObject + Returns true and gobbles the next element from the stream of it is + equal to anObject, returns false and doesn't gobble the next + element if the next element is not equal to anObject. -1.130.4 Promise: printing -------------------------- +readStream + Answer a ReadStream on the same contents as the receiver -printOn: aStream - Print a representation of the receiver +reverseContents + Returns a collection of the same type that the stream accesses, up + to and including the final element, but in reverse order.  -File: gst-base.info, Node: Promise-still unclassified, Prev: Promise-printing, Up: Promise +File: gst-base.info, Node: PositionableStream-class type methods, Next: PositionableStream-compiling, Prev: PositionableStream-accessing-reading, Up: PositionableStream -1.130.5 Promise: still unclassified ------------------------------------ +1.130.3 PositionableStream: class type methods +---------------------------------------------- -errorValue: anException - Private - Raise anException whenever #value is called. +isExternalStream + We stream on a collection residing in the image, so answer false + +species + Return the type of the collections returned by #upTo: etc., which + are the same kind as those returned by the collection with methods + such as #select:.  -File: gst-base.info, Node: Random, Next: ReadStream, Prev: Promise, Up: Base classes +File: gst-base.info, Node: PositionableStream-compiling, Next: PositionableStream-positioning, Prev: PositionableStream-class type methods, Up: PositionableStream -1.131 Random -============ +1.130.4 PositionableStream: compiling +------------------------------------- -Defined in namespace Smalltalk -Superclass: Stream -Category: Streams - My instances are generator streams that produce random numbers, - which are floating point values between 0 and 1. +name + Answer a string that represents what the receiver is streaming on -* Menu: +segmentFrom: startPos to: endPos + Answer an object that, when sent #asString, will yield the result + of sending `copyFrom: startPos to: endPos' to the receiver -* Random class-instance creation:: (class) -* Random class-shortcuts:: (class) -* Random-basic:: (instance) -* Random-testing:: (instance)  -File: gst-base.info, Node: Random class-instance creation, Next: Random class-shortcuts, Up: Random +File: gst-base.info, Node: PositionableStream-positioning, Next: PositionableStream-still unclassified, Prev: PositionableStream-compiling, Up: PositionableStream -1.131.1 Random class: instance creation +1.130.5 PositionableStream: positioning --------------------------------------- -new - Create a new random number generator whose seed is given by the - current time on the millisecond clock +basicPosition: anInteger + Move the stream pointer to the anInteger-th object -seed: aFloat - Create a new random number generator whose seed is aFloat +isPositionable + Answer true if the stream supports moving backwards with #skip:. +position + Answer the current value of the stream pointer - -File: gst-base.info, Node: Random class-shortcuts, Next: Random-basic, Prev: Random class-instance creation, Up: Random +position: anInteger + Move the stream pointer to the anInteger-th object -1.131.2 Random class: shortcuts -------------------------------- +reset + Move the stream back to its first element. For write-only streams, + the stream is truncated there. -between: low and: high - Return a random integer between the given extrema +setToEnd + Move the current position to the end of the stream. -next - Return a random number between 0 and 1 (excluded) +size + Answer the size of data on which we are streaming. -source - Return a standard source of random numbers. +skip: anInteger + Move the current position by anInteger places, either forwards or + backwards.  -File: gst-base.info, Node: Random-basic, Next: Random-testing, Prev: Random class-shortcuts, Up: Random +File: gst-base.info, Node: PositionableStream-still unclassified, Next: PositionableStream-testing, Prev: PositionableStream-positioning, Up: PositionableStream -1.131.3 Random: basic ---------------------- +1.130.6 PositionableStream: still unclassified +---------------------------------------------- -atEnd - This stream never ends. Always answer false. +nextPutAllOn: aStream + Write all the objects in the receiver to aStream. -between: low and: high - Return a random integer between low and high. -next - Return the next random number in the sequence. + +File: gst-base.info, Node: PositionableStream-testing, Next: PositionableStream-truncating, Prev: PositionableStream-still unclassified, Up: PositionableStream -nextPut: value - This method should not be called for instances of this class. +1.130.7 PositionableStream: testing +----------------------------------- +atEnd + Answer whether the objects in the stream have reached an end - -File: gst-base.info, Node: Random-testing, Prev: Random-basic, Up: Random +basicAtEnd + Answer whether the objects in the stream have reached an end. + This method must NOT be overridden. -1.131.4 Random: testing ------------------------ +isEmpty + Answer whether the stream has no objects -chiSquare - Compute the chi-square of the random that this class generates. -chiSquare: n range: r - Return the chi-square deduced from calculating n random numbers in - the 0..r range. + +File: gst-base.info, Node: PositionableStream-truncating, Prev: PositionableStream-testing, Up: PositionableStream + +1.130.8 PositionableStream: truncating +-------------------------------------- + +truncate + Truncate the receiver to the current position - only valid for + writing streams  -File: gst-base.info, Node: ReadStream, Next: ReadWriteStream, Prev: Random, Up: Base classes +File: gst-base.info, Node: Process, Next: ProcessEnvironment, Prev: PositionableStream, Up: Base classes -1.132 ReadStream -================ +1.131 Process +============= Defined in namespace Smalltalk -Superclass: PositionableStream -Category: Streams-Collections - I implement the set of read-only stream objects. You may read from - my objects, but you may not write to them. +Superclass: Link +Category: Language-Processes + I represent a unit of computation. My instances are independantly + executable blocks that have a priority associated with them, and + they can suspend themselves and resume themselves however they + wish. * Menu: -* ReadStream class-instance creation:: (class) +* Process-accessing:: (instance) +* Process-basic:: (instance) +* Process-builtins:: (instance) +* Process-printing:: (instance)  -File: gst-base.info, Node: ReadStream class-instance creation, Up: ReadStream - -1.132.1 ReadStream class: instance creation -------------------------------------------- +File: gst-base.info, Node: Process-accessing, Next: Process-basic, Up: Process -on: aCollection - Answer a new stream working on aCollection from its start. +1.131.1 Process: accessing +-------------------------- -on: aCollection from: firstIndex to: lastIndex - Answer an instance of the receiver streaming from the - firstIndex-th item of aCollection to the lastIndex-th +externalInterruptsEnabled + Answer whether the receiver is executed with interrupts enabled +name + Answer the user-friendly name of the process. - -File: gst-base.info, Node: ReadWriteStream, Next: Rectangle, Prev: ReadStream, Up: Base classes +name: aString + Give the name aString to the process -1.133 ReadWriteStream -===================== +priority + Answer the receiver's priority -Defined in namespace Smalltalk -Superclass: WriteStream -Category: Streams-Collections - I am the class of streams that may be read and written from - simultaneously. In some sense, I am the best of both ReadStream - and WriteStream. +priority: anInteger + Change the receiver's priority to anInteger -* Menu: +queueInterrupt: aBlock + Force the receiver to be interrupted and to evaluate aBlock as + soon as it becomes the active process (this could mean NOW if the + receiver is active). If the process is temporarily suspended or + waiting on a semaphore, it is temporarily woken up so that the + interrupt is processed as soon as the process priority allows to + do. Answer the receiver. -* ReadWriteStream class-instance creation:: (class) -* ReadWriteStream-positioning:: (instance) +suspendedContext + Answer the context that the process was executing at the time it + was suspended. - -File: gst-base.info, Node: ReadWriteStream class-instance creation, Next: ReadWriteStream-positioning, Up: ReadWriteStream +valueWithoutInterrupts: aBlock + Evaluate aBlock and delay all interrupts that are requested during + its execution to after aBlock returns. -1.133.1 ReadWriteStream class: instance creation ------------------------------------------------- -on: aCollection - Answer a new stream working on aCollection from its start. The - stream starts at the front of aCollection. + +File: gst-base.info, Node: Process-basic, Next: Process-builtins, Prev: Process-accessing, Up: Process -on: aCollection from: firstIndex to: lastIndex - Answer an instance of the receiver streaming from the - firstIndex-th item of aCollection to the lastIndex-th +1.131.2 Process: basic +---------------------- -with: aCollection - Answer a new instance of the receiver which streams from the end - of aCollection. +context + Return the execution context of the receiver. +debugger + Return the object in charge of debugging the receiver. This + always returns nil unless the DebugTools package is loaded. - -File: gst-base.info, Node: ReadWriteStream-positioning, Prev: ReadWriteStream class-instance creation, Up: ReadWriteStream +finalize + Terminate processes that are GCed while waiting on a dead + semaphore. -1.133.2 ReadWriteStream: positioning ------------------------------------- +lowerPriority + Lower a bit the priority of the receiver. A #lowerPriority will + cancel a previous #raisePriority, and vice versa. -contents - Unlike WriteStreams, ReadWriteStreams return the whole contents of - the underlying collection. +makeUntrusted: aBoolean + Set whether the receiver is trusted or not. +primTerminate + Terminate the receiver - This is nothing more than prohibiting to + resume the process, then suspending it. - -File: gst-base.info, Node: Rectangle, Next: RecursionLock, Prev: ReadWriteStream, Up: Base classes +raisePriority + Raise a bit the priority of the receiver. A #lowerPriority will + cancel a previous #raisePriority, and vice versa. -1.134 Rectangle -=============== +singleStep + Execute a limited amount of code (usually a bytecode, or up to the + next backward jump, or up to the next message send) of the + receiver, which must in a ready-to-run state (neither executing + nor terminating nor suspended), then restart running the current + process. The current process should have higher priority than the + receiver. For better performance, use the underlying primitive, + Process>>#singleStepWaitingOn:. -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Data types - Beginning of the Rectangle class for simple display manipulation. - Rectangles require the Point class to be available. An extension - to the Point class is made here that since it requires Rectangles - to be defined (see converting) +terminate + Terminate the receiver after having evaluated all the #ensure: and + #ifCurtailed: blocks that are active in it. This is done by + signalling a ProcessBeingTerminated notification. -* Menu: +terminateOnQuit + Mark the receiver so that it is terminated when ObjectMemory + class>>#quit: is sent. -* Rectangle class-instance creation:: (class) -* Rectangle-accessing:: (instance) -* Rectangle-copying:: (instance) -* Rectangle-printing:: (instance) -* Rectangle-rectangle functions:: (instance) -* Rectangle-testing:: (instance) -* Rectangle-transforming:: (instance) -* Rectangle-truncation and round off:: (instance)  -File: gst-base.info, Node: Rectangle class-instance creation, Next: Rectangle-accessing, Up: Rectangle +File: gst-base.info, Node: Process-builtins, Next: Process-printing, Prev: Process-basic, Up: Process -1.134.1 Rectangle class: instance creation ------------------------------------------- +1.131.3 Process: builtins +------------------------- -left: leftNumber right: rightNumber top: topNumber bottom: bottomNumber - Answer a rectangle with the given coordinates +resume + Resume the receiver's execution -new - Answer the (0 @ 0 corner: 0 @ 0) rectangle +singleStepWaitingOn: aSemaphore + Execute a limited amount of code (usually a bytecode, or up to the + next backward jump, or up to the next message send) of the + receiver, which must in a ready-to-run state (neither executing + nor terminating nor suspended), then restart running the current + process. aSemaphore is used as a means to synchronize the + execution of the current process and the receiver and should have + no signals on it. The current process should have higher priority + than the receiver. -origin: originPoint corner: cornerPoint - Answer a rectangle with the given corners +suspend + Do nothing if we're already suspended. Note that the blue book made + suspend a primitive - but the real primitive is yielding control to + another process. Suspending is nothing more than taking ourselves + out of every scheduling list and THEN yielding control to another + process -origin: originPoint extent: extentPoint - Answer a rectangle with the given origin and size +yield + Yield control from the receiver to other processes  -File: gst-base.info, Node: Rectangle-accessing, Next: Rectangle-copying, Prev: Rectangle class-instance creation, Up: Rectangle +File: gst-base.info, Node: Process-printing, Prev: Process-builtins, Up: Process -1.134.2 Rectangle: accessing ----------------------------- +1.131.4 Process: printing +------------------------- -bottom - Answer the corner's y of the receiver +printOn: aStream + Print a representation of the receiver on aStream -bottom: aNumber - Set the corner's y of the receiver -bottomCenter - Answer the center of the receiver's bottom side + +File: gst-base.info, Node: ProcessEnvironment, Next: ProcessorScheduler, Prev: Process, Up: Base classes -bottomLeft - Answer the bottom-left corner of the receiver +1.132 ProcessEnvironment +======================== -bottomLeft: aPoint - Answer the receiver with the bottom-left changed to aPoint +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes + I represent a proxy for thread-local variables defined for + Smalltalk processes. Associations requested to me retrieve the + thread-local value for the current process. For now, I don't + provide the full protocol of a Dictionary; in particular the + iteration protocol is absent. -bottomRight - Answer the bottom-right corner of the receiver +* Menu: -bottomRight: aPoint - Change the bottom-right corner of the receiver +* ProcessEnvironment class-disabled:: (class) +* ProcessEnvironment class-singleton:: (class) +* ProcessEnvironment-accessing:: (instance) +* ProcessEnvironment-dictionary removing:: (instance) +* ProcessEnvironment-dictionary testing:: (instance) -center - Answer the center of the receiver + +File: gst-base.info, Node: ProcessEnvironment class-disabled, Next: ProcessEnvironment class-singleton, Up: ProcessEnvironment -corner - Answer the corner of the receiver +1.132.1 ProcessEnvironment class: disabled +------------------------------------------ -corner: aPoint - Set the corner of the receiver +new + This method should not be called for instances of this class. -extent - Answer the extent of the receiver -extent: aPoint - Change the size of the receiver, keeping the origin the same + +File: gst-base.info, Node: ProcessEnvironment class-singleton, Next: ProcessEnvironment-accessing, Prev: ProcessEnvironment class-disabled, Up: ProcessEnvironment -height - Answer the height of the receiver +1.132.2 ProcessEnvironment class: singleton +------------------------------------------- -height: aNumber - Set the height of the receiver +uniqueInstance + Return the singleton instance of ProcessEnvironment. -left - Answer the x of the left edge of the receiver -left: aValue - Set the x of the left edge of the receiver + +File: gst-base.info, Node: ProcessEnvironment-accessing, Next: ProcessEnvironment-dictionary removing, Prev: ProcessEnvironment class-singleton, Up: ProcessEnvironment -left: l top: t right: r bottom: b - Change all four the coordinates of the receiver's corners +1.132.3 ProcessEnvironment: accessing +------------------------------------- -leftCenter - Answer the center of the receiver's left side +add: newObject + Add the newObject association to the receiver -origin - Answer the top-left corner of the receiver +associationAt: key + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found -origin: aPoint - Change the top-left corner of the receiver to aPoint +associationAt: key ifAbsent: aBlock + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found -origin: pnt1 corner: pnt2 - Change both the origin (top-left corner) and the corner - (bottom-right corner) of the receiver +at: key + Answer the value associated to the given key. Return nil if the key + is not found -origin: pnt1 extent: pnt2 - Change the top-left corner and the size of the receiver +at: key ifAbsent: aBlock + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found -right - Answer the x of the bottom-right corner of the receiver +at: key ifAbsentPut: aBlock + Answer the value associated to the given key, setting it to the + result of evaluating aBlock if the key is not found. -right: aNumber - Change the x of the bottom-right corner of the receiver +at: key ifPresent: aBlock + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found -rightCenter - Answer the center of the receiver's right side +at: key put: value + Store value as associated to the given key -top - Answer the y of the receiver's top-left corner +keys + Answer a kind of Set containing the keys of the receiver -top: aValue - Change the y of the receiver's top-left corner -topCenter - Answer the center of the receiver's top side + +File: gst-base.info, Node: ProcessEnvironment-dictionary removing, Next: ProcessEnvironment-dictionary testing, Prev: ProcessEnvironment-accessing, Up: ProcessEnvironment -topLeft - Answer the receiver's top-left corner +1.132.4 ProcessEnvironment: dictionary removing +----------------------------------------------- -topLeft: aPoint - Change the receiver's top-left corner's coordinates to aPoint +remove: anAssociation + Remove anAssociation's key from the dictionary -topRight - Answer the receiver's top-right corner +remove: anAssociation ifAbsent: aBlock + Remove anAssociation's key from the dictionary -topRight: aPoint - Change the receiver's top-right corner to aPoint +removeAllKeys: keys + Remove all the keys in keys, without raising any errors -width - Answer the receiver's width +removeAllKeys: keys ifAbsent: aBlock + Remove all the keys in keys, passing the missing keys as parameters + to aBlock as they're encountered -width: aNumber - Change the receiver's width to aNumber +removeKey: aSymbol + Remove the aSymbol key from the dictionary + +removeKey: aSymbol ifAbsent: aBlock + Remove the aSymbol key from the dictionary  -File: gst-base.info, Node: Rectangle-copying, Next: Rectangle-printing, Prev: Rectangle-accessing, Up: Rectangle +File: gst-base.info, Node: ProcessEnvironment-dictionary testing, Prev: ProcessEnvironment-dictionary removing, Up: ProcessEnvironment -1.134.3 Rectangle: copying --------------------------- +1.132.5 ProcessEnvironment: dictionary testing +---------------------------------------------- -copy - Return a deep copy of the receiver for safety. +includesKey: key + Answer whether the receiver contains the given key  -File: gst-base.info, Node: Rectangle-printing, Next: Rectangle-rectangle functions, Prev: Rectangle-copying, Up: Rectangle +File: gst-base.info, Node: ProcessorScheduler, Next: Promise, Prev: ProcessEnvironment, Up: Base classes -1.134.4 Rectangle: printing ---------------------------- +1.133 ProcessorScheduler +======================== -printOn: aStream - Print a representation of the receiver on aStream +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes + I provide methods that control the execution of processes. -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream +* Menu: +* ProcessorScheduler class-instance creation:: (class) +* ProcessorScheduler-basic:: (instance) +* ProcessorScheduler-built ins:: (instance) +* ProcessorScheduler-idle tasks:: (instance) +* ProcessorScheduler-printing:: (instance) +* ProcessorScheduler-priorities:: (instance) +* ProcessorScheduler-storing:: (instance) +* ProcessorScheduler-timed invocation:: (instance)  -File: gst-base.info, Node: Rectangle-rectangle functions, Next: Rectangle-testing, Prev: Rectangle-printing, Up: Rectangle +File: gst-base.info, Node: ProcessorScheduler class-instance creation, Next: ProcessorScheduler-basic, Up: ProcessorScheduler -1.134.5 Rectangle: rectangle functions --------------------------------------- +1.133.1 ProcessorScheduler class: instance creation +--------------------------------------------------- -amountToTranslateWithin: aRectangle - Answer a Point so that if aRectangle is translated by that point, - its origin lies within the receiver's. +new + Error--new instances of ProcessorScheduler should not be created. -area - Answer the receiver's area. The area is the width times the height, - so it is possible for it to be negative if the rectangle is not - normalized. -areasOutside: aRectangle - Answer a collection of rectangles containing the parts of the - receiver outside of aRectangle. For all points in the receiver, - but outside aRectangle, exactly one rectangle in the collection - will contain that point. + +File: gst-base.info, Node: ProcessorScheduler-basic, Next: ProcessorScheduler-built ins, Prev: ProcessorScheduler class-instance creation, Up: ProcessorScheduler -expandBy: delta - Answer a new rectangle that is the receiver expanded by aValue: if - aValue is a rectangle, calculate origin=origin-aValue origin, - corner=corner+aValue corner; else calculate origin=origin-aValue, - corner=corner+aValue. +1.133.2 ProcessorScheduler: basic +--------------------------------- -insetBy: delta - Answer a new rectangle that is the receiver inset by aValue: if - aValue is a rectangle, calculate origin=origin+aValue origin, - corner=corner-aValue corner; else calculate origin=origin+aValue, - corner=corner-aValue. +activeDebugger + Answer the active process' debugger -insetOriginBy: originDelta corner: cornerDelta - Answer a new rectangle that is the receiver inset so that - origin=origin+originDelta, corner=corner-cornerDelta. The deltas - can be points or numbers +activePriority + Answer the active process' priority -intersect: aRectangle - Answers the rectangle (if any) created by the overlap of - rectangles A and B. Answers nil if the rectangles do not overlap +activeProcess + Answer the active process -merge: aRectangle - Answer a new rectangle which is the smallest rectangle containing - both the receiver and aRectangle. +processEnvironment + Answer another singleton object hosting thread-local variables for + the Smalltalk processes. This acts like a normal Dictionary with + a couple of differences: a) using #associationAt: will return + special associations that retrieve a thread-local value; b) + requesting missing keys will return nil, and removing them will be + a nop. -translatedToBeWithin: aRectangle - Answer a copy of the receiver that does not extend beyond - aRectangle. +processesAt: aPriority + Answer a linked list of processes at the given priority +terminateActive + Terminate the active process - -File: gst-base.info, Node: Rectangle-testing, Next: Rectangle-transforming, Prev: Rectangle-rectangle functions, Up: Rectangle +timeSlice + Answer the timeslice that is assigned to each Process before it is + automatically preempted by the system (in milliseconds). An + answer of zero means that preemptive multitasking is disabled. + Note that the system by default is compiled without preemptive + multitasking, and that even if it is enabled it will work only + under BSD derivatives (or, in general, systems that support + ITIMER_VIRTUAL). -1.134.6 Rectangle: testing --------------------------- +timeSlice: milliSeconds + Set the timeslice that is assigned to each Process before it is + automatically preempted by the system. Setting this to zero + disables preemptive multitasking. Note that the system by default + is compiled with preemptive multitasking disabled, and that even + if it is enabled it will surely work only under BSD derivatives + (or, in general, systems that support ITIMER_VIRTUAL). -= aRectangle - Answer whether the receiver is equal to aRectangle +yield + Let the active process yield control to other processes -contains: aRectangle - Answer true if the receiver contains (see containsPoint:) both - aRectangle's origin and aRectangle's corner -containsPoint: aPoint - Answer true if aPoint is equal to, or below and to the right of, - the receiver's origin; and aPoint is above and to the left of the - receiver's corner + +File: gst-base.info, Node: ProcessorScheduler-built ins, Next: ProcessorScheduler-idle tasks, Prev: ProcessorScheduler-basic, Up: ProcessorScheduler -hash - Answer an hash value for the receiver +1.133.3 ProcessorScheduler: built ins +------------------------------------- -intersects: aRectangle - Answer true if the receiver intersect aRectangle, i.e. if it - contains (see containsPoint:) any of aRectangle corners or if - aRectangle contains the receiver + twice + +disableInterrupts + Disable interrupts caused by external events while the current + process is executing. Note that interrupts are disabled on a + per-process basis, and that calling #disableInterrupts twice + requires calling #enableInterrupts twice as well to re-enable + interrupts. + +enableInterrupts + Re-enable interrupts caused by external events while the current + process is executing. By default, interrupts are enabled.  -File: gst-base.info, Node: Rectangle-transforming, Next: Rectangle-truncation and round off, Prev: Rectangle-testing, Up: Rectangle - -1.134.7 Rectangle: transforming -------------------------------- +File: gst-base.info, Node: ProcessorScheduler-idle tasks, Next: ProcessorScheduler-printing, Prev: ProcessorScheduler-built ins, Up: ProcessorScheduler -moveBy: aPoint - Change the receiver so that the origin and corner are shifted by - aPoint +1.133.4 ProcessorScheduler: idle tasks +-------------------------------------- -moveTo: aPoint - Change the receiver so that the origin moves to aPoint and the size - remains unchanged +idle + Private - Call the next idle task -scaleBy: scale - Answer a copy of the receiver in which the origin and corner are - multiplied by scale +idleAdd: aBlock + Register aBlock to be executed when things are idle -translateBy: factor - Answer a copy of the receiver in which the origin and corner are - shifted by aPoint +initialize + Private - Start the finalization process. + +update: aSymbol + If we left some work behind when the image was saved, do it now.  -File: gst-base.info, Node: Rectangle-truncation and round off, Prev: Rectangle-transforming, Up: Rectangle +File: gst-base.info, Node: ProcessorScheduler-printing, Next: ProcessorScheduler-priorities, Prev: ProcessorScheduler-idle tasks, Up: ProcessorScheduler -1.134.8 Rectangle: truncation and round off -------------------------------------------- +1.133.5 ProcessorScheduler: printing +------------------------------------ -rounded - Answer a copy of the receiver with the coordinates rounded to the - nearest integers +printOn: aStream + Store onto aStream a printed representation of the receiver  -File: gst-base.info, Node: RecursionLock, Next: Regex, Prev: Rectangle, Up: Base classes - -1.135 RecursionLock -=================== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Processes +File: gst-base.info, Node: ProcessorScheduler-priorities, Next: ProcessorScheduler-storing, Prev: ProcessorScheduler-printing, Up: ProcessorScheduler -* Menu: +1.133.6 ProcessorScheduler: priorities +-------------------------------------- -* RecursionLock class-instance creation:: (class) -* RecursionLock-accessing:: (instance) -* RecursionLock-mutual exclusion:: (instance) -* RecursionLock-printing:: (instance) +highIOPriority + Answer the priority for system high-priority I/O processes, such + as a process handling input from a network. - -File: gst-base.info, Node: RecursionLock class-instance creation, Next: RecursionLock-accessing, Up: RecursionLock +highestPriority + Answer the highest valid priority -1.135.1 RecursionLock class: instance creation ----------------------------------------------- +lowIOPriority + Answer the priority for system low-priority I/O processes. + Examples are the process handling input from the user (keyboard, + pointing device, etc.) and the process distributing input from a + network. -new - Answer a new semaphore +lowestPriority + Answer the lowest valid priority +priorityName: priority + Private - Answer a name for the given process priority - -File: gst-base.info, Node: RecursionLock-accessing, Next: RecursionLock-mutual exclusion, Prev: RecursionLock class-instance creation, Up: RecursionLock +rockBottomPriority + Answer the lowest valid priority -1.135.2 RecursionLock: accessing --------------------------------- +systemBackgroundPriority + Answer the priority for system background-priority processes. + Examples are an incremental garbage collector or status checker. -isOwnerProcess - Answer whether the receiver is the owner of the lock. +timingPriority + Answer the priority for system real-time processes. -name - Answer a user-defined name for the lock. +unpreemptedPriority + Answer the highest priority avilable in the system; never create a + process with this priority, instead use + BlockClosure>>#valueWithoutPreemption. -name: aString - Set to aString the user-defined name for the lock. +userBackgroundPriority + Answer the priority for user background-priority processes -waitingProcesses - Answer the set of processes that are waiting on the semaphore. +userInterruptPriority + Answer the priority for user interrupt-priority processes. + Processes run at this level will preempt the window scheduler and + should, therefore, not consume the processor forever. -wouldBlock - Answer whether sending #wait to the receiver would suspend the - active process. +userSchedulingPriority + Answer the priority for user standard-priority processes  -File: gst-base.info, Node: RecursionLock-mutual exclusion, Next: RecursionLock-printing, Prev: RecursionLock-accessing, Up: RecursionLock +File: gst-base.info, Node: ProcessorScheduler-storing, Next: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-priorities, Up: ProcessorScheduler -1.135.3 RecursionLock: mutual exclusion ---------------------------------------- +1.133.7 ProcessorScheduler: storing +----------------------------------- -critical: aBlock - Wait for the receiver to be free, execute aBlock and signal the - receiver again. Return the result of evaluating aBlock. +storeOn: aStream + Store onto aStream a Smalltalk expression which evaluates to the + receiver  -File: gst-base.info, Node: RecursionLock-printing, Prev: RecursionLock-mutual exclusion, Up: RecursionLock +File: gst-base.info, Node: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-storing, Up: ProcessorScheduler -1.135.4 RecursionLock: printing -------------------------------- +1.133.8 ProcessorScheduler: timed invocation +-------------------------------------------- -printOn: aStream - Print a human-readable represention of the receiver on aStream. +isTimeoutProgrammed + Private - Answer whether there is a pending call to + #signal:atMilliseconds: + +signal: aSemaphore atMilliseconds: millis + Private - signal 'aSemaphore' after 'millis' milliseconds have + elapsed + +signal: aSemaphore onInterrupt: anIntegerSignalNumber + Signal 'aSemaphore' when the given C signal occurs.  -File: gst-base.info, Node: Regex, Next: RegexResults, Prev: RecursionLock, Up: Base classes +File: gst-base.info, Node: Promise, Next: Random, Prev: ProcessorScheduler, Up: Base classes -1.136 Regex -=========== +1.134 Promise +============= Defined in namespace Smalltalk -Superclass: Object -Category: Collections-Text - A Regex is a read-only string for which the regular expression - matcher can cache a compiled representation, thus speeding up - matching. Regex objects are constructed automatically by methods - that expect to match many times the same regular expression, but - can also be constructed explicitly sending #asRegex to a String or - Symbol. - - Creation of Regex objects inside a loop is of course slower than - creating them outside the loop, but special care is taken so that - the same Regex object is used whenever possible (when converting - Strings to Regex, the cache is sought for an equivalent, already - constructed Regex). +Superclass: ValueHolder +Category: Language-Data types + I store my value in a variable, and know whether I have been + initialized or not. If you ask for my value and I have not been + initialized, I suspend the process until a value has been assigned. * Menu: -* Regex class-instance creation:: (class) -* Regex-basic:: (instance) -* Regex-conversion:: (instance) -* Regex-printing:: (instance) +* Promise class-creating instances:: (class) +* Promise-accessing:: (instance) +* Promise-initializing:: (instance) +* Promise-printing:: (instance) +* Promise-still unclassified:: (instance)  -File: gst-base.info, Node: Regex class-instance creation, Next: Regex-basic, Up: Regex +File: gst-base.info, Node: Promise class-creating instances, Next: Promise-accessing, Up: Promise -1.136.1 Regex class: instance creation --------------------------------------- +1.134.1 Promise class: creating instances +----------------------------------------- -fromString: aString - Like `aString asRegex'. +for: aBlock + Invoke aBlock at an indeterminate time in an indeterminate process + before answering its value from #value sent to my result. -new - Do not send this message. +null + This method should not be called for instances of this class.  -File: gst-base.info, Node: Regex-basic, Next: Regex-conversion, Prev: Regex class-instance creation, Up: Regex +File: gst-base.info, Node: Promise-accessing, Next: Promise-initializing, Prev: Promise class-creating instances, Up: Promise -1.136.2 Regex: basic --------------------- +1.134.2 Promise: accessing +-------------------------- -at: anIndex put: anObject - Fail. Regex objects are read-only. +hasError + Answer whether calling #value will raise an exception. -copy - Answer the receiver; instances of Regex are identity objects - because their only purpose is to ease caching, and we obtain - better caching if we avoid copying Regex objects +hasValue + Answer whether we already have a value (or calling #value will + raise an error). +value + Get the value of the receiver. - -File: gst-base.info, Node: Regex-conversion, Next: Regex-printing, Prev: Regex-basic, Up: Regex +value: anObject + Set the value of the receiver. -1.136.3 Regex: conversion -------------------------- -asRegex - Answer the receiver, which *is* a Regex! + +File: gst-base.info, Node: Promise-initializing, Next: Promise-printing, Prev: Promise-accessing, Up: Promise -asString - Answer the receiver, converted back to a String +1.134.3 Promise: initializing +----------------------------- -species - Answer `String'. +initialize + Private - set the initial state of the receiver  -File: gst-base.info, Node: Regex-printing, Prev: Regex-conversion, Up: Regex +File: gst-base.info, Node: Promise-printing, Next: Promise-still unclassified, Prev: Promise-initializing, Up: Promise -1.136.4 Regex: printing ------------------------ +1.134.4 Promise: printing +------------------------- -displayOn: aStream - Print a represention of the receiver on aStream. For most objects - this is simply its #printOn: representation, but for strings and - characters, superfluous dollars or extra pairs of quotes are - stripped. +printOn: aStream + Print a representation of the receiver -displayString - Answer a String representing the receiver. For most objects this - is simply its #printString, but for strings and characters, - superfluous dollars or extra pair of quotes are stripped. -printOn: aStream - Print a represention of the receiver on aStream. + +File: gst-base.info, Node: Promise-still unclassified, Prev: Promise-printing, Up: Promise + +1.134.5 Promise: still unclassified +----------------------------------- + +errorValue: anException + Private - Raise anException whenever #value is called.  -File: gst-base.info, Node: RegexResults, Next: RootNamespace, Prev: Regex, Up: Base classes +File: gst-base.info, Node: Random, Next: ReadStream, Prev: Promise, Up: Base classes -1.137 RegexResults -================== +1.135 Random +============ Defined in namespace Smalltalk -Superclass: Object -Category: Collections-Text - I hold the results of a regular expression match, and I can - reconstruct which parts of the matched string were assigned to - each subexpression. Methods such as #=~ return RegexResults - objects, while others transform the string directly without - passing the results object back to the caller. +Superclass: Stream +Category: Streams + My instances are generator streams that produce random numbers, + which are floating point values between 0 and 1. * Menu: -* RegexResults-accessing:: (instance) -* RegexResults-testing:: (instance) +* Random class-instance creation:: (class) +* Random class-shortcuts:: (class) +* Random-basic:: (instance) +* Random-testing:: (instance)  -File: gst-base.info, Node: RegexResults-accessing, Next: RegexResults-testing, Up: RegexResults +File: gst-base.info, Node: Random class-instance creation, Next: Random class-shortcuts, Up: Random -1.137.1 RegexResults: accessing -------------------------------- +1.135.1 Random class: instance creation +--------------------------------------- -at: anIndex - If the regular expression was matched, return the text of the - anIndex-th subexpression in the successful match. +new + Create a new random number generator whose seed is given by the + current time on the millisecond clock -from - If the regular expression was matched, return the index of the - first character in the successful match. +seed: aFloat + Create a new random number generator whose seed is aFloat -fromAt: anIndex - If the regular expression was matched, return the index of the - first character of the anIndex-th subexpression in the successful - match. -intervalAt: anIndex - If the regular expression was matched, return an Interval for the - range of indices in the anIndex-th subexpression of the successful - match. + +File: gst-base.info, Node: Random class-shortcuts, Next: Random-basic, Prev: Random class-instance creation, Up: Random + +1.135.2 Random class: shortcuts +------------------------------- + +between: low and: high + Return a random integer between the given extrema -match - If the regular expression was matched, return the text of the - successful match. +next + Return a random number between 0 and 1 (excluded) -matchInterval - If the regular expression was matched, return an Interval for the - range of indices of the successful match. +source + Return a standard source of random numbers. -size - If the regular expression was matched, return the number of - subexpressions that were present in the regular expression. -subject - If the regular expression was matched, return the text that was - matched against it. + +File: gst-base.info, Node: Random-basic, Next: Random-testing, Prev: Random class-shortcuts, Up: Random -to - If the regular expression was matched, return the index of the - last character in the successful match. +1.135.3 Random: basic +--------------------- -toAt: anIndex - If the regular expression was matched, return the index of the last - character of the anIndex-th subexpression in the successful match. +atEnd + This stream never ends. Always answer false. +between: low and: high + Return a random integer between low and high. - -File: gst-base.info, Node: RegexResults-testing, Prev: RegexResults-accessing, Up: RegexResults +next + Return the next random number in the sequence. -1.137.2 RegexResults: testing ------------------------------ +nextPut: value + This method should not be called for instances of this class. -ifMatched: oneArgBlock - If the regular expression was matched, pass the receiver to - oneArgBlock and return its result. Otherwise, return nil. -ifMatched: oneArgBlock ifNotMatched: zeroArgBlock - If the regular expression was matched, evaluate oneArgBlock with - the receiver as the argument. If it was not, evaluate - zeroArgBlock. Answer the result of the block's evaluation. + +File: gst-base.info, Node: Random-testing, Prev: Random-basic, Up: Random -ifNotMatched: zeroArgBlock - If the regular expression was matched, return the receiver. If it - was not, evaluate zeroArgBlock and return its result. +1.135.4 Random: testing +----------------------- -ifNotMatched: zeroArgBlock ifMatched: oneArgBlock - If the regular expression was matched, evaluate oneArgBlock with - the receiver as the argument. If it was not, evaluate - zeroArgBlock. Answer the result of the block's evaluation. +chiSquare + Compute the chi-square of the random that this class generates. -matched - Answer whether the regular expression was matched +chiSquare: n range: r + Return the chi-square deduced from calculating n random numbers in + the 0..r range.  -File: gst-base.info, Node: RootNamespace, Next: RunArray, Prev: RegexResults, Up: Base classes +File: gst-base.info, Node: ReadStream, Next: ReadWriteStream, Prev: Random, Up: Base classes -1.138 RootNamespace -=================== +1.136 ReadStream +================ Defined in namespace Smalltalk -Superclass: AbstractNamespace -Category: Language-Implementation - I am a special form of dictionary. Classes hold on an instance of - me; it is called their `environment'. +Superclass: PositionableStream +Category: Streams-Collections + I implement the set of read-only stream objects. You may read from + my objects, but you may not write to them. * Menu: -* RootNamespace class-instance creation:: (class) -* RootNamespace-namespace hierarchy:: (instance) -* RootNamespace-overrides for superspaces:: (instance) -* RootNamespace-printing:: (instance) +* ReadStream class-instance creation:: (class)  -File: gst-base.info, Node: RootNamespace class-instance creation, Next: RootNamespace-namespace hierarchy, Up: RootNamespace +File: gst-base.info, Node: ReadStream class-instance creation, Up: ReadStream -1.138.1 RootNamespace class: instance creation ----------------------------------------------- +1.136.1 ReadStream class: instance creation +------------------------------------------- -new: spaceName - Create a new root namespace with the given name, and add to - Smalltalk a key that references it. +on: aCollection + Answer a new stream working on aCollection from its start. + +on: aCollection from: firstIndex to: lastIndex + Answer an instance of the receiver streaming from the + firstIndex-th item of aCollection to the lastIndex-th  -File: gst-base.info, Node: RootNamespace-namespace hierarchy, Next: RootNamespace-overrides for superspaces, Prev: RootNamespace class-instance creation, Up: RootNamespace +File: gst-base.info, Node: ReadWriteStream, Next: Rectangle, Prev: ReadStream, Up: Base classes -1.138.2 RootNamespace: namespace hierarchy ------------------------------------------- +1.137 ReadWriteStream +===================== -siblings - Answer all the other root namespaces +Defined in namespace Smalltalk +Superclass: WriteStream +Category: Streams-Collections + I am the class of streams that may be read and written from + simultaneously. In some sense, I am the best of both ReadStream + and WriteStream. -siblingsDo: aBlock - Evaluate aBlock once for each of the other root namespaces, - passing the namespace as a parameter. +* Menu: +* ReadWriteStream class-instance creation:: (class) +* ReadWriteStream-positioning:: (instance)  -File: gst-base.info, Node: RootNamespace-overrides for superspaces, Next: RootNamespace-printing, Prev: RootNamespace-namespace hierarchy, Up: RootNamespace +File: gst-base.info, Node: ReadWriteStream class-instance creation, Next: ReadWriteStream-positioning, Up: ReadWriteStream -1.138.3 RootNamespace: overrides for superspaces +1.137.1 ReadWriteStream class: instance creation ------------------------------------------------ -inheritedKeys - Answer a Set of all the keys in the receiver and its superspaces - -set: key to: newValue ifAbsent: aBlock - Assign newValue to the variable named as specified by `key'. This - method won't define a new variable; instead if the key is not - found it will search in superspaces and evaluate aBlock if it is - not found. Answer newValue. +on: aCollection + Answer a new stream working on aCollection from its start. The + stream starts at the front of aCollection. +on: aCollection from: firstIndex to: lastIndex + Answer an instance of the receiver streaming from the + firstIndex-th item of aCollection to the lastIndex-th - -File: gst-base.info, Node: RootNamespace-printing, Prev: RootNamespace-overrides for superspaces, Up: RootNamespace +with: aCollection + Answer a new instance of the receiver which streams from the end + of aCollection. -1.138.4 RootNamespace: printing -------------------------------- -nameIn: aNamespace - Answer Smalltalk code compiling to the receiver when the current - namespace is aNamespace + +File: gst-base.info, Node: ReadWriteStream-positioning, Prev: ReadWriteStream class-instance creation, Up: ReadWriteStream -printOn: aStream in: aNamespace - Print on aStream some Smalltalk code compiling to the receiver - when the current namespace is aNamespace +1.137.2 ReadWriteStream: positioning +------------------------------------ -storeOn: aStream - Store Smalltalk code compiling to the receiver +contents + Unlike WriteStreams, ReadWriteStreams return the whole contents of + the underlying collection.  -File: gst-base.info, Node: RunArray, Next: ScaledDecimal, Prev: RootNamespace, Up: Base classes +File: gst-base.info, Node: Rectangle, Next: RecursionLock, Prev: ReadWriteStream, Up: Base classes -1.139 RunArray -============== +1.138 Rectangle +=============== Defined in namespace Smalltalk -Superclass: OrderedCollection -Category: Collections-Sequenceable - My instances are OrderedCollections that automatically apply Run - Length Encoding compression to the things they store. Be careful - when using me: I can provide great space savings, but my instances - don't grant linear access time. RunArray's behavior currently is - similar to that of OrderedCollection (you can add elements to - RunArrays); maybe it should behave like an ArrayedCollection. +Superclass: Object +Category: Language-Data types + Beginning of the Rectangle class for simple display manipulation. + Rectangles require the Point class to be available. An extension + to the Point class is made here that since it requires Rectangles + to be defined (see converting) * Menu: -* RunArray class-instance creation:: (class) -* RunArray-accessing:: (instance) -* RunArray-adding:: (instance) -* RunArray-basic:: (instance) -* RunArray-copying:: (instance) -* RunArray-enumerating:: (instance) -* RunArray-removing:: (instance) -* RunArray-searching:: (instance) -* RunArray-testing:: (instance) +* Rectangle class-instance creation:: (class) +* Rectangle-accessing:: (instance) +* Rectangle-copying:: (instance) +* Rectangle-printing:: (instance) +* Rectangle-rectangle functions:: (instance) +* Rectangle-testing:: (instance) +* Rectangle-transforming:: (instance) +* Rectangle-truncation and round off:: (instance)  -File: gst-base.info, Node: RunArray class-instance creation, Next: RunArray-accessing, Up: RunArray +File: gst-base.info, Node: Rectangle class-instance creation, Next: Rectangle-accessing, Up: Rectangle -1.139.1 RunArray class: instance creation ------------------------------------------ +1.138.1 Rectangle class: instance creation +------------------------------------------ + +left: leftNumber right: rightNumber top: topNumber bottom: bottomNumber + Answer a rectangle with the given coordinates new - Answer an empty RunArray + Answer the (0 @ 0 corner: 0 @ 0) rectangle -new: aSize - Answer a RunArray with space for aSize runs +origin: originPoint corner: cornerPoint + Answer a rectangle with the given corners + +origin: originPoint extent: extentPoint + Answer a rectangle with the given origin and size  -File: gst-base.info, Node: RunArray-accessing, Next: RunArray-adding, Prev: RunArray class-instance creation, Up: RunArray +File: gst-base.info, Node: Rectangle-accessing, Next: Rectangle-copying, Prev: Rectangle class-instance creation, Up: Rectangle -1.139.2 RunArray: accessing ---------------------------- +1.138.2 Rectangle: accessing +---------------------------- -at: anIndex - Answer the element at index anIndex +bottom + Answer the corner's y of the receiver -at: anIndex put: anObject - Replace the element at index anIndex with anObject and answer - anObject +bottom: aNumber + Set the corner's y of the receiver +bottomCenter + Answer the center of the receiver's bottom side - -File: gst-base.info, Node: RunArray-adding, Next: RunArray-basic, Prev: RunArray-accessing, Up: RunArray +bottomLeft + Answer the bottom-left corner of the receiver -1.139.3 RunArray: adding ------------------------- +bottomLeft: aPoint + Answer the receiver with the bottom-left changed to aPoint -add: anObject afterIndex: anIndex - Add anObject after the element at index anIndex +bottomRight + Answer the bottom-right corner of the receiver -addAll: aCollection afterIndex: anIndex - Add all the elements of aCollection after the one at index - anIndex. If aCollection is unordered, its elements could be added - in an order which is not the #do: order +bottomRight: aPoint + Change the bottom-right corner of the receiver -addAllFirst: aCollection - Add all the elements of aCollection at the beginning of the - receiver. If aCollection is unordered, its elements could be added - in an order which is not the #do: order +center + Answer the center of the receiver -addAllLast: aCollection - Add all the elements of aCollection at the end of the receiver. If - aCol- lection is unordered, its elements could be added in an - order which is not the #do: order +corner + Answer the corner of the receiver + +corner: aPoint + Set the corner of the receiver + +extent + Answer the extent of the receiver + +extent: aPoint + Change the size of the receiver, keeping the origin the same + +height + Answer the height of the receiver + +height: aNumber + Set the height of the receiver + +left + Answer the x of the left edge of the receiver -addFirst: anObject - Add anObject at the beginning of the receiver. Watch out: this - operation can cause serious performance pitfalls +left: aValue + Set the x of the left edge of the receiver -addLast: anObject - Add anObject at the end of the receiver +left: l top: t right: r bottom: b + Change all four the coordinates of the receiver's corners +leftCenter + Answer the center of the receiver's left side - -File: gst-base.info, Node: RunArray-basic, Next: RunArray-copying, Prev: RunArray-adding, Up: RunArray +origin + Answer the top-left corner of the receiver -1.139.4 RunArray: basic ------------------------ +origin: aPoint + Change the top-left corner of the receiver to aPoint -first - Answer the first element in the receiver +origin: pnt1 corner: pnt2 + Change both the origin (top-left corner) and the corner + (bottom-right corner) of the receiver -last - Answer the last element of the receiver +origin: pnt1 extent: pnt2 + Change the top-left corner and the size of the receiver -size - Answer the number of elements in the receiver +right + Answer the x of the bottom-right corner of the receiver +right: aNumber + Change the x of the bottom-right corner of the receiver - -File: gst-base.info, Node: RunArray-copying, Next: RunArray-enumerating, Prev: RunArray-basic, Up: RunArray +rightCenter + Answer the center of the receiver's right side -1.139.5 RunArray: copying -------------------------- +top + Answer the y of the receiver's top-left corner -deepCopy - Answer a copy of the receiver containing copies of the receiver's - elements (#copy is used to obtain them) +top: aValue + Change the y of the receiver's top-left corner -shallowCopy - Answer a copy of the receiver. The elements are not copied +topCenter + Answer the center of the receiver's top side +topLeft + Answer the receiver's top-left corner - -File: gst-base.info, Node: RunArray-enumerating, Next: RunArray-removing, Prev: RunArray-copying, Up: RunArray +topLeft: aPoint + Change the receiver's top-left corner's coordinates to aPoint -1.139.6 RunArray: enumerating ------------------------------ +topRight + Answer the receiver's top-right corner -do: aBlock - Enumerate all the objects in the receiver, passing each one to - aBlock +topRight: aPoint + Change the receiver's top-right corner to aPoint -objectsAndRunLengthsDo: aBlock - Enumerate all the runs in the receiver, passing to aBlock two - parameters for every run: the first is the repeated object, the - second is the number of copies +width + Answer the receiver's width + +width: aNumber + Change the receiver's width to aNumber  -File: gst-base.info, Node: RunArray-removing, Next: RunArray-searching, Prev: RunArray-enumerating, Up: RunArray +File: gst-base.info, Node: Rectangle-copying, Next: Rectangle-printing, Prev: Rectangle-accessing, Up: Rectangle -1.139.7 RunArray: removing +1.138.3 Rectangle: copying -------------------------- -removeAtIndex: anIndex - Remove the object at index anIndex from the receiver and answer the - removed object - -removeFirst - Remove the first object from the receiver and answer the removed - object - -removeLast - Remove the last object from the receiver and answer the removed - object +copy + Return a deep copy of the receiver for safety.  -File: gst-base.info, Node: RunArray-searching, Next: RunArray-testing, Prev: RunArray-removing, Up: RunArray +File: gst-base.info, Node: Rectangle-printing, Next: Rectangle-rectangle functions, Prev: Rectangle-copying, Up: Rectangle -1.139.8 RunArray: searching +1.138.4 Rectangle: printing --------------------------- -indexOf: anObject startingAt: anIndex ifAbsent: aBlock - Answer the index of the first copy of anObject in the receiver, - starting the search at the element at index anIndex. If no equal - object is found, answer the result of evaluating aBlock +printOn: aStream + Print a representation of the receiver on aStream + +storeOn: aStream + Store Smalltalk code compiling to the receiver on aStream  -File: gst-base.info, Node: RunArray-testing, Prev: RunArray-searching, Up: RunArray +File: gst-base.info, Node: Rectangle-rectangle functions, Next: Rectangle-testing, Prev: Rectangle-printing, Up: Rectangle -1.139.9 RunArray: testing -------------------------- +1.138.5 Rectangle: rectangle functions +-------------------------------------- -= anObject - Answer true if the receiver is equal to anObject +amountToTranslateWithin: aRectangle + Answer a Point so that if aRectangle is translated by that point, + its origin lies within the receiver's. -hash - Answer an hash value for the receiver +area + Answer the receiver's area. The area is the width times the height, + so it is possible for it to be negative if the rectangle is not + normalized. +areasOutside: aRectangle + Answer a collection of rectangles containing the parts of the + receiver outside of aRectangle. For all points in the receiver, + but outside aRectangle, exactly one rectangle in the collection + will contain that point. - -File: gst-base.info, Node: ScaledDecimal, Next: SecurityPolicy, Prev: RunArray, Up: Base classes +expandBy: delta + Answer a new rectangle that is the receiver expanded by aValue: if + aValue is a rectangle, calculate origin=origin-aValue origin, + corner=corner+aValue corner; else calculate origin=origin-aValue, + corner=corner+aValue. -1.140 ScaledDecimal -=================== +insetBy: delta + Answer a new rectangle that is the receiver inset by aValue: if + aValue is a rectangle, calculate origin=origin+aValue origin, + corner=corner-aValue corner; else calculate origin=origin+aValue, + corner=corner-aValue. -Defined in namespace Smalltalk -Superclass: Number -Category: Language-Data types - ScaledDecimal provides a numeric representation of fixed point - decimal numbers able to accurately represent decimal fractions. - It supports unbounded precision, with no limit to the number of - digits before and after the decimal point. +insetOriginBy: originDelta corner: cornerDelta + Answer a new rectangle that is the receiver inset so that + origin=origin+originDelta, corner=corner-cornerDelta. The deltas + can be points or numbers -* Menu: +intersect: aRectangle + Answers the rectangle (if any) created by the overlap of + rectangles A and B. Answers nil if the rectangles do not overlap + +merge: aRectangle + Answer a new rectangle which is the smallest rectangle containing + both the receiver and aRectangle. + +translatedToBeWithin: aRectangle + Answer a copy of the receiver that does not extend beyond + aRectangle. -* ScaledDecimal class-instance creation:: (class) -* ScaledDecimal-arithmetic:: (instance) -* ScaledDecimal-coercion:: (instance) -* ScaledDecimal-comparing:: (instance) -* ScaledDecimal-constants:: (instance) -* ScaledDecimal-printing:: (instance) -* ScaledDecimal-storing:: (instance)  -File: gst-base.info, Node: ScaledDecimal class-instance creation, Next: ScaledDecimal-arithmetic, Up: ScaledDecimal +File: gst-base.info, Node: Rectangle-testing, Next: Rectangle-transforming, Prev: Rectangle-rectangle functions, Up: Rectangle -1.140.1 ScaledDecimal class: instance creation ----------------------------------------------- +1.138.6 Rectangle: testing +-------------------------- -newFromNumber: aNumber scale: scale - Answer a new instance of ScaledDecimal, representing a decimal - fraction with a decimal representation considered valid up to the - scale-th digit. += aRectangle + Answer whether the receiver is equal to aRectangle +contains: aRectangle + Answer true if the receiver contains (see containsPoint:) both + aRectangle's origin and aRectangle's corner - -File: gst-base.info, Node: ScaledDecimal-arithmetic, Next: ScaledDecimal-coercion, Prev: ScaledDecimal class-instance creation, Up: ScaledDecimal +containsPoint: aPoint + Answer true if aPoint is equal to, or below and to the right of, + the receiver's origin; and aPoint is above and to the left of the + receiver's corner -1.140.2 ScaledDecimal: arithmetic ---------------------------------- +hash + Answer an hash value for the receiver -* aNumber - Multiply two numbers and answer the result. +intersects: aRectangle + Answer true if the receiver intersect aRectangle, i.e. if it + contains (see containsPoint:) any of aRectangle corners or if + aRectangle contains the receiver -+ aNumber - Sum two numbers and answer the result. -- aNumber - Subtract aNumber from the receiver and answer the result. + +File: gst-base.info, Node: Rectangle-transforming, Next: Rectangle-truncation and round off, Prev: Rectangle-testing, Up: Rectangle -/ aNumber - Divide two numbers and answer the result. +1.138.7 Rectangle: transforming +------------------------------- -// aNumber - Answer the integer quotient after dividing the receiver by aNumber - with truncation towards negative infinity. +moveBy: aPoint + Change the receiver so that the origin and corner are shifted by + aPoint -\\ aNumber - Answer the remainder after integer division the receiver by aNumber - with truncation towards negative infinity. +moveTo: aPoint + Change the receiver so that the origin moves to aPoint and the size + remains unchanged +scaleBy: scale + Answer a copy of the receiver in which the origin and corner are + multiplied by scale - -File: gst-base.info, Node: ScaledDecimal-coercion, Next: ScaledDecimal-comparing, Prev: ScaledDecimal-arithmetic, Up: ScaledDecimal +translateBy: factor + Answer a copy of the receiver in which the origin and corner are + shifted by aPoint -1.140.3 ScaledDecimal: coercion -------------------------------- -asCNumber - Convert the receiver to a kind of number that is understood by the - C call-out mechanism. + +File: gst-base.info, Node: Rectangle-truncation and round off, Prev: Rectangle-transforming, Up: Rectangle -asFloatD - Answer the receiver, converted to a FloatD +1.138.8 Rectangle: truncation and round off +------------------------------------------- -asFloatE - Answer the receiver, converted to a FloatE +rounded + Answer a copy of the receiver with the coordinates rounded to the + nearest integers -asFloatQ - Answer the receiver, converted to a FloatQ -asFraction - Answer the receiver, converted to a Fraction + +File: gst-base.info, Node: RecursionLock, Next: Regex, Prev: Rectangle, Up: Base classes -ceiling - Answer the receiver, converted to an Integer and truncated towards - +infinity. +1.139 RecursionLock +=================== -coerce: aNumber - Answer aNumber, converted to a ScaledDecimal with the same scale - as the receiver. +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes -fractionPart - Answer the fractional part of the receiver. +* Menu: + +* RecursionLock class-instance creation:: (class) +* RecursionLock-accessing:: (instance) +* RecursionLock-mutual exclusion:: (instance) +* RecursionLock-printing:: (instance) -generality - Return the receiver's generality + +File: gst-base.info, Node: RecursionLock class-instance creation, Next: RecursionLock-accessing, Up: RecursionLock -integerPart - Answer the fractional part of the receiver. +1.139.1 RecursionLock class: instance creation +---------------------------------------------- -truncated - Answer the receiver, converted to an Integer and truncated towards - -infinity. +new + Answer a new semaphore  -File: gst-base.info, Node: ScaledDecimal-comparing, Next: ScaledDecimal-constants, Prev: ScaledDecimal-coercion, Up: ScaledDecimal +File: gst-base.info, Node: RecursionLock-accessing, Next: RecursionLock-mutual exclusion, Prev: RecursionLock class-instance creation, Up: RecursionLock -1.140.4 ScaledDecimal: comparing +1.139.2 RecursionLock: accessing -------------------------------- -< aNumber - Answer whether the receiver is less than arg. - -<= aNumber - Answer whether the receiver is less than or equal to arg. - -= arg - Answer whether the receiver is equal to arg. +isOwnerProcess + Answer whether the receiver is the owner of the lock. -> aNumber - Answer whether the receiver is greater than arg. +name + Answer a user-defined name for the lock. ->= aNumber - Answer whether the receiver is greater than or equal to arg. +name: aString + Set to aString the user-defined name for the lock. -hash - Answer an hash value for the receiver. +waitingProcesses + Answer the set of processes that are waiting on the semaphore. -~= arg - Answer whether the receiver is not equal arg. +wouldBlock + Answer whether sending #wait to the receiver would suspend the + active process.  -File: gst-base.info, Node: ScaledDecimal-constants, Next: ScaledDecimal-printing, Prev: ScaledDecimal-comparing, Up: ScaledDecimal - -1.140.5 ScaledDecimal: constants --------------------------------- +File: gst-base.info, Node: RecursionLock-mutual exclusion, Next: RecursionLock-printing, Prev: RecursionLock-accessing, Up: RecursionLock -one - Answer the receiver's representation of one. +1.139.3 RecursionLock: mutual exclusion +--------------------------------------- -zero - Answer the receiver's representation of zero. +critical: aBlock + Wait for the receiver to be free, execute aBlock and signal the + receiver again. Return the result of evaluating aBlock.  -File: gst-base.info, Node: ScaledDecimal-printing, Next: ScaledDecimal-storing, Prev: ScaledDecimal-constants, Up: ScaledDecimal +File: gst-base.info, Node: RecursionLock-printing, Prev: RecursionLock-mutual exclusion, Up: RecursionLock -1.140.6 ScaledDecimal: printing +1.139.4 RecursionLock: printing ------------------------------- -displayOn: aStream - Print a representation of the receiver on aStream, intended to be - directed to a user. In this particular case, the `scale' part of - the #printString is not emitted. - printOn: aStream - Print a representation of the receiver on aStream. + Print a human-readable represention of the receiver on aStream.  -File: gst-base.info, Node: ScaledDecimal-storing, Prev: ScaledDecimal-printing, Up: ScaledDecimal +File: gst-base.info, Node: Regex, Next: RegexResults, Prev: RecursionLock, Up: Base classes -1.140.7 ScaledDecimal: storing ------------------------------- +1.140 Regex +=========== -isLiteralObject - Answer whether the receiver is expressible as a Smalltalk literal. +Defined in namespace Smalltalk +Superclass: Object +Category: Collections-Text + A Regex is a read-only string for which the regular expression + matcher can cache a compiled representation, thus speeding up + matching. Regex objects are constructed automatically by methods + that expect to match many times the same regular expression, but + can also be constructed explicitly sending #asRegex to a String or + Symbol. -storeLiteralOn: aStream - Store on aStream some Smalltalk code which compiles to the receiver + Creation of Regex objects inside a loop is of course slower than + creating them outside the loop, but special care is taken so that + the same Regex object is used whenever possible (when converting + Strings to Regex, the cache is sought for an equivalent, already + constructed Regex). -storeOn: aStream - Print Smalltalk code that compiles to the receiver on aStream. +* Menu: +* Regex class-instance creation:: (class) +* Regex-basic:: (instance) +* Regex-conversion:: (instance) +* Regex-printing:: (instance)  -File: gst-base.info, Node: SecurityPolicy, Next: Semaphore, Prev: ScaledDecimal, Up: Base classes +File: gst-base.info, Node: Regex class-instance creation, Next: Regex-basic, Up: Regex -1.141 SecurityPolicy -==================== +1.140.1 Regex class: instance creation +-------------------------------------- -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Security - I am the class that represents which operations that could harm - the system's security are allowed or denied to a particular class. - If a class does not have a policy, it is allowed everything if it - is trusted, and denied everything if it is untrusted +fromString: aString + Like `aString asRegex'. -* Menu: +new + Do not send this message. -* SecurityPolicy-modifying:: (instance) -* SecurityPolicy-querying:: (instance)  -File: gst-base.info, Node: SecurityPolicy-modifying, Next: SecurityPolicy-querying, Up: SecurityPolicy - -1.141.1 SecurityPolicy: modifying ---------------------------------- - -addPermission: aPermission - Not commented. +File: gst-base.info, Node: Regex-basic, Next: Regex-conversion, Prev: Regex class-instance creation, Up: Regex -owner: aClass - Not commented. +1.140.2 Regex: basic +-------------------- -removePermission: aPermission - Not commented. +at: anIndex put: anObject + Fail. Regex objects are read-only. -withOwner: aClass - Not commented. +copy + Answer the receiver; instances of Regex are identity objects + because their only purpose is to ease caching, and we obtain + better caching if we avoid copying Regex objects  -File: gst-base.info, Node: SecurityPolicy-querying, Prev: SecurityPolicy-modifying, Up: SecurityPolicy +File: gst-base.info, Node: Regex-conversion, Next: Regex-printing, Prev: Regex-basic, Up: Regex -1.141.2 SecurityPolicy: querying --------------------------------- +1.140.3 Regex: conversion +------------------------- -check: aPermission - Not commented. +asRegex + Answer the receiver, which *is* a Regex! -implies: aPermission - Not commented. +asString + Answer the receiver, converted back to a String + +species + Answer `String'.  -File: gst-base.info, Node: Semaphore, Next: SequenceableCollection, Prev: SecurityPolicy, Up: Base classes +File: gst-base.info, Node: Regex-printing, Prev: Regex-conversion, Up: Regex -1.142 Semaphore -=============== +1.140.4 Regex: printing +----------------------- -Defined in namespace Smalltalk -Superclass: LinkedList -Category: Language-Processes - My instances represent counting semaphores. I provide methods for - signalling the semaphore's availability, and methods for waiting - for its availability. I also provide some methods for - implementing critical sections. +displayOn: aStream + Print a represention of the receiver on aStream. For most objects + this is simply its #printOn: representation, but for strings and + characters, superfluous dollars or extra pairs of quotes are + stripped. -* Menu: +displayString + Answer a String representing the receiver. For most objects this + is simply its #printString, but for strings and characters, + superfluous dollars or extra pair of quotes are stripped. + +printOn: aStream + Print a represention of the receiver on aStream. -* Semaphore class-instance creation:: (class) -* Semaphore-accessing:: (instance) -* Semaphore-builtins:: (instance) -* Semaphore-mutual exclusion:: (instance) -* Semaphore-printing:: (instance)  -File: gst-base.info, Node: Semaphore class-instance creation, Next: Semaphore-accessing, Up: Semaphore +File: gst-base.info, Node: RegexResults, Next: RootNamespace, Prev: Regex, Up: Base classes -1.142.1 Semaphore class: instance creation ------------------------------------------- +1.141 RegexResults +================== -forMutualExclusion - Answer a new semaphore with a signal on it. These semaphores are a - useful shortcut when you use semaphores as critical sections. +Defined in namespace Smalltalk +Superclass: Object +Category: Collections-Text + I hold the results of a regular expression match, and I can + reconstruct which parts of the matched string were assigned to + each subexpression. Methods such as #=~ return RegexResults + objects, while others transform the string directly without + passing the results object back to the caller. -new - Answer a new semaphore +* Menu: +* RegexResults-accessing:: (instance) +* RegexResults-testing:: (instance)  -File: gst-base.info, Node: Semaphore-accessing, Next: Semaphore-builtins, Prev: Semaphore class-instance creation, Up: Semaphore - -1.142.2 Semaphore: accessing ----------------------------- - -name - Answer a user-friendly name for the receiver - -name: aString - Answer a user-friendly name for the receiver +File: gst-base.info, Node: RegexResults-accessing, Next: RegexResults-testing, Up: RegexResults -waitingProcesses - Answer an Array of processes currently waiting on the receiver. +1.141.1 RegexResults: accessing +------------------------------- -wouldBlock - Answer whether waiting on the receiver would suspend the current - process. +asArray + If the regular expression was matched, return an Array with the + subexpressions that were present in the regular expression. +at: anIndex + If the regular expression was matched, return the text of the + anIndex-th subexpression in the successful match. - -File: gst-base.info, Node: Semaphore-builtins, Next: Semaphore-mutual exclusion, Prev: Semaphore-accessing, Up: Semaphore +from + If the regular expression was matched, return the index of the + first character in the successful match. -1.142.3 Semaphore: builtins ---------------------------- +fromAt: anIndex + If the regular expression was matched, return the index of the + first character of the anIndex-th subexpression in the successful + match. -lock - Without putting the receiver to sleep, force processes that try to - wait on the semaphore to block. Answer whether this was the case - even before. +intervalAt: anIndex + If the regular expression was matched, return an Interval for the + range of indices in the anIndex-th subexpression of the successful + match. -notify - Resume one of the processes that were waiting on the semaphore if - there were any. Do not leave a signal on the semaphore if no - process is waiting. +match + If the regular expression was matched, return the text of the + successful match. -notifyAll - Resume all the processes that were waiting on the semaphore if - there were any. Do not leave a signal on the semaphore if no - process is waiting. +matchInterval + If the regular expression was matched, return an Interval for the + range of indices of the successful match. -signal - Signal the receiver, resuming a waiting process' if there is one +size + If the regular expression was matched, return the number of + subexpressions that were present in the regular expression. -wait - Wait for the receiver to be signalled, suspending the executing - process if it is not yet +subject + If the regular expression was matched, return the text that was + matched against it. - are +to + If the regular expression was matched, return the index of the + last character in the successful match. -waitAfterSignalling: aSemaphore - Signal aSemaphore then, atomically, wait for the receiver to be - signalled, suspending the executing process if it is not yet. This - is needed to avoid race conditions when the #notify and #notifyAll - are used before waiting on receiver: otherwise, if a process sends - any of the two between the time aSemaphore is signaled and the time - the process starts waiting on the receiver, the notification is - lost. +toAt: anIndex + If the regular expression was matched, return the index of the last + character of the anIndex-th subexpression in the successful match.  -File: gst-base.info, Node: Semaphore-mutual exclusion, Next: Semaphore-printing, Prev: Semaphore-builtins, Up: Semaphore +File: gst-base.info, Node: RegexResults-testing, Prev: RegexResults-accessing, Up: RegexResults -1.142.4 Semaphore: mutual exclusion ------------------------------------ +1.141.2 RegexResults: testing +----------------------------- -critical: aBlock - Wait for the receiver to be free, execute aBlock and signal the - receiver again. Return the result of evaluating aBlock. +ifMatched: oneArgBlock + If the regular expression was matched, pass the receiver to + oneArgBlock and return its result. Otherwise, return nil. +ifMatched: oneArgBlock ifNotMatched: zeroArgBlock + If the regular expression was matched, evaluate oneArgBlock with + the receiver as the argument. If it was not, evaluate + zeroArgBlock. Answer the result of the block's evaluation. - -File: gst-base.info, Node: Semaphore-printing, Prev: Semaphore-mutual exclusion, Up: Semaphore +ifNotMatched: zeroArgBlock + If the regular expression was matched, return the receiver. If it + was not, evaluate zeroArgBlock and return its result. -1.142.5 Semaphore: printing ---------------------------- +ifNotMatched: zeroArgBlock ifMatched: oneArgBlock + If the regular expression was matched, evaluate oneArgBlock with + the receiver as the argument. If it was not, evaluate + zeroArgBlock. Answer the result of the block's evaluation. -printOn: aStream - Print a human-readable represention of the receiver on aStream. +matched + Answer whether the regular expression was matched  -File: gst-base.info, Node: SequenceableCollection, Next: Set, Prev: Semaphore, Up: Base classes +File: gst-base.info, Node: RootNamespace, Next: RunArray, Prev: RegexResults, Up: Base classes -1.143 SequenceableCollection -============================ +1.142 RootNamespace +=================== Defined in namespace Smalltalk -Superclass: Collection -Category: Collections-Sequenceable - My instances represent collections of objects that are ordered. I - provide some access and manipulation methods. +Superclass: AbstractNamespace +Category: Language-Implementation + I am a special form of dictionary. Classes hold on an instance of + me; it is called their `environment'. * Menu: -* SequenceableCollection class-instance creation:: (class) -* SequenceableCollection-basic:: (instance) -* SequenceableCollection-concatenating:: (instance) -* SequenceableCollection-copying SequenceableCollections:: (instance) -* SequenceableCollection-enumerating:: (instance) -* SequenceableCollection-replacing items:: (instance) -* SequenceableCollection-sorting:: (instance) -* SequenceableCollection-testing:: (instance) +* RootNamespace class-instance creation:: (class) +* RootNamespace-namespace hierarchy:: (instance) +* RootNamespace-overrides for superspaces:: (instance) +* RootNamespace-printing:: (instance)  -File: gst-base.info, Node: SequenceableCollection class-instance creation, Next: SequenceableCollection-basic, Up: SequenceableCollection +File: gst-base.info, Node: RootNamespace class-instance creation, Next: RootNamespace-namespace hierarchy, Up: RootNamespace -1.143.1 SequenceableCollection class: instance creation -------------------------------------------------------- +1.142.1 RootNamespace class: instance creation +---------------------------------------------- -join: aCollection separatedBy: sepCollection - Where aCollection is a collection of SequenceableCollections, - answer a new instance with all the elements therein, in order, - each separated by an occurrence of sepCollection. +new: spaceName + Create a new root namespace with the given name, and add to + Smalltalk a key that references it.  -File: gst-base.info, Node: SequenceableCollection-basic, Next: SequenceableCollection-concatenating, Prev: SequenceableCollection class-instance creation, Up: SequenceableCollection +File: gst-base.info, Node: RootNamespace-namespace hierarchy, Next: RootNamespace-overrides for superspaces, Prev: RootNamespace class-instance creation, Up: RootNamespace -1.143.2 SequenceableCollection: basic -------------------------------------- +1.142.2 RootNamespace: namespace hierarchy +------------------------------------------ -after: oldObject - Return the element after oldObject. Error if oldObject not found - or if no following object is available +siblings + Answer all the other root namespaces -allButFirst - Answer a copy of the receiver without the first object. +siblingsDo: aBlock + Evaluate aBlock once for each of the other root namespaces, + passing the namespace as a parameter. -allButFirst: n - Answer a copy of the receiver without the first n objects. -allButLast - Answer a copy of the receiver without the last object. + +File: gst-base.info, Node: RootNamespace-overrides for superspaces, Next: RootNamespace-printing, Prev: RootNamespace-namespace hierarchy, Up: RootNamespace -allButLast: n - Answer a copy of the receiver without the last n objects. +1.142.3 RootNamespace: overrides for superspaces +------------------------------------------------ -at: anIndex ifAbsent: aBlock - Answer the anIndex-th item of the collection, or evaluate aBlock - and answer the result if the index is out of range +inheritedKeys + Answer a Set of all the keys in the receiver and its superspaces -atAll: keyCollection - Answer a collection of the same kind returned by #collect:, that - only includes the values at the given indices. Fail if any of the - values in keyCollection is out of bounds for the receiver. - -atAll: aCollection put: anObject - Put anObject at every index contained in aCollection - -atAllPut: anObject - Put anObject at every index in the receiver - -atRandom - Return a random item of the receiver. - -before: oldObject - Return the element before oldObject. Error if oldObject not found - or if no preceding object is available +set: key to: newValue ifAbsent: aBlock + Assign newValue to the variable named as specified by `key'. This + method won't define a new variable; instead if the key is not + found it will search in superspaces and evaluate aBlock if it is + not found. Answer newValue. -first - Answer the first item in the receiver -first: n - Answer the first n items in the receiver + +File: gst-base.info, Node: RootNamespace-printing, Prev: RootNamespace-overrides for superspaces, Up: RootNamespace -fourth - Answer the fourth item in the receiver +1.142.4 RootNamespace: printing +------------------------------- -identityIncludes: anObject - Answer whether we include the anObject object +nameIn: aNamespace + Answer Smalltalk code compiling to the receiver when the current + namespace is aNamespace -identityIndexOf: anElement - Answer the index of the first occurrence of an object identical to - anElement in the receiver. Answer 0 if no item is found - -identityIndexOf: anElement ifAbsent: exceptionBlock - Answer the index of the first occurrence of an object identical to - anElement in the receiver. Invoke exceptionBlock and answer its - result if no item is found - -identityIndexOf: anElement startingAt: anIndex - Answer the first index > anIndex which contains an object identical - to anElement. Answer 0 if no item is found - -identityIndexOf: anObject startingAt: anIndex ifAbsent: exceptionBlock - Answer the first index > anIndex which contains an object exactly - identical to anObject. Invoke exceptionBlock and answer its - result if no item is found - -identityIndexOfLast: anElement ifAbsent: exceptionBlock - Answer the last index which contains an object identical to - anElement. Invoke exceptionBlock and answer its result if no item - is found +printOn: aStream in: aNamespace + Print on aStream some Smalltalk code compiling to the receiver + when the current namespace is aNamespace -includes: anObject - Answer whether we include anObject +storeOn: aStream + Store Smalltalk code compiling to the receiver -indexOf: anElement - Answer the index of the first occurrence of anElement in the - receiver. Answer 0 if no item is found - -indexOf: anElement ifAbsent: exceptionBlock - Answer the index of the first occurrence of anElement in the - receiver. Invoke exceptionBlock and answer its result if no item - is found - -indexOf: anElement startingAt: anIndex - Answer the first index > anIndex which contains anElement. Answer - 0 if no item is found - -indexOf: anElement startingAt: anIndex ifAbsent: exceptionBlock - Answer the first index > anIndex which contains anElement. Invoke - exceptionBlock and answer its result if no item is found - -indexOfLast: anElement ifAbsent: exceptionBlock - Answer the last index which contains anElement. Invoke - exceptionBlock and answer its result if no item is found - -indexOfSubCollection: aSubCollection - Answer the first index > anIndex at which starts a sequence of - items matching aSubCollection. Answer 0 if no such sequence is - found. - -indexOfSubCollection: aSubCollection ifAbsent: exceptionBlock - Answer the first index > anIndex at which starts a sequence of - items matching aSubCollection. Answer 0 if no such sequence is - found. - -indexOfSubCollection: aSubCollection startingAt: anIndex - Answer the first index > anIndex at which starts a sequence of - items matching aSubCollection. Answer 0 if no such sequence is - found. - -indexOfSubCollection: aSubCollection startingAt: anIndex ifAbsent: exceptionBlock - Answer the first index > anIndex at which starts a sequence of - items matching aSubCollection. Invoke exceptionBlock and answer - its result if no such sequence is found -last - Answer the last item in the receiver + +File: gst-base.info, Node: RunArray, Next: ScaledDecimal, Prev: RootNamespace, Up: Base classes -last: n - Answer the last n items in the receiver +1.143 RunArray +============== -second - Answer the second item in the receiver +Defined in namespace Smalltalk +Superclass: OrderedCollection +Category: Collections-Sequenceable + My instances are OrderedCollections that automatically apply Run + Length Encoding compression to the things they store. Be careful + when using me: I can provide great space savings, but my instances + don't grant linear access time. RunArray's behavior currently is + similar to that of OrderedCollection (you can add elements to + RunArrays); maybe it should behave like an ArrayedCollection. -third - Answer the third item in the receiver +* Menu: +* RunArray class-instance creation:: (class) +* RunArray-accessing:: (instance) +* RunArray-adding:: (instance) +* RunArray-basic:: (instance) +* RunArray-copying:: (instance) +* RunArray-enumerating:: (instance) +* RunArray-removing:: (instance) +* RunArray-searching:: (instance) +* RunArray-testing:: (instance)  -File: gst-base.info, Node: SequenceableCollection-concatenating, Next: SequenceableCollection-copying SequenceableCollections, Prev: SequenceableCollection-basic, Up: SequenceableCollection - -1.143.3 SequenceableCollection: concatenating ---------------------------------------------- - -join - Answer a new collection like my first element, with all the - elements (in order) of all my elements, which should be - collections. +File: gst-base.info, Node: RunArray class-instance creation, Next: RunArray-accessing, Up: RunArray - I use my first element instead of myself as a prototype because my - elements are more likely to share the desired properties than I - am, such as in: +1.143.1 RunArray class: instance creation +----------------------------------------- - #('hello, ' 'world') join => 'hello, world' +new + Answer an empty RunArray -join: sepCollection - Answer a new collection like my first element, with all the - elements (in order) of all my elements (which should be - collections) separated by sepCollection. +new: aSize + Answer a RunArray with space for aSize runs - I use my first element instead of myself as a prototype because my - elements are more likely to share the desired properties than I - am, such as in: - #('hello,' 'world') join: ' ' => 'hello, world' + +File: gst-base.info, Node: RunArray-accessing, Next: RunArray-adding, Prev: RunArray class-instance creation, Up: RunArray -with: aSequenceableCollection - Return an Array with the same size as the receiver and - aSequenceableCollection, each element of which is a 2-element - Arrays including one element from the receiver and one from - aSequenceableCollection. +1.143.2 RunArray: accessing +--------------------------- -with: seqColl1 with: seqColl2 - Return an Array with the same size as the receiver and the - arguments, each element of which is a 3-element Arrays including - one element from the receiver and one from each argument. +at: anIndex + Answer the element at index anIndex -with: seqColl1 with: seqColl2 with: seqColl3 - Return an Array with the same size as the receiver and the - arguments, each element of which is a 4-element Arrays including - one element from the receiver and one from each argument. +at: anIndex put: anObject + Replace the element at index anIndex with anObject and answer + anObject  -File: gst-base.info, Node: SequenceableCollection-copying SequenceableCollections, Next: SequenceableCollection-enumerating, Prev: SequenceableCollection-concatenating, Up: SequenceableCollection +File: gst-base.info, Node: RunArray-adding, Next: RunArray-basic, Prev: RunArray-accessing, Up: RunArray -1.143.4 SequenceableCollection: copying SequenceableCollections ---------------------------------------------------------------- +1.143.3 RunArray: adding +------------------------ -, aSequenceableCollection - Append aSequenceableCollection at the end of the receiver (using - #add:), and answer a new collection +add: anObject afterIndex: anIndex + Add anObject after the element at index anIndex -copyAfter: anObject - Answer a new collection holding all the elements of the receiver - after the first occurrence of anObject, up to the last. +addAll: aCollection afterIndex: anIndex + Add all the elements of aCollection after the one at index + anIndex. If aCollection is unordered, its elements could be added + in an order which is not the #do: order -copyAfterLast: anObject - Answer a new collection holding all the elements of the receiver - after the last occurrence of anObject, up to the last. +addAllFirst: aCollection + Add all the elements of aCollection at the beginning of the + receiver. If aCollection is unordered, its elements could be added + in an order which is not the #do: order -copyFrom: start - Answer a new collection containing all the items in the receiver - from the start-th. +addAllLast: aCollection + Add all the elements of aCollection at the end of the receiver. If + aCol- lection is unordered, its elements could be added in an + order which is not the #do: order -copyFrom: start to: stop - Answer a new collection containing all the items in the receiver - from the start-th and to the stop-th +addFirst: anObject + Add anObject at the beginning of the receiver. Watch out: this + operation can cause serious performance pitfalls -copyReplaceAll: oldSubCollection with: newSubCollection - Answer a new collection in which all the sequences matching - oldSubCollection are replaced with newSubCollection +addLast: anObject + Add anObject at the end of the receiver -copyReplaceFrom: start to: stop with: replacementCollection - Answer a new collection of the same class as the receiver that - contains the same elements as the receiver, in the same order, - except for elements from index `start' to index `stop'. - If start < stop, these are replaced by the contents of the - replacementCollection. Instead, If start = (stop + 1), like in - `copyReplaceFrom: 4 to: 3 with: anArray', then every element of - the receiver will be present in the answered copy; the operation - will be an append if stop is equal to the size of the receiver or, - if it is not, an insert before index `start'. + +File: gst-base.info, Node: RunArray-basic, Next: RunArray-copying, Prev: RunArray-adding, Up: RunArray -copyReplaceFrom: start to: stop withObject: anObject - Answer a new collection of the same class as the receiver that - contains the same elements as the receiver, in the same order, - except for elements from index `start' to index `stop'. +1.143.4 RunArray: basic +----------------------- - If start < stop, these are replaced by stop-start+1 copies of - anObject. Instead, If start = (stop + 1), then every element of - the receiver will be present in the answered copy; the operation - will be an append if stop is equal to the size of the receiver or, - if it is not, an insert before index `start'. +first + Answer the first element in the receiver -copyUpTo: anObject - Answer a new collection holding all the elements of the receiver - from the first up to the first occurrence of anObject, excluded. +last + Answer the last element of the receiver -copyUpToLast: anObject - Answer a new collection holding all the elements of the receiver - from the first up to the last occurrence of anObject, excluded. +size + Answer the number of elements in the receiver  -File: gst-base.info, Node: SequenceableCollection-enumerating, Next: SequenceableCollection-replacing items, Prev: SequenceableCollection-copying SequenceableCollections, Up: SequenceableCollection +File: gst-base.info, Node: RunArray-copying, Next: RunArray-enumerating, Prev: RunArray-basic, Up: RunArray -1.143.5 SequenceableCollection: enumerating -------------------------------------------- +1.143.5 RunArray: copying +------------------------- -anyOne - Answer an unspecified element of the collection. +deepCopy + Answer a copy of the receiver containing copies of the receiver's + elements (#copy is used to obtain them) -do: aBlock - Evaluate aBlock for all the elements in the sequenceable collection +shallowCopy + Answer a copy of the receiver. The elements are not copied -do: aBlock separatedBy: sepBlock - Evaluate aBlock for all the elements in the sequenceable - collection. Between each element, evaluate sepBlock without - parameters. - -doWithIndex: aBlock - Evaluate aBlock for all the elements in the sequenceable - collection, passing the index of each element as the second - parameter. This method is mantained for backwards compatibility - and is not mandated by the ANSI standard; use #keysAndValuesDo: - -findFirst: aBlock - Returns the index of the first element of the sequenceable - collection for which aBlock returns true, or 0 if none - -findLast: aBlock - Returns the index of the last element of the sequenceable - collection for which aBlock returns true, or 0 if none does -fold: binaryBlock - First, pass to binaryBlock the first and second elements of the - receiver; for each subsequent element, pass the result of the - previous evaluation and an element. Answer the result of the last - invocation, or the first element if the collection has size 1. - Fail if the collection is empty. + +File: gst-base.info, Node: RunArray-enumerating, Next: RunArray-removing, Prev: RunArray-copying, Up: RunArray -from: startIndex to: stopIndex do: aBlock - Evaluate aBlock for all the elements in the sequenceable - collection whose indices are in the range index to stopIndex - -from: startIndex to: stopIndex doWithIndex: aBlock - Evaluate aBlock for all the elements in the sequenceable - collection whose indices are in the range index to stopIndex, - passing the index of each element as the second parameter. This - method is mantained for backwards compatibility and is not - mandated by the ANSI standard; use #from:to:keysAndValuesDo: - -from: startIndex to: stopIndex keysAndValuesDo: aBlock - Evaluate aBlock for all the elements in the sequenceable - collection whose indices are in the range index to stopIndex, - passing the index of each element as the first parameter and the - element as the second. +1.143.6 RunArray: enumerating +----------------------------- -keys - Return an Interval corresponding to the valid indices in the - receiver. +do: aBlock + Enumerate all the objects in the receiver, passing each one to + aBlock -keysAndValuesDo: aBlock - Evaluate aBlock for all the elements in the sequenceable - collection, passing the index of each element as the first - parameter and the element as the second. +objectsAndRunLengthsDo: aBlock + Enumerate all the runs in the receiver, passing to aBlock two + parameters for every run: the first is the repeated object, the + second is the number of copies -readStream - Answer a ReadStream streaming on the receiver -readWriteStream - Answer a ReadWriteStream which streams on the receiver + +File: gst-base.info, Node: RunArray-removing, Next: RunArray-searching, Prev: RunArray-enumerating, Up: RunArray -reverse - Answer the receivers' contents in reverse order +1.143.7 RunArray: removing +-------------------------- -reverseDo: aBlock - Evaluate aBlock for all elements in the sequenceable collection, - from the last to the first. +removeAtIndex: anIndex + Remove the object at index anIndex from the receiver and answer the + removed object -with: aSequenceableCollection collect: aBlock - Evaluate aBlock for each pair of elements took respectively from - the re- ceiver and from aSequenceableCollection; answer a - collection of the same kind of the receiver, made with the block's - return values. Fail if the receiver has not the same size as - aSequenceableCollection. +removeFirst + Remove the first object from the receiver and answer the removed + object -with: aSequenceableCollection do: aBlock - Evaluate aBlock for each pair of elements took respectively from - the re- ceiver and from aSequenceableCollection. Fail if the - receiver has not the same size as aSequenceableCollection. +removeLast + Remove the last object from the receiver and answer the removed + object  -File: gst-base.info, Node: SequenceableCollection-replacing items, Next: SequenceableCollection-sorting, Prev: SequenceableCollection-enumerating, Up: SequenceableCollection - -1.143.6 SequenceableCollection: replacing items ------------------------------------------------ - -replaceAll: anObject with: anotherObject - In the receiver, replace every occurrence of anObject with - anotherObject. - -replaceFrom: start to: stop with: replacementCollection - Replace the items from start to stop with replacementCollection's - items from 1 to stop-start+1 (in unexpected order if the - collection is not sequenceable). +File: gst-base.info, Node: RunArray-searching, Next: RunArray-testing, Prev: RunArray-removing, Up: RunArray -replaceFrom: start to: stop with: replacementCollection startingAt: repStart - Replace the items from start to stop with replacementCollection's - items from repStart to repStart+stop-start +1.143.8 RunArray: searching +--------------------------- -replaceFrom: anIndex to: stopIndex withObject: replacementObject - Replace every item from start to stop with replacementObject. +indexOf: anObject startingAt: anIndex ifAbsent: aBlock + Answer the index of the first copy of anObject in the receiver, + starting the search at the element at index anIndex. If no equal + object is found, answer the result of evaluating aBlock  -File: gst-base.info, Node: SequenceableCollection-sorting, Next: SequenceableCollection-testing, Prev: SequenceableCollection-replacing items, Up: SequenceableCollection +File: gst-base.info, Node: RunArray-testing, Prev: RunArray-searching, Up: RunArray -1.143.7 SequenceableCollection: sorting ---------------------------------------- +1.143.9 RunArray: testing +------------------------- -sort - Sort the contents of the receiver according to the default sort - block, which uses #<= to compare items. += anObject + Answer true if the receiver is equal to anObject -sortBy: sortBlock - Sort the contents of the receiver according to the given sort - block, which accepts pair of items and returns true if the first - item is less than the second one. +hash + Answer an hash value for the receiver  -File: gst-base.info, Node: SequenceableCollection-testing, Prev: SequenceableCollection-sorting, Up: SequenceableCollection - -1.143.8 SequenceableCollection: testing ---------------------------------------- - -= aCollection - Answer whether the receiver's items match those in aCollection +File: gst-base.info, Node: ScaledDecimal, Next: SecurityPolicy, Prev: RunArray, Up: Base classes -hash - Answer an hash value for the receiver +1.144 ScaledDecimal +=================== -inspect - Print all the instance variables and context of the receiver on the - Transcript +Defined in namespace Smalltalk +Superclass: Number +Category: Language-Data types + ScaledDecimal provides a numeric representation of fixed point + decimal numbers able to accurately represent decimal fractions. + It supports unbounded precision, with no limit to the number of + digits before and after the decimal point. -isSequenceable - Answer whether the receiver can be accessed by a numeric index with - #at:/#at:put:. +* Menu: +* ScaledDecimal class-instance creation:: (class) +* ScaledDecimal-arithmetic:: (instance) +* ScaledDecimal-coercion:: (instance) +* ScaledDecimal-comparing:: (instance) +* ScaledDecimal-constants:: (instance) +* ScaledDecimal-printing:: (instance) +* ScaledDecimal-storing:: (instance)  -File: gst-base.info, Node: Set, Next: SharedQueue, Prev: SequenceableCollection, Up: Base classes - -1.144 Set -========= +File: gst-base.info, Node: ScaledDecimal class-instance creation, Next: ScaledDecimal-arithmetic, Up: ScaledDecimal -Defined in namespace Smalltalk -Superclass: HashedCollection -Category: Collections-Unordered - I am the typical set object; I also known how to do arithmetic on - my instances. +1.144.1 ScaledDecimal class: instance creation +---------------------------------------------- -* Menu: +newFromNumber: aNumber scale: scale + Answer a new instance of ScaledDecimal, representing a decimal + fraction with a decimal representation considered valid up to the + scale-th digit. -* Set-arithmetic:: (instance) -* Set-awful ST-80 compatibility hacks:: (instance) -* Set-comparing:: (instance)  -File: gst-base.info, Node: Set-arithmetic, Next: Set-awful ST-80 compatibility hacks, Up: Set - -1.144.1 Set: arithmetic ------------------------ +File: gst-base.info, Node: ScaledDecimal-arithmetic, Next: ScaledDecimal-coercion, Prev: ScaledDecimal class-instance creation, Up: ScaledDecimal -& aSet - Compute the set intersection of the receiver and aSet. +1.144.2 ScaledDecimal: arithmetic +--------------------------------- -+ aSet - Compute the set union of the receiver and aSet. +* aNumber + Multiply two numbers and answer the result. -- aSet - Compute the set difference of the receiver and aSet. ++ aNumber + Sum two numbers and answer the result. +- aNumber + Subtract aNumber from the receiver and answer the result. - -File: gst-base.info, Node: Set-awful ST-80 compatibility hacks, Next: Set-comparing, Prev: Set-arithmetic, Up: Set +/ aNumber + Divide two numbers and answer the result. -1.144.2 Set: awful ST-80 compatibility hacks --------------------------------------------- +// aNumber + Answer the integer quotient after dividing the receiver by aNumber + with truncation towards negative infinity. -findObjectIndex: object - Tries to see if anObject exists as an indexed variable. As soon as - nil or anObject is found, the index of that slot is answered +\\ aNumber + Answer the remainder after integer division the receiver by aNumber + with truncation towards negative infinity.  -File: gst-base.info, Node: Set-comparing, Prev: Set-awful ST-80 compatibility hacks, Up: Set +File: gst-base.info, Node: ScaledDecimal-coercion, Next: ScaledDecimal-comparing, Prev: ScaledDecimal-arithmetic, Up: ScaledDecimal -1.144.3 Set: comparing ----------------------- +1.144.3 ScaledDecimal: coercion +------------------------------- -< aSet - Answer whether the receiver is a strict subset of aSet +asCNumber + Convert the receiver to a kind of number that is understood by the + C call-out mechanism. -<= aSet - Answer whether the receiver is a subset of aSet +asFloatD + Answer the receiver, converted to a FloatD -> aSet - Answer whether the receiver is a strict superset of aSet +asFloatE + Answer the receiver, converted to a FloatE ->= aSet - Answer whether the receiver is a superset of aSet +asFloatQ + Answer the receiver, converted to a FloatQ +asFraction + Answer the receiver, converted to a Fraction - -File: gst-base.info, Node: SharedQueue, Next: Signal, Prev: Set, Up: Base classes +ceiling + Answer the receiver, converted to an Integer and truncated towards + +infinity. -1.145 SharedQueue -================= +coerce: aNumber + Answer aNumber, converted to a ScaledDecimal with the same scale + as the receiver. -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Processes - My instances provide a guaranteed safe mechanism to allow for - communication between processes. All access to the underlying - data structures is controlled with critical sections so that - things proceed smoothly. +fractionPart + Answer the fractional part of the receiver. -* Menu: +generality + Return the receiver's generality -* SharedQueue class-instance creation:: (class) -* SharedQueue-accessing:: (instance) +integerPart + Answer the fractional part of the receiver. - -File: gst-base.info, Node: SharedQueue class-instance creation, Next: SharedQueue-accessing, Up: SharedQueue +truncated + Answer the receiver, converted to an Integer and truncated towards + -infinity. -1.145.1 SharedQueue class: instance creation --------------------------------------------- -new - Create a new instance of the receiver + +File: gst-base.info, Node: ScaledDecimal-comparing, Next: ScaledDecimal-constants, Prev: ScaledDecimal-coercion, Up: ScaledDecimal -sortBlock: sortBlock - Create a new instance of the receiver which implements a priority - queue with the given sort block +1.144.4 ScaledDecimal: comparing +-------------------------------- +< aNumber + Answer whether the receiver is less than arg. - -File: gst-base.info, Node: SharedQueue-accessing, Prev: SharedQueue class-instance creation, Up: SharedQueue +<= aNumber + Answer whether the receiver is less than or equal to arg. -1.145.2 SharedQueue: accessing ------------------------------- += arg + Answer whether the receiver is equal to arg. -isEmpty - Answer whether there is an object on the queue +> aNumber + Answer whether the receiver is greater than arg. -next - Wait for an object to be on the queue, then remove it and answer it +>= aNumber + Answer whether the receiver is greater than or equal to arg. -nextPut: value - Put value on the queue and answer it +hash + Answer an hash value for the receiver. -peek - Wait for an object to be on the queue if necessary, then answer the - same object that #next would answer without removing it. +~= arg + Answer whether the receiver is not equal arg.  -File: gst-base.info, Node: Signal, Next: SingletonProxy, Prev: SharedQueue, Up: Base classes +File: gst-base.info, Node: ScaledDecimal-constants, Next: ScaledDecimal-printing, Prev: ScaledDecimal-comparing, Up: ScaledDecimal -1.146 Signal -============ +1.144.5 ScaledDecimal: constants +-------------------------------- -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Exceptions - My instances describe an exception that has happened, and are - passed to exception handlers. Apart from containing information on - the generated exception and its arguments, they contain methods - that allow you to resume execution, leave the #on:do:... snippet, - and pass the exception to an handler with a lower priority. +one + Answer the receiver's representation of one. -* Menu: +zero + Answer the receiver's representation of zero. -* Signal-accessing:: (instance) -* Signal-copying:: (instance) -* Signal-exception handling:: (instance)  -File: gst-base.info, Node: Signal-accessing, Next: Signal-copying, Up: Signal - -1.146.1 Signal: accessing -------------------------- - -argument - Answer the first argument of the receiver +File: gst-base.info, Node: ScaledDecimal-printing, Next: ScaledDecimal-storing, Prev: ScaledDecimal-constants, Up: ScaledDecimal -argumentCount - Answer how many arguments the receiver has +1.144.6 ScaledDecimal: printing +------------------------------- -arguments - Answer the arguments of the receiver +displayOn: aStream + Print a representation of the receiver on aStream, intended to be + directed to a user. In this particular case, the `scale' part of + the #printString is not emitted. -basicMessageText - Answer an exception's message text. Do not override this method. +printOn: aStream + Print a representation of the receiver on aStream. -description - Answer the description of the raised exception -exception - Answer the CoreException that was raised + +File: gst-base.info, Node: ScaledDecimal-storing, Prev: ScaledDecimal-printing, Up: ScaledDecimal -messageText - Answer an exception's message text. +1.144.7 ScaledDecimal: storing +------------------------------ -messageText: aString - Set an exception's message text. +isLiteralObject + Answer whether the receiver is expressible as a Smalltalk literal. -tag - Answer an exception's tag value. If not specified, it is the same - as the message text. +storeLiteralOn: aStream + Store on aStream some Smalltalk code which compiles to the receiver -tag: anObject - Set an exception's tag value. If nil, the tag value will be the - same as the message text. +storeOn: aStream + Print Smalltalk code that compiles to the receiver on aStream.  -File: gst-base.info, Node: Signal-copying, Next: Signal-exception handling, Prev: Signal-accessing, Up: Signal - -1.146.2 Signal: copying ------------------------ +File: gst-base.info, Node: SecurityPolicy, Next: Semaphore, Prev: ScaledDecimal, Up: Base classes -postCopy - Modify the receiver so that it does not refer to any instantiated - exception handler. +1.145 SecurityPolicy +==================== +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Security + I am the class that represents which operations that could harm + the system's security are allowed or denied to a particular class. + If a class does not have a policy, it is allowed everything if it + is trusted, and denied everything if it is untrusted - -File: gst-base.info, Node: Signal-exception handling, Prev: Signal-copying, Up: Signal +* Menu: -1.146.3 Signal: exception handling ----------------------------------- +* SecurityPolicy-modifying:: (instance) +* SecurityPolicy-querying:: (instance) -context - Return the execution context for the #on:do: snippet + +File: gst-base.info, Node: SecurityPolicy-modifying, Next: SecurityPolicy-querying, Up: SecurityPolicy -defaultAction - Execute the default handler for the raised exception +1.145.1 SecurityPolicy: modifying +--------------------------------- -isNested - Answer whether the current exception handler is within the scope of - another handler for the same exception. +addPermission: aPermission + Not commented. -isResumable - Answer whether the exception that instantiated the receiver is - resumable. +owner: aClass + Not commented. -outer - Raise the exception that instantiated the receiver, passing the - same parameters. If the receiver is resumable and the evaluated - exception action resumes then the result returned from #outer will - be the resumption value of the evaluated exception action. If the - receiver is not resumable or if the exception action does not - resume then this message will not return, and #outer will be - equivalent to #pass. - -pass - Yield control to the enclosing exception action for the receiver. - Similar to #outer, but control does not return to the currently - active exception handler. - -resignalAs: replacementException - Reinstate all handlers and execute the handler for - `replacementException'; control does not return to the currently - active exception handler. The new Signal object that is created - has the same arguments as the receiver (this might or not be - correct - if it isn't you can use an idiom such as `sig - retryUsing: [ replacementException signal ]) +removePermission: aPermission + Not commented. -resume - If the exception is resumable, resume the execution of the block - that raised the exception; the method that was used to signal the - exception will answer the receiver. Use this method IF AND ONLY - IF you know who caused the exception and if it is possible to - resume it in that particular case +withOwner: aClass + Not commented. -resume: anObject - If the exception is resumable, resume the execution of the block - that raised the exception; the method that was used to signal the - exception will answer anObject. Use this method IF AND ONLY IF - you know who caused the exception and if it is possible to resume - it in that particular case -retry - Re-execute the receiver of the #on:do: message. All handlers are - reinstated: watch out, this can easily cause an infinite loop. + +File: gst-base.info, Node: SecurityPolicy-querying, Prev: SecurityPolicy-modifying, Up: SecurityPolicy -retryUsing: aBlock - Execute aBlock reinstating all handlers, and return its result from - the #signal method. +1.145.2 SecurityPolicy: querying +-------------------------------- -return - Exit the #on:do: snippet, answering nil to its caller. +check: aPermission + Not commented. -return: anObject - Exit the #on:do: snippet, answering anObject to its caller. +implies: aPermission + Not commented.  -File: gst-base.info, Node: SingletonProxy, Next: SmallInteger, Prev: Signal, Up: Base classes +File: gst-base.info, Node: Semaphore, Next: SequenceableCollection, Prev: SecurityPolicy, Up: Base classes -1.147 SingletonProxy -==================== +1.146 Semaphore +=============== Defined in namespace Smalltalk -Superclass: AlternativeObjectProxy -Category: Streams-Files - I am a proxy that stores the class of an object rather than the - object itself, and pretends that a registered instance (which most - likely is a singleton instance of the stored class) was stored - instead. +Superclass: LinkedList +Category: Language-Processes + My instances represent counting semaphores. I provide methods for + signalling the semaphore's availability, and methods for waiting + for its availability. I also provide some methods for + implementing critical sections. * Menu: -* SingletonProxy class-accessing:: (class) -* SingletonProxy class-instance creation:: (class) -* SingletonProxy-saving and restoring:: (instance) +* Semaphore class-instance creation:: (class) +* Semaphore-accessing:: (instance) +* Semaphore-builtins:: (instance) +* Semaphore-mutual exclusion:: (instance) +* Semaphore-printing:: (instance)  -File: gst-base.info, Node: SingletonProxy class-accessing, Next: SingletonProxy class-instance creation, Up: SingletonProxy - -1.147.1 SingletonProxy class: accessing ---------------------------------------- - -acceptUsageForClass: aClass - The receiver was asked to be used as a proxy for the class aClass. - The registration is fine if the class is actually a singleton. - +File: gst-base.info, Node: Semaphore class-instance creation, Next: Semaphore-accessing, Up: Semaphore - -File: gst-base.info, Node: SingletonProxy class-instance creation, Next: SingletonProxy-saving and restoring, Prev: SingletonProxy class-accessing, Up: SingletonProxy +1.146.1 Semaphore class: instance creation +------------------------------------------ -1.147.2 SingletonProxy class: instance creation ------------------------------------------------ +forMutualExclusion + Answer a new semaphore with a signal on it. These semaphores are a + useful shortcut when you use semaphores as critical sections. -on: anObject - Answer a proxy to be used to save anObject. The proxy stores the - class and restores the object by looking into a dictionary of - class -> singleton objects. +new + Answer a new semaphore  -File: gst-base.info, Node: SingletonProxy-saving and restoring, Prev: SingletonProxy class-instance creation, Up: SingletonProxy - -1.147.3 SingletonProxy: saving and restoring --------------------------------------------- - -object - Reconstruct the object stored in the proxy and answer it; the - binaryRepresentationObject is sent the #reconstructOriginalObject - message, and the resulting object is sent the #postLoad message. +File: gst-base.info, Node: Semaphore-accessing, Next: Semaphore-builtins, Prev: Semaphore class-instance creation, Up: Semaphore +1.146.2 Semaphore: accessing +---------------------------- - -File: gst-base.info, Node: SmallInteger, Next: SortedCollection, Prev: SingletonProxy, Up: Base classes +name + Answer a user-friendly name for the receiver -1.148 SmallInteger -================== +name: aString + Answer a user-friendly name for the receiver -Defined in namespace Smalltalk -Superclass: Integer -Category: Language-Data types - I am the integer class of the GNU Smalltalk system. My instances - can represent signed 30 bit integers and are as efficient as - possible. +waitingProcesses + Answer an Array of processes currently waiting on the receiver. -* Menu: +wouldBlock + Answer whether waiting on the receiver would suspend the current + process. -* SmallInteger class-getting limits:: (class) -* SmallInteger class-testing:: (class) -* SmallInteger-bit arithmetic:: (instance) -* SmallInteger-built ins:: (instance) -* SmallInteger-builtins:: (instance) -* SmallInteger-coercion:: (instance) -* SmallInteger-coercion methods:: (instance) -* SmallInteger-testing functionality:: (instance)  -File: gst-base.info, Node: SmallInteger class-getting limits, Next: SmallInteger class-testing, Up: SmallInteger +File: gst-base.info, Node: Semaphore-builtins, Next: Semaphore-mutual exclusion, Prev: Semaphore-accessing, Up: Semaphore -1.148.1 SmallInteger class: getting limits ------------------------------------------- +1.146.3 Semaphore: builtins +--------------------------- -bits - Answer the number of bits (excluding the sign) that can be - represented directly in an object pointer +lock + Without putting the receiver to sleep, force processes that try to + wait on the semaphore to block. Answer whether this was the case + even before. -largest - Answer the largest integer represented directly in an object - pointer +notify + Resume one of the processes that were waiting on the semaphore if + there were any. Do not leave a signal on the semaphore if no + process is waiting. -smallest - Answer the smallest integer represented directly in an object - pointer +notifyAll + Resume all the processes that were waiting on the semaphore if + there were any. Do not leave a signal on the semaphore if no + process is waiting. +signal + Signal the receiver, resuming a waiting process' if there is one - -File: gst-base.info, Node: SmallInteger class-testing, Next: SmallInteger-bit arithmetic, Prev: SmallInteger class-getting limits, Up: SmallInteger +wait + Wait for the receiver to be signalled, suspending the executing + process if it is not yet -1.148.2 SmallInteger class: testing ------------------------------------ + are -isIdentity - Answer whether x = y implies x == y for instances of the receiver +waitAfterSignalling: aSemaphore + Signal aSemaphore then, atomically, wait for the receiver to be + signalled, suspending the executing process if it is not yet. This + is needed to avoid race conditions when the #notify and #notifyAll + are used before waiting on receiver: otherwise, if a process sends + any of the two between the time aSemaphore is signaled and the time + the process starts waiting on the receiver, the notification is + lost.  -File: gst-base.info, Node: SmallInteger-bit arithmetic, Next: SmallInteger-built ins, Prev: SmallInteger class-testing, Up: SmallInteger - -1.148.3 SmallInteger: bit arithmetic ------------------------------------- +File: gst-base.info, Node: Semaphore-mutual exclusion, Next: Semaphore-printing, Prev: Semaphore-builtins, Up: Semaphore -highBit - Return the index of the highest order 1 bit of the receiver +1.146.4 Semaphore: mutual exclusion +----------------------------------- -lowBit - Return the index of the lowest order 1 bit of the receiver. +critical: aBlock + Wait for the receiver to be free, execute aBlock and signal the + receiver again. Return the result of evaluating aBlock. diff -rNu smalltalk-3.0.3/doc/gst-base.info-3 smalltalk-3.0.4/doc/gst-base.info-3 --- smalltalk-3.0.3/doc/gst-base.info-3 2008-05-14 12:35:05.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-base.info-3 2008-08-09 15:31:03.000000000 +0200 @@ -14,9 +14,843 @@ in the section entitled "GNU Free Documentation License".  +File: gst-base.info, Node: Semaphore-printing, Prev: Semaphore-mutual exclusion, Up: Semaphore + +1.146.5 Semaphore: printing +--------------------------- + +printOn: aStream + Print a human-readable represention of the receiver on aStream. + + + +File: gst-base.info, Node: SequenceableCollection, Next: Set, Prev: Semaphore, Up: Base classes + +1.147 SequenceableCollection +============================ + +Defined in namespace Smalltalk +Superclass: Collection +Category: Collections-Sequenceable + My instances represent collections of objects that are ordered. I + provide some access and manipulation methods. + +* Menu: + +* SequenceableCollection class-instance creation:: (class) +* SequenceableCollection-basic:: (instance) +* SequenceableCollection-comparing:: (instance) +* SequenceableCollection-concatenating:: (instance) +* SequenceableCollection-copying SequenceableCollections:: (instance) +* SequenceableCollection-enumerating:: (instance) +* SequenceableCollection-replacing items:: (instance) +* SequenceableCollection-sorting:: (instance) +* SequenceableCollection-still unclassified:: (instance) +* SequenceableCollection-testing:: (instance) + + +File: gst-base.info, Node: SequenceableCollection class-instance creation, Next: SequenceableCollection-basic, Up: SequenceableCollection + +1.147.1 SequenceableCollection class: instance creation +------------------------------------------------------- + +join: aCollection separatedBy: sepCollection + Where aCollection is a collection of SequenceableCollections, + answer a new instance with all the elements therein, in order, + each separated by an occurrence of sepCollection. + + + +File: gst-base.info, Node: SequenceableCollection-basic, Next: SequenceableCollection-comparing, Prev: SequenceableCollection class-instance creation, Up: SequenceableCollection + +1.147.2 SequenceableCollection: basic +------------------------------------- + +after: oldObject + Return the element after oldObject. Error if oldObject not found + or if no following object is available + +allButFirst + Answer a copy of the receiver without the first object. + +allButFirst: n + Answer a copy of the receiver without the first n objects. + +allButLast + Answer a copy of the receiver without the last object. + +allButLast: n + Answer a copy of the receiver without the last n objects. + +at: anIndex ifAbsent: aBlock + Answer the anIndex-th item of the collection, or evaluate aBlock + and answer the result if the index is out of range + +atAll: keyCollection + Answer a collection of the same kind returned by #collect:, that + only includes the values at the given indices. Fail if any of the + values in keyCollection is out of bounds for the receiver. + +atAll: aCollection put: anObject + Put anObject at every index contained in aCollection + +atAllPut: anObject + Put anObject at every index in the receiver + +atRandom + Return a random item of the receiver. + +before: oldObject + Return the element before oldObject. Error if oldObject not found + or if no preceding object is available + +first + Answer the first item in the receiver + +first: n + Answer the first n items in the receiver + +fourth + Answer the fourth item in the receiver + +identityIncludes: anObject + Answer whether we include the anObject object + +identityIndexOf: anElement + Answer the index of the first occurrence of an object identical to + anElement in the receiver. Answer 0 if no item is found + +identityIndexOf: anElement ifAbsent: exceptionBlock + Answer the index of the first occurrence of an object identical to + anElement in the receiver. Invoke exceptionBlock and answer its + result if no item is found + +identityIndexOf: anElement startingAt: anIndex + Answer the first index > anIndex which contains an object identical + to anElement. Answer 0 if no item is found + +identityIndexOf: anObject startingAt: anIndex ifAbsent: exceptionBlock + Answer the first index > anIndex which contains an object exactly + identical to anObject. Invoke exceptionBlock and answer its + result if no item is found + +identityIndexOfLast: anElement ifAbsent: exceptionBlock + Answer the last index which contains an object identical to + anElement. Invoke exceptionBlock and answer its result if no item + is found + +includes: anObject + Answer whether we include anObject + +indexOf: anElement + Answer the index of the first occurrence of anElement in the + receiver. Answer 0 if no item is found + +indexOf: anElement ifAbsent: exceptionBlock + Answer the index of the first occurrence of anElement in the + receiver. Invoke exceptionBlock and answer its result if no item + is found + +indexOf: anElement startingAt: anIndex + Answer the first index > anIndex which contains anElement. Answer + 0 if no item is found + +indexOf: anElement startingAt: anIndex ifAbsent: exceptionBlock + Answer the first index > anIndex which contains anElement. Invoke + exceptionBlock and answer its result if no item is found + +indexOfLast: anElement ifAbsent: exceptionBlock + Answer the last index which contains anElement. Invoke + exceptionBlock and answer its result if no item is found + +indexOfSubCollection: aSubCollection + Answer the first index > anIndex at which starts a sequence of + items matching aSubCollection. Answer 0 if no such sequence is + found. + +indexOfSubCollection: aSubCollection ifAbsent: exceptionBlock + Answer the first index > anIndex at which starts a sequence of + items matching aSubCollection. Answer 0 if no such sequence is + found. + +indexOfSubCollection: aSubCollection startingAt: anIndex + Answer the first index > anIndex at which starts a sequence of + items matching aSubCollection. Answer 0 if no such sequence is + found. + +indexOfSubCollection: aSubCollection startingAt: anIndex ifAbsent: exceptionBlock + Answer the first index > anIndex at which starts a sequence of + items matching aSubCollection. Invoke exceptionBlock and answer + its result if no such sequence is found + +last + Answer the last item in the receiver + +last: n + Answer the last n items in the receiver + +second + Answer the second item in the receiver + +third + Answer the third item in the receiver + + + +File: gst-base.info, Node: SequenceableCollection-comparing, Next: SequenceableCollection-concatenating, Prev: SequenceableCollection-basic, Up: SequenceableCollection + +1.147.3 SequenceableCollection: comparing +----------------------------------------- + +endsWith: aSequenceableCollection + Returns true if the receiver ends with the same characters as + aSequenceableCollection. + +startsWith: aSequenceableCollection + Returns true if the receiver starts with the same characters as + aSequenceableCollection. + + + +File: gst-base.info, Node: SequenceableCollection-concatenating, Next: SequenceableCollection-copying SequenceableCollections, Prev: SequenceableCollection-comparing, Up: SequenceableCollection + +1.147.4 SequenceableCollection: concatenating +--------------------------------------------- + +join: sepCollection + Answer a new collection like my first element, with all the + elements (in order) of all my elements (which should be + collections) separated by sepCollection. + + I use my first element instead of myself as a prototype because my + elements are more likely to share the desired properties than I + am, such as in: + + #('hello,' 'world') join: ' ' => 'hello, world' + +with: aSequenceableCollection + Return an Array with the same size as the receiver and + aSequenceableCollection, each element of which is a 2-element + Arrays including one element from the receiver and one from + aSequenceableCollection. + +with: seqColl1 with: seqColl2 + Return an Array with the same size as the receiver and the + arguments, each element of which is a 3-element Arrays including + one element from the receiver and one from each argument. + +with: seqColl1 with: seqColl2 with: seqColl3 + Return an Array with the same size as the receiver and the + arguments, each element of which is a 4-element Arrays including + one element from the receiver and one from each argument. + + + +File: gst-base.info, Node: SequenceableCollection-copying SequenceableCollections, Next: SequenceableCollection-enumerating, Prev: SequenceableCollection-concatenating, Up: SequenceableCollection + +1.147.5 SequenceableCollection: copying SequenceableCollections +--------------------------------------------------------------- + +, aSequenceableCollection + Append aSequenceableCollection at the end of the receiver (using + #add:), and answer a new collection + +copyAfter: anObject + Answer a new collection holding all the elements of the receiver + after the first occurrence of anObject, up to the last. + +copyAfterLast: anObject + Answer a new collection holding all the elements of the receiver + after the last occurrence of anObject, up to the last. + +copyFrom: start + Answer a new collection containing all the items in the receiver + from the start-th. + +copyFrom: start to: stop + Answer a new collection containing all the items in the receiver + from the start-th and to the stop-th + +copyReplaceAll: oldSubCollection with: newSubCollection + Answer a new collection in which all the sequences matching + oldSubCollection are replaced with newSubCollection + +copyReplaceFrom: start to: stop with: replacementCollection + Answer a new collection of the same class as the receiver that + contains the same elements as the receiver, in the same order, + except for elements from index `start' to index `stop'. + + If start < stop, these are replaced by the contents of the + replacementCollection. Instead, If start = (stop + 1), like in + `copyReplaceFrom: 4 to: 3 with: anArray', then every element of + the receiver will be present in the answered copy; the operation + will be an append if stop is equal to the size of the receiver or, + if it is not, an insert before index `start'. + +copyReplaceFrom: start to: stop withObject: anObject + Answer a new collection of the same class as the receiver that + contains the same elements as the receiver, in the same order, + except for elements from index `start' to index `stop'. + + If start < stop, these are replaced by stop-start+1 copies of + anObject. Instead, If start = (stop + 1), then every element of + the receiver will be present in the answered copy; the operation + will be an append if stop is equal to the size of the receiver or, + if it is not, an insert before index `start'. + +copyUpTo: anObject + Answer a new collection holding all the elements of the receiver + from the first up to the first occurrence of anObject, excluded. + +copyUpToLast: anObject + Answer a new collection holding all the elements of the receiver + from the first up to the last occurrence of anObject, excluded. + + + +File: gst-base.info, Node: SequenceableCollection-enumerating, Next: SequenceableCollection-replacing items, Prev: SequenceableCollection-copying SequenceableCollections, Up: SequenceableCollection + +1.147.6 SequenceableCollection: enumerating +------------------------------------------- + +anyOne + Answer an unspecified element of the collection. + +do: aBlock + Evaluate aBlock for all the elements in the sequenceable collection + +do: aBlock separatedBy: sepBlock + Evaluate aBlock for all the elements in the sequenceable + collection. Between each element, evaluate sepBlock without + parameters. + +doWithIndex: aBlock + Evaluate aBlock for all the elements in the sequenceable + collection, passing the index of each element as the second + parameter. This method is mantained for backwards compatibility + and is not mandated by the ANSI standard; use #keysAndValuesDo: + +findFirst: aBlock + Returns the index of the first element of the sequenceable + collection for which aBlock returns true, or 0 if none + +findLast: aBlock + Returns the index of the last element of the sequenceable + collection for which aBlock returns true, or 0 if none does + +fold: binaryBlock + First, pass to binaryBlock the first and second elements of the + receiver; for each subsequent element, pass the result of the + previous evaluation and an element. Answer the result of the last + invocation, or the first element if the collection has size 1. + Fail if the collection is empty. + +from: startIndex to: stopIndex do: aBlock + Evaluate aBlock for all the elements in the sequenceable + collection whose indices are in the range index to stopIndex + +from: startIndex to: stopIndex doWithIndex: aBlock + Evaluate aBlock for all the elements in the sequenceable + collection whose indices are in the range index to stopIndex, + passing the index of each element as the second parameter. This + method is mantained for backwards compatibility and is not + mandated by the ANSI standard; use #from:to:keysAndValuesDo: + +from: startIndex to: stopIndex keysAndValuesDo: aBlock + Evaluate aBlock for all the elements in the sequenceable + collection whose indices are in the range index to stopIndex, + passing the index of each element as the first parameter and the + element as the second. + +keys + Return an Interval corresponding to the valid indices in the + receiver. + +keysAndValuesDo: aBlock + Evaluate aBlock for all the elements in the sequenceable + collection, passing the index of each element as the first + parameter and the element as the second. + +readStream + Answer a ReadStream streaming on the receiver + +readWriteStream + Answer a ReadWriteStream which streams on the receiver + +reverse + Answer the receivers' contents in reverse order + +reverseDo: aBlock + Evaluate aBlock for all elements in the sequenceable collection, + from the last to the first. + +with: aSequenceableCollection collect: aBlock + Evaluate aBlock for each pair of elements took respectively from + the re- ceiver and from aSequenceableCollection; answer a + collection of the same kind of the receiver, made with the block's + return values. Fail if the receiver has not the same size as + aSequenceableCollection. + +with: aSequenceableCollection do: aBlock + Evaluate aBlock for each pair of elements took respectively from + the re- ceiver and from aSequenceableCollection. Fail if the + receiver has not the same size as aSequenceableCollection. + + + +File: gst-base.info, Node: SequenceableCollection-replacing items, Next: SequenceableCollection-sorting, Prev: SequenceableCollection-enumerating, Up: SequenceableCollection + +1.147.7 SequenceableCollection: replacing items +----------------------------------------------- + +replaceAll: anObject with: anotherObject + In the receiver, replace every occurrence of anObject with + anotherObject. + +replaceFrom: start to: stop with: replacementCollection + Replace the items from start to stop with replacementCollection's + items from 1 to stop-start+1 (in unexpected order if the + collection is not sequenceable). + +replaceFrom: start to: stop with: replacementCollection startingAt: repStart + Replace the items from start to stop with replacementCollection's + items from repStart to repStart+stop-start + +replaceFrom: anIndex to: stopIndex withObject: replacementObject + Replace every item from start to stop with replacementObject. + + + +File: gst-base.info, Node: SequenceableCollection-sorting, Next: SequenceableCollection-still unclassified, Prev: SequenceableCollection-replacing items, Up: SequenceableCollection + +1.147.8 SequenceableCollection: sorting +--------------------------------------- + +sort + Sort the contents of the receiver according to the default sort + block, which uses #<= to compare items. + +sortBy: sortBlock + Sort the contents of the receiver according to the given sort + block, which accepts pair of items and returns true if the first + item is less than the second one. + + + +File: gst-base.info, Node: SequenceableCollection-still unclassified, Next: SequenceableCollection-testing, Prev: SequenceableCollection-sorting, Up: SequenceableCollection + +1.147.9 SequenceableCollection: still unclassified +-------------------------------------------------- + +nextPutAllOn: aStream + Write all the objects in the receiver to aStream + + + +File: gst-base.info, Node: SequenceableCollection-testing, Prev: SequenceableCollection-still unclassified, Up: SequenceableCollection + +1.147.10 SequenceableCollection: testing +---------------------------------------- + += aCollection + Answer whether the receiver's items match those in aCollection + +hash + Answer an hash value for the receiver + +inspect + Print all the instance variables and context of the receiver on the + Transcript + +isSequenceable + Answer whether the receiver can be accessed by a numeric index with + #at:/#at:put:. + + + +File: gst-base.info, Node: Set, Next: SharedQueue, Prev: SequenceableCollection, Up: Base classes + +1.148 Set +========= + +Defined in namespace Smalltalk +Superclass: HashedCollection +Category: Collections-Unordered + I am the typical set object; I also known how to do arithmetic on + my instances. + +* Menu: + +* Set-arithmetic:: (instance) +* Set-awful ST-80 compatibility hacks:: (instance) +* Set-comparing:: (instance) + + +File: gst-base.info, Node: Set-arithmetic, Next: Set-awful ST-80 compatibility hacks, Up: Set + +1.148.1 Set: arithmetic +----------------------- + +& aSet + Compute the set intersection of the receiver and aSet. + ++ aSet + Compute the set union of the receiver and aSet. + +- aSet + Compute the set difference of the receiver and aSet. + + + +File: gst-base.info, Node: Set-awful ST-80 compatibility hacks, Next: Set-comparing, Prev: Set-arithmetic, Up: Set + +1.148.2 Set: awful ST-80 compatibility hacks +-------------------------------------------- + +findObjectIndex: object + Tries to see if anObject exists as an indexed variable. As soon as + nil or anObject is found, the index of that slot is answered + + + +File: gst-base.info, Node: Set-comparing, Prev: Set-awful ST-80 compatibility hacks, Up: Set + +1.148.3 Set: comparing +---------------------- + +< aSet + Answer whether the receiver is a strict subset of aSet + +<= aSet + Answer whether the receiver is a subset of aSet + +> aSet + Answer whether the receiver is a strict superset of aSet + +>= aSet + Answer whether the receiver is a superset of aSet + + + +File: gst-base.info, Node: SharedQueue, Next: Signal, Prev: Set, Up: Base classes + +1.149 SharedQueue +================= + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes + My instances provide a guaranteed safe mechanism to allow for + communication between processes. All access to the underlying + data structures is controlled with critical sections so that + things proceed smoothly. + +* Menu: + +* SharedQueue class-instance creation:: (class) +* SharedQueue-accessing:: (instance) + + +File: gst-base.info, Node: SharedQueue class-instance creation, Next: SharedQueue-accessing, Up: SharedQueue + +1.149.1 SharedQueue class: instance creation +-------------------------------------------- + +new + Create a new instance of the receiver + +sortBlock: sortBlock + Create a new instance of the receiver which implements a priority + queue with the given sort block + + + +File: gst-base.info, Node: SharedQueue-accessing, Prev: SharedQueue class-instance creation, Up: SharedQueue + +1.149.2 SharedQueue: accessing +------------------------------ + +isEmpty + Answer whether there is an object on the queue + +next + Wait for an object to be on the queue, then remove it and answer it + +nextPut: value + Put value on the queue and answer it + +peek + Wait for an object to be on the queue if necessary, then answer the + same object that #next would answer without removing it. + + + +File: gst-base.info, Node: Signal, Next: SingletonProxy, Prev: SharedQueue, Up: Base classes + +1.150 Signal +============ + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Exceptions + My instances describe an exception that has happened, and are + passed to exception handlers. Apart from containing information on + the generated exception and its arguments, they contain methods + that allow you to resume execution, leave the #on:do:... snippet, + and pass the exception to an handler with a lower priority. + +* Menu: + +* Signal-accessing:: (instance) +* Signal-copying:: (instance) +* Signal-exception handling:: (instance) + + +File: gst-base.info, Node: Signal-accessing, Next: Signal-copying, Up: Signal + +1.150.1 Signal: accessing +------------------------- + +argument + Answer the first argument of the receiver + +argumentCount + Answer how many arguments the receiver has + +arguments + Answer the arguments of the receiver + +basicMessageText + Answer an exception's message text. Do not override this method. + +description + Answer the description of the raised exception + +exception + Answer the CoreException that was raised + +messageText + Answer an exception's message text. + +messageText: aString + Set an exception's message text. + +tag + Answer an exception's tag value. If not specified, it is the same + as the message text. + +tag: anObject + Set an exception's tag value. If nil, the tag value will be the + same as the message text. + + + +File: gst-base.info, Node: Signal-copying, Next: Signal-exception handling, Prev: Signal-accessing, Up: Signal + +1.150.2 Signal: copying +----------------------- + +postCopy + Modify the receiver so that it does not refer to any instantiated + exception handler. + + + +File: gst-base.info, Node: Signal-exception handling, Prev: Signal-copying, Up: Signal + +1.150.3 Signal: exception handling +---------------------------------- + +context + Return the execution context for the #on:do: snippet + +defaultAction + Execute the default handler for the raised exception + +isNested + Answer whether the current exception handler is within the scope of + another handler for the same exception. + +isResumable + Answer whether the exception that instantiated the receiver is + resumable. + +outer + Raise the exception that instantiated the receiver, passing the + same parameters. If the receiver is resumable and the evaluated + exception action resumes then the result returned from #outer will + be the resumption value of the evaluated exception action. If the + receiver is not resumable or if the exception action does not + resume then this message will not return, and #outer will be + equivalent to #pass. + +pass + Yield control to the enclosing exception action for the receiver. + Similar to #outer, but control does not return to the currently + active exception handler. + +resignalAs: replacementException + Reinstate all handlers and execute the handler for + `replacementException'; control does not return to the currently + active exception handler. The new Signal object that is created + has the same arguments as the receiver (this might or not be + correct - if it isn't you can use an idiom such as `sig + retryUsing: [ replacementException signal ]) + +resume + If the exception is resumable, resume the execution of the block + that raised the exception; the method that was used to signal the + exception will answer the receiver. Use this method IF AND ONLY + IF you know who caused the exception and if it is possible to + resume it in that particular case + +resume: anObject + If the exception is resumable, resume the execution of the block + that raised the exception; the method that was used to signal the + exception will answer anObject. Use this method IF AND ONLY IF + you know who caused the exception and if it is possible to resume + it in that particular case + +retry + Re-execute the receiver of the #on:do: message. All handlers are + reinstated: watch out, this can easily cause an infinite loop. + +retryUsing: aBlock + Execute aBlock reinstating all handlers, and return its result from + the #signal method. + +return + Exit the #on:do: snippet, answering nil to its caller. + +return: anObject + Exit the #on:do: snippet, answering anObject to its caller. + + + +File: gst-base.info, Node: SingletonProxy, Next: SmallInteger, Prev: Signal, Up: Base classes + +1.151 SingletonProxy +==================== + +Defined in namespace Smalltalk +Superclass: AlternativeObjectProxy +Category: Streams-Files + I am a proxy that stores the class of an object rather than the + object itself, and pretends that a registered instance (which most + likely is a singleton instance of the stored class) was stored + instead. + +* Menu: + +* SingletonProxy class-accessing:: (class) +* SingletonProxy class-instance creation:: (class) +* SingletonProxy-saving and restoring:: (instance) + + +File: gst-base.info, Node: SingletonProxy class-accessing, Next: SingletonProxy class-instance creation, Up: SingletonProxy + +1.151.1 SingletonProxy class: accessing +--------------------------------------- + +acceptUsageForClass: aClass + The receiver was asked to be used as a proxy for the class aClass. + The registration is fine if the class is actually a singleton. + + + +File: gst-base.info, Node: SingletonProxy class-instance creation, Next: SingletonProxy-saving and restoring, Prev: SingletonProxy class-accessing, Up: SingletonProxy + +1.151.2 SingletonProxy class: instance creation +----------------------------------------------- + +on: anObject + Answer a proxy to be used to save anObject. The proxy stores the + class and restores the object by looking into a dictionary of + class -> singleton objects. + + + +File: gst-base.info, Node: SingletonProxy-saving and restoring, Prev: SingletonProxy class-instance creation, Up: SingletonProxy + +1.151.3 SingletonProxy: saving and restoring +-------------------------------------------- + +object + Reconstruct the object stored in the proxy and answer it; the + binaryRepresentationObject is sent the #reconstructOriginalObject + message, and the resulting object is sent the #postLoad message. + + + +File: gst-base.info, Node: SmallInteger, Next: SortedCollection, Prev: SingletonProxy, Up: Base classes + +1.152 SmallInteger +================== + +Defined in namespace Smalltalk +Superclass: Integer +Category: Language-Data types + I am the integer class of the GNU Smalltalk system. My instances + can represent signed 30 bit integers and are as efficient as + possible. + +* Menu: + +* SmallInteger class-getting limits:: (class) +* SmallInteger class-testing:: (class) +* SmallInteger-bit arithmetic:: (instance) +* SmallInteger-built ins:: (instance) +* SmallInteger-builtins:: (instance) +* SmallInteger-coercion:: (instance) +* SmallInteger-coercion methods:: (instance) +* SmallInteger-testing functionality:: (instance) + + +File: gst-base.info, Node: SmallInteger class-getting limits, Next: SmallInteger class-testing, Up: SmallInteger + +1.152.1 SmallInteger class: getting limits +------------------------------------------ + +bits + Answer the number of bits (excluding the sign) that can be + represented directly in an object pointer + +largest + Answer the largest integer represented directly in an object + pointer + +smallest + Answer the smallest integer represented directly in an object + pointer + + + +File: gst-base.info, Node: SmallInteger class-testing, Next: SmallInteger-bit arithmetic, Prev: SmallInteger class-getting limits, Up: SmallInteger + +1.152.2 SmallInteger class: testing +----------------------------------- + +isIdentity + Answer whether x = y implies x == y for instances of the receiver + + + +File: gst-base.info, Node: SmallInteger-bit arithmetic, Next: SmallInteger-built ins, Prev: SmallInteger class-testing, Up: SmallInteger + +1.152.3 SmallInteger: bit arithmetic +------------------------------------ + +highBit + Return the index of the highest order 1 bit of the receiver + +lowBit + Return the index of the lowest order 1 bit of the receiver. + + + File: gst-base.info, Node: SmallInteger-built ins, Next: SmallInteger-builtins, Prev: SmallInteger-bit arithmetic, Up: SmallInteger -1.148.4 SmallInteger: built ins +1.152.4 SmallInteger: built ins ------------------------------- * arg @@ -110,7 +944,7 @@  File: gst-base.info, Node: SmallInteger-builtins, Next: SmallInteger-coercion, Prev: SmallInteger-built ins, Up: SmallInteger -1.148.5 SmallInteger: builtins +1.152.5 SmallInteger: builtins ------------------------------ at: anIndex @@ -136,7 +970,7 @@  File: gst-base.info, Node: SmallInteger-coercion, Next: SmallInteger-coercion methods, Prev: SmallInteger-builtins, Up: SmallInteger -1.148.6 SmallInteger: coercion +1.152.6 SmallInteger: coercion ------------------------------ asCNumber @@ -147,7 +981,7 @@  File: gst-base.info, Node: SmallInteger-coercion methods, Next: SmallInteger-testing functionality, Prev: SmallInteger-coercion, Up: SmallInteger -1.148.7 SmallInteger: coercion methods +1.152.7 SmallInteger: coercion methods -------------------------------------- generality @@ -163,7 +997,7 @@  File: gst-base.info, Node: SmallInteger-testing functionality, Prev: SmallInteger-coercion methods, Up: SmallInteger -1.148.8 SmallInteger: testing functionality +1.152.8 SmallInteger: testing functionality ------------------------------------------- isSmallInteger @@ -173,7 +1007,7 @@  File: gst-base.info, Node: SortedCollection, Next: Stream, Prev: SmallInteger, Up: Base classes -1.149 SortedCollection +1.153 SortedCollection ====================== Defined in namespace Smalltalk @@ -202,7 +1036,7 @@  File: gst-base.info, Node: SortedCollection class-hacking, Next: SortedCollection class-instance creation, Up: SortedCollection -1.149.1 SortedCollection class: hacking +1.153.1 SortedCollection class: hacking --------------------------------------- defaultSortBlock @@ -212,7 +1046,7 @@  File: gst-base.info, Node: SortedCollection class-instance creation, Next: SortedCollection-basic, Prev: SortedCollection class-hacking, Up: SortedCollection -1.149.2 SortedCollection class: instance creation +1.153.2 SortedCollection class: instance creation ------------------------------------------------- new @@ -230,7 +1064,7 @@  File: gst-base.info, Node: SortedCollection-basic, Next: SortedCollection-copying, Prev: SortedCollection class-instance creation, Up: SortedCollection -1.149.3 SortedCollection: basic +1.153.3 SortedCollection: basic ------------------------------- last @@ -251,7 +1085,7 @@  File: gst-base.info, Node: SortedCollection-copying, Next: SortedCollection-disabled, Prev: SortedCollection-basic, Up: SortedCollection -1.149.4 SortedCollection: copying +1.153.4 SortedCollection: copying --------------------------------- copyEmpty: newSize @@ -262,7 +1096,7 @@  File: gst-base.info, Node: SortedCollection-disabled, Next: SortedCollection-enumerating, Prev: SortedCollection-copying, Up: SortedCollection -1.149.5 SortedCollection: disabled +1.153.5 SortedCollection: disabled ---------------------------------- add: anObject afterIndex: i @@ -290,7 +1124,7 @@  File: gst-base.info, Node: SortedCollection-enumerating, Next: SortedCollection-saving and loading, Prev: SortedCollection-disabled, Up: SortedCollection -1.149.6 SortedCollection: enumerating +1.153.6 SortedCollection: enumerating ------------------------------------- beConsistent @@ -301,7 +1135,7 @@  File: gst-base.info, Node: SortedCollection-saving and loading, Next: SortedCollection-searching, Prev: SortedCollection-enumerating, Up: SortedCollection -1.149.7 SortedCollection: saving and loading +1.153.7 SortedCollection: saving and loading -------------------------------------------- postLoad @@ -314,7 +1148,7 @@  File: gst-base.info, Node: SortedCollection-searching, Prev: SortedCollection-saving and loading, Up: SortedCollection -1.149.8 SortedCollection: searching +1.153.8 SortedCollection: searching ----------------------------------- includes: anObject @@ -333,11 +1167,11 @@  File: gst-base.info, Node: Stream, Next: String, Prev: SortedCollection, Up: Base classes -1.150 Stream +1.154 Stream ============ Defined in namespace Smalltalk -Superclass: Object +Superclass: Iterable Category: Streams I am an abstract class that provides interruptable sequential access to objects. I can return successive objects from a source, @@ -350,6 +1184,7 @@ * Stream-accessing-reading:: (instance) * Stream-accessing-writing:: (instance) * Stream-basic:: (instance) +* Stream-buffering:: (instance) * Stream-built ins:: (instance) * Stream-character writing:: (instance) * Stream-concatenating:: (instance) @@ -359,13 +1194,15 @@ * Stream-polymorphism:: (instance) * Stream-positioning:: (instance) * Stream-printing:: (instance) +* Stream-still unclassified:: (instance) * Stream-storing:: (instance) +* Stream-streaming protocol:: (instance) * Stream-testing:: (instance)  File: gst-base.info, Node: Stream-accessing-reading, Next: Stream-accessing-writing, Up: Stream -1.150.1 Stream: accessing-reading +1.154.1 Stream: accessing-reading --------------------------------- contents @@ -382,8 +1219,26 @@ Return the next anInteger objects in the receiver nextAvailable: anInteger - Return up to anInteger objects in the receiver, stopping if the - end of the stream is reached + Return up to anInteger objects in the receiver. Besides stopping + if the end of the stream is reached, this may return less than this + number of bytes for various reasons. For example, on files and + sockets this operation could be non-blocking, or could do at most + one I/O operation. + +nextAvailable: anInteger into: aCollection startingAt: pos + Place the next anInteger objects from the receiver into + aCollection, starting at position pos. Return the number of items + stored. Besides stopping if the end of the stream is reached, + this may return less than this number of bytes for various reasons. + For example, on files and sockets this operation could be + non-blocking, or could do at most one I/O operation. + +nextAvailable: anInteger putAllOn: aStream + Copy up to anInteger objects in the receiver to aStream. Besides + stopping if the end of the stream is reached, this may return less + than this number of bytes for various reasons. For example, on + files and sockets this operation could be non-blocking, or could + do at most one I/O operation. nextLine Returns a collection of the same type that the stream accesses, @@ -421,7 +1276,7 @@  File: gst-base.info, Node: Stream-accessing-writing, Next: Stream-basic, Prev: Stream-accessing-reading, Up: Stream -1.150.2 Stream: accessing-writing +1.154.2 Stream: accessing-writing --------------------------------- next: anInteger put: anObject @@ -443,9 +1298,9 @@  -File: gst-base.info, Node: Stream-basic, Next: Stream-built ins, Prev: Stream-accessing-writing, Up: Stream +File: gst-base.info, Node: Stream-basic, Next: Stream-buffering, Prev: Stream-accessing-writing, Up: Stream -1.150.3 Stream: basic +1.154.3 Stream: basic --------------------- species @@ -453,9 +1308,26 @@  -File: gst-base.info, Node: Stream-built ins, Next: Stream-character writing, Prev: Stream-basic, Up: Stream +File: gst-base.info, Node: Stream-buffering, Next: Stream-built ins, Prev: Stream-basic, Up: Stream -1.150.4 Stream: built ins +1.154.4 Stream: buffering +------------------------- + +next: anInteger into: answer startingAt: pos + Read up to anInteger bytes from the stream and store them into + answer. Return the number of bytes that were read, raising an + exception if we could not read the full amount of data. + +next: anInteger putAllOn: aStream + Read up to anInteger bytes from the stream and store them into + aStream. Return the number of bytes that were read, raising an + exception if we could not read the full amount of data. + + + +File: gst-base.info, Node: Stream-built ins, Next: Stream-character writing, Prev: Stream-buffering, Up: Stream + +1.154.5 Stream: built ins ------------------------- fileIn @@ -468,6 +1340,10 @@ will be removed from Undeclared and reused in the namespace, so that the old references will automagically point to the new value. +fileInLine: lineNum file: aFile at: charPosInt + Private - Much like a preprocessor #line directive; it is used + internally by #fileIn, and explicitly by the Emacs Smalltalk mode. + fileInLine: lineNum fileName: aString at: charPosInt Private - Much like a preprocessor #line directive; it is used internally by #fileIn, and explicitly by the Emacs Smalltalk mode. @@ -476,7 +1352,7 @@  File: gst-base.info, Node: Stream-character writing, Next: Stream-concatenating, Prev: Stream-built ins, Up: Stream -1.150.5 Stream: character writing +1.154.6 Stream: character writing --------------------------------- cr @@ -516,7 +1392,7 @@  File: gst-base.info, Node: Stream-concatenating, Next: Stream-enumerating, Prev: Stream-character writing, Up: Stream -1.150.6 Stream: concatenating +1.154.7 Stream: concatenating ----------------------------- with: aStream @@ -535,7 +1411,7 @@  File: gst-base.info, Node: Stream-enumerating, Next: Stream-filing out, Prev: Stream-concatenating, Up: Stream -1.150.7 Stream: enumerating +1.154.8 Stream: enumerating --------------------------- do: aBlock @@ -549,7 +1425,7 @@  File: gst-base.info, Node: Stream-filing out, Next: Stream-filtering, Prev: Stream-enumerating, Up: Stream -1.150.8 Stream: filing out +1.154.9 Stream: filing out -------------------------- fileOut: aClass @@ -561,8 +1437,8 @@  File: gst-base.info, Node: Stream-filtering, Next: Stream-polymorphism, Prev: Stream-filing out, Up: Stream -1.150.9 Stream: filtering -------------------------- +1.154.10 Stream: filtering +-------------------------- , aStream Answer a new stream that concatenates the data in the receiver @@ -575,19 +1451,6 @@ Note that when peeking in the returned stream, the block will be invoked multiple times, with possibly surprising results. -fold: aBlock - First, pass to binaryBlock the first and second elements of the - receiver; for each subsequent element, pass the result of the - previous evaluation and an element. Answer the result of the last - invocation, or the first element if the stream has a single - element. - -inject: value into: aBlock - First, pass to binaryBlock value and the first element of the - receiver; for each subsequent element, pass the result of the - previous evaluation and an element. Answer the result of the last - invocation, or value if the stream is empty. - lines Answer a new stream that answers lines from the receiver. @@ -618,7 +1481,7 @@  File: gst-base.info, Node: Stream-polymorphism, Next: Stream-positioning, Prev: Stream-filtering, Up: Stream -1.150.10 Stream: polymorphism +1.154.11 Stream: polymorphism ----------------------------- close @@ -634,23 +1497,22 @@  File: gst-base.info, Node: Stream-positioning, Next: Stream-printing, Prev: Stream-polymorphism, Up: Stream -1.150.11 Stream: positioning +1.154.12 Stream: positioning ---------------------------- isPositionable Answer true if the stream supports moving backwards with #skip:. -nextHunk - Answer a more-or-less arbitrary amount of data. When used on - files, this does at most one I/O operation. For other kinds of - stream, the definition may vary. This method is used by the VM - when loading data from a Smalltalk stream, and by various kind of - Stream decorators supplied with GNU Smalltalk (including zlib - streams). - skip: anInteger Move the position forwards by anInteger places +skipSeparators + Advance the receiver until we find a character that is not a + separator. Answer false if we reach the end of the stream, else + answer true; in this case, sending #next will return the first + non-separator character (possibly the same to which the stream + pointed before #skipSeparators was sent). + skipTo: anObject Move the current position to after the next occurrence of anObject and return true if anObject was found. If anObject doesn't exist, @@ -664,9 +1526,9 @@  -File: gst-base.info, Node: Stream-printing, Next: Stream-storing, Prev: Stream-positioning, Up: Stream +File: gst-base.info, Node: Stream-printing, Next: Stream-still unclassified, Prev: Stream-positioning, Up: Stream -1.150.12 Stream: printing +1.154.13 Stream: printing ------------------------- << anObject @@ -686,9 +1548,19 @@  -File: gst-base.info, Node: Stream-storing, Next: Stream-testing, Prev: Stream-printing, Up: Stream +File: gst-base.info, Node: Stream-still unclassified, Next: Stream-storing, Prev: Stream-printing, Up: Stream + +1.154.14 Stream: still unclassified +----------------------------------- -1.150.13 Stream: storing +nextPutAllOn: aStream + Write all the objects in the receiver to aStream + + + +File: gst-base.info, Node: Stream-storing, Next: Stream-streaming protocol, Prev: Stream-still unclassified, Up: Stream + +1.154.15 Stream: storing ------------------------ store: anObject @@ -698,9 +1570,22 @@  -File: gst-base.info, Node: Stream-testing, Prev: Stream-storing, Up: Stream +File: gst-base.info, Node: Stream-streaming protocol, Next: Stream-testing, Prev: Stream-storing, Up: Stream + +1.154.16 Stream: streaming protocol +----------------------------------- + +nextAvailablePutAllOn: aStream + Copy to aStream a more-or-less arbitrary amount of data. When used + on files, this does at most one I/O operation. For other kinds of + stream, the definition may vary. This method is used to do + stream-to-stream copies. + + + +File: gst-base.info, Node: Stream-testing, Prev: Stream-streaming protocol, Up: Stream -1.150.14 Stream: testing +1.154.17 Stream: testing ------------------------ atEnd @@ -722,7 +1607,7 @@  File: gst-base.info, Node: String, Next: Symbol, Prev: Stream, Up: Base classes -1.151 String +1.155 String ============ Defined in namespace Smalltalk @@ -746,6 +1631,7 @@ * String-basic:: (instance) * String-built ins:: (instance) * String-converting:: (instance) +* String-filesystem:: (instance) * String-printing:: (instance) * String-regex:: (instance) * String-testing functionality:: (instance) @@ -753,7 +1639,7 @@  File: gst-base.info, Node: String class-instance creation, Next: String class-multibyte encodings, Up: String -1.151.1 String class: instance creation +1.155.1 String class: instance creation --------------------------------------- fromCData: aCObject @@ -768,7 +1654,7 @@  File: gst-base.info, Node: String class-multibyte encodings, Next: String-accessing, Prev: String class-instance creation, Up: String -1.151.2 String class: multibyte encodings +1.155.2 String class: multibyte encodings ----------------------------------------- isUnicode @@ -779,7 +1665,7 @@  File: gst-base.info, Node: String-accessing, Next: String-basic, Prev: String class-multibyte encodings, Up: String -1.151.3 String: accessing +1.155.3 String: accessing ------------------------- byteAt: index @@ -794,7 +1680,7 @@  File: gst-base.info, Node: String-basic, Next: String-built ins, Prev: String-accessing, Up: String -1.151.4 String: basic +1.155.4 String: basic --------------------- , aString @@ -802,14 +1688,14 @@ elements in the receiver, followed by all the elements in aSequenceableCollection -= aString += aCollection Answer whether the receiver's items match those in aCollection  File: gst-base.info, Node: String-built ins, Next: String-converting, Prev: String-basic, Up: String -1.151.5 String: built ins +1.155.5 String: built ins ------------------------- asCData: aCType @@ -834,12 +1720,6 @@ hash Answer an hash value for the receiver -primReplaceFrom: start to: stop with: replacementString startingAt: replaceStart - Private - Replace the characters from start to stop with new - characters contained in replacementString (which, actually, can be - any variable byte class, starting at the replaceStart location of - replacementString - replaceFrom: start to: stop with: aString startingAt: replaceStart Replace the characters from start to stop with new characters whose ASCII codes are contained in aString, starting at the replaceStart @@ -860,9 +1740,9 @@  -File: gst-base.info, Node: String-converting, Next: String-printing, Prev: String-built ins, Up: String +File: gst-base.info, Node: String-converting, Next: String-filesystem, Prev: String-built ins, Up: String -1.151.6 String: converting +1.155.6 String: converting -------------------------- asByteArray @@ -880,9 +1760,23 @@  -File: gst-base.info, Node: String-printing, Next: String-regex, Prev: String-converting, Up: String +File: gst-base.info, Node: String-filesystem, Next: String-printing, Prev: String-converting, Up: String + +1.155.7 String: filesystem +-------------------------- + +/ aName + Answer a File object as appropriate for a file named 'aName' in + the directory represented by the receiver. -1.151.7 String: printing +asFile + Answer a File object for the file whose name is in the receiver. + + + +File: gst-base.info, Node: String-printing, Next: String-regex, Prev: String-filesystem, Up: String + +1.155.8 String: printing ------------------------ displayOn: aStream @@ -910,7 +1804,7 @@  File: gst-base.info, Node: String-regex, Next: String-testing functionality, Prev: String-printing, Up: String -1.151.8 String: regex +1.155.9 String: regex --------------------- =~ pattern @@ -938,27 +1832,34 @@ asRegex Answer the receiver, converted to a Regex object. -copyFrom: from to: to replacingAllRegex: pattern with: str +copyFrom: from to: to replacingAllRegex: pattern with: aStringOrBlock Returns the substring of the receiver between from and to. Any - match of pattern in that part of the string is replaced with str - after substituting %n sequences with the captured subexpressions - of the match (as in #%). + match of pattern in that part of the string is replaced using + aStringOrBlock as follows: if it is a block, a RegexResults object + is passed, while if it is a string, %n sequences are replaced with + the captured subexpressions of the match (as in #%). -copyFrom: from to: to replacingRegex: pattern with: str +copyFrom: from to: to replacingRegex: pattern with: aStringOrBlock Returns the substring of the receiver between from and to. If pattern has a match in that part of the string, the match is - replaced with str after substituting %n sequences with the - captured subexpressions of the match (as in #%). + replaced using aStringOrBlock as follows: if it is a block, a + RegexResults object is passed, while if it is a string, %n + sequences are replaced with the captured subexpressions of the + match (as in #%). -copyReplacingAllRegex: pattern with: str +copyReplacingAllRegex: pattern with: aStringOrBlock Returns the receiver after replacing all the matches of pattern (if - any) with str. %n sequences present in str are substituted with - the captured subexpressions of the match (as in #%). + any) using aStringOrBlock as follows: if it is a block, a + RegexResults object is passed, while if it is a string, %n + sequences are replaced with the captured subexpressions of the + match (as in #%). -copyReplacingRegex: pattern with: str +copyReplacingRegex: pattern with: aStringOrBlock Returns the receiver after replacing the first match of pattern (if - any) with str. %n sequences present in str are substituted with - the captured subexpressions of the match (as in #%). + any) using aStringOrBlock as follows: if it is a block, a + RegexResults object is passed, while if it is a string, %n + sequences are replaced with the captured subexpressions of the + match (as in #%). indexOfRegex: regexString If an occurrence of the regex is present in the receiver, return @@ -1023,16 +1924,19 @@ given range of indices. For each match, pass the RegexResults object to aBlock. -replacingAllRegex: pattern with: str +replacingAllRegex: pattern with: aStringOrBlock Returns the receiver if the pattern has no match in it. Otherwise, - any match of pattern in that part of the string is replaced with - str after substituting %n sequences with the captured - subexpressions of the match (as in #%). + any match of pattern in that part of the string is replaced using + aStringOrBlock as follows: if it is a block, a RegexResults object + is passed, while if it is a string, %n sequences are replaced with + the captured subexpressions of the match (as in #%). -replacingRegex: pattern with: str +replacingRegex: pattern with: aStringOrBlock Returns the receiver if the pattern has no match in it. If it has - a match, it is replaced with str after substituting %n sequences - with the captured subexpressions of the match (as in #%). + a match, it is replaced using aStringOrBlock as follows: if it is + a block, a RegexResults object is passed, while if it is a string, + %n sequences are replaced with the captured subexpressions of the + match (as in #%). searchRegex: pattern A synonym for #=~. Answer a RegexResults object for matching the @@ -1067,8 +1971,8 @@  File: gst-base.info, Node: String-testing functionality, Prev: String-regex, Up: String -1.151.9 String: testing functionality -------------------------------------- +1.155.10 String: testing functionality +-------------------------------------- isString Answer `true'. @@ -1077,7 +1981,7 @@  File: gst-base.info, Node: Symbol, Next: SymLink, Prev: String, Up: Base classes -1.152 Symbol +1.156 Symbol ============ Defined in namespace Smalltalk @@ -1104,7 +2008,7 @@  File: gst-base.info, Node: Symbol class-built ins, Next: Symbol class-instance creation, Up: Symbol -1.152.1 Symbol class: built ins +1.156.1 Symbol class: built ins ------------------------------- intern: aString @@ -1114,7 +2018,7 @@  File: gst-base.info, Node: Symbol class-instance creation, Next: Symbol class-symbol table, Prev: Symbol class-built ins, Up: Symbol -1.152.2 Symbol class: instance creation +1.156.2 Symbol class: instance creation --------------------------------------- internCharacter: aCharacter @@ -1149,7 +2053,7 @@  File: gst-base.info, Node: Symbol class-symbol table, Next: Symbol-basic, Prev: Symbol class-instance creation, Up: Symbol -1.152.3 Symbol class: symbol table +1.156.3 Symbol class: symbol table ---------------------------------- hasInterned: aString ifTrue: aBlock @@ -1182,7 +2086,7 @@  File: gst-base.info, Node: Symbol-basic, Next: Symbol-built ins, Prev: Symbol class-symbol table, Up: Symbol -1.152.4 Symbol: basic +1.156.4 Symbol: basic --------------------- deepCopy @@ -1207,7 +2111,7 @@  File: gst-base.info, Node: Symbol-built ins, Next: Symbol-converting, Prev: Symbol-basic, Up: Symbol -1.152.5 Symbol: built ins +1.156.5 Symbol: built ins ------------------------- = aSymbol @@ -1221,7 +2125,7 @@  File: gst-base.info, Node: Symbol-converting, Next: Symbol-misc, Prev: Symbol-built ins, Up: Symbol -1.152.6 Symbol: converting +1.156.6 Symbol: converting -------------------------- asString @@ -1235,7 +2139,7 @@  File: gst-base.info, Node: Symbol-misc, Next: Symbol-storing, Prev: Symbol-converting, Up: Symbol -1.152.7 Symbol: misc +1.156.7 Symbol: misc -------------------- species @@ -1245,7 +2149,7 @@  File: gst-base.info, Node: Symbol-storing, Next: Symbol-testing, Prev: Symbol-misc, Up: Symbol -1.152.8 Symbol: storing +1.156.8 Symbol: storing ----------------------- displayOn: aStream @@ -1274,7 +2178,7 @@  File: gst-base.info, Node: Symbol-testing, Next: Symbol-testing functionality, Prev: Symbol-storing, Up: Symbol -1.152.9 Symbol: testing +1.156.9 Symbol: testing ----------------------- isSimpleSymbol @@ -1285,7 +2189,7 @@  File: gst-base.info, Node: Symbol-testing functionality, Prev: Symbol-testing, Up: Symbol -1.152.10 Symbol: testing functionality +1.156.10 Symbol: testing functionality -------------------------------------- isString @@ -1298,7 +2202,7 @@  File: gst-base.info, Node: SymLink, Next: SystemDictionary, Prev: Symbol, Up: Base classes -1.153 SymLink +1.157 SymLink ============= Defined in namespace Smalltalk @@ -1318,7 +2222,7 @@  File: gst-base.info, Node: SymLink class-instance creation, Next: SymLink-accessing, Up: SymLink -1.153.1 SymLink class: instance creation +1.157.1 SymLink class: instance creation ---------------------------------------- symbol: aSymbol nextLink: aSymLink @@ -1329,7 +2233,7 @@  File: gst-base.info, Node: SymLink-accessing, Next: SymLink-iteration, Prev: SymLink class-instance creation, Up: SymLink -1.153.2 SymLink: accessing +1.157.2 SymLink: accessing -------------------------- symbol @@ -1342,7 +2246,7 @@  File: gst-base.info, Node: SymLink-iteration, Next: SymLink-printing, Prev: SymLink-accessing, Up: SymLink -1.153.3 SymLink: iteration +1.157.3 SymLink: iteration -------------------------- do: aBlock @@ -1352,7 +2256,7 @@  File: gst-base.info, Node: SymLink-printing, Prev: SymLink-iteration, Up: SymLink -1.153.4 SymLink: printing +1.157.4 SymLink: printing ------------------------- printOn: aStream @@ -1362,7 +2266,7 @@  File: gst-base.info, Node: SystemDictionary, Next: SystemExceptions.AlreadyDefined, Prev: SymLink, Up: Base classes -1.154 SystemDictionary +1.158 SystemDictionary ====================== Defined in namespace Smalltalk @@ -1388,7 +2292,7 @@  File: gst-base.info, Node: SystemDictionary class-initialization, Next: SystemDictionary-basic, Up: SystemDictionary -1.154.1 SystemDictionary class: initialization +1.158.1 SystemDictionary class: initialization ---------------------------------------------- initialize @@ -1398,7 +2302,7 @@  File: gst-base.info, Node: SystemDictionary-basic, Next: SystemDictionary-builtins, Prev: SystemDictionary class-initialization, Up: SystemDictionary -1.154.2 SystemDictionary: basic +1.158.2 SystemDictionary: basic ------------------------------- halt @@ -1412,7 +2316,7 @@  File: gst-base.info, Node: SystemDictionary-builtins, Next: SystemDictionary-c call-outs, Prev: SystemDictionary-basic, Up: SystemDictionary -1.154.3 SystemDictionary: builtins +1.158.3 SystemDictionary: builtins ---------------------------------- basicBacktrace @@ -1457,7 +2361,7 @@  File: gst-base.info, Node: SystemDictionary-c call-outs, Next: SystemDictionary-command-line, Prev: SystemDictionary-builtins, Up: SystemDictionary -1.154.4 SystemDictionary: c call-outs +1.158.4 SystemDictionary: c call-outs ------------------------------------- getArgc @@ -1479,7 +2383,7 @@  File: gst-base.info, Node: SystemDictionary-command-line, Next: SystemDictionary-miscellaneous, Prev: SystemDictionary-c call-outs, Up: SystemDictionary -1.154.5 SystemDictionary: command-line +1.158.5 SystemDictionary: command-line -------------------------------------- arguments: pattern do: actionBlock @@ -1531,7 +2435,7 @@  File: gst-base.info, Node: SystemDictionary-miscellaneous, Next: SystemDictionary-printing, Prev: SystemDictionary-command-line, Up: SystemDictionary -1.154.6 SystemDictionary: miscellaneous +1.158.6 SystemDictionary: miscellaneous --------------------------------------- arguments @@ -1548,7 +2452,7 @@  File: gst-base.info, Node: SystemDictionary-printing, Next: SystemDictionary-special accessing, Prev: SystemDictionary-miscellaneous, Up: SystemDictionary -1.154.7 SystemDictionary: printing +1.158.7 SystemDictionary: printing ---------------------------------- nameIn: aNamespace @@ -1564,7 +2468,7 @@  File: gst-base.info, Node: SystemDictionary-special accessing, Next: SystemDictionary-testing, Prev: SystemDictionary-printing, Up: SystemDictionary -1.154.8 SystemDictionary: special accessing +1.158.8 SystemDictionary: special accessing ------------------------------------------- addFeature: aFeature @@ -1584,7 +2488,7 @@  File: gst-base.info, Node: SystemDictionary-testing, Prev: SystemDictionary-special accessing, Up: SystemDictionary -1.154.9 SystemDictionary: testing +1.158.9 SystemDictionary: testing --------------------------------- imageLocal @@ -1598,7 +2502,7 @@  File: gst-base.info, Node: SystemExceptions.AlreadyDefined, Next: SystemExceptions.ArgumentOutOfRange, Prev: SystemDictionary, Up: Base classes -1.155 SystemExceptions.AlreadyDefined +1.159 SystemExceptions.AlreadyDefined ===================================== Defined in namespace Smalltalk.SystemExceptions @@ -1614,7 +2518,7 @@  File: gst-base.info, Node: SystemExceptions.AlreadyDefined-accessing, Up: SystemExceptions.AlreadyDefined -1.155.1 SystemExceptions.AlreadyDefined: accessing +1.159.1 SystemExceptions.AlreadyDefined: accessing -------------------------------------------------- description @@ -1624,7 +2528,7 @@  File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange, Next: SystemExceptions.BadReturn, Prev: SystemExceptions.AlreadyDefined, Up: Base classes -1.156 SystemExceptions.ArgumentOutOfRange +1.160 SystemExceptions.ArgumentOutOfRange ========================================= Defined in namespace Smalltalk.SystemExceptions @@ -1641,7 +2545,7 @@  File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange class-signaling, Next: SystemExceptions.ArgumentOutOfRange-accessing, Up: SystemExceptions.ArgumentOutOfRange -1.156.1 SystemExceptions.ArgumentOutOfRange class: signaling +1.160.1 SystemExceptions.ArgumentOutOfRange class: signaling ------------------------------------------------------------ signalOn: value mustBeBetween: low and: high @@ -1651,7 +2555,7 @@  File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange-accessing, Prev: SystemExceptions.ArgumentOutOfRange class-signaling, Up: SystemExceptions.ArgumentOutOfRange -1.156.2 SystemExceptions.ArgumentOutOfRange: accessing +1.160.2 SystemExceptions.ArgumentOutOfRange: accessing ------------------------------------------------------ description @@ -1673,7 +2577,7 @@  File: gst-base.info, Node: SystemExceptions.BadReturn, Next: SystemExceptions.CInterfaceError, Prev: SystemExceptions.ArgumentOutOfRange, Up: Base classes -1.157 SystemExceptions.BadReturn +1.161 SystemExceptions.BadReturn ================================ Defined in namespace Smalltalk.SystemExceptions @@ -1689,7 +2593,7 @@  File: gst-base.info, Node: SystemExceptions.BadReturn-accessing, Up: SystemExceptions.BadReturn -1.157.1 SystemExceptions.BadReturn: accessing +1.161.1 SystemExceptions.BadReturn: accessing --------------------------------------------- description @@ -1699,7 +2603,7 @@  File: gst-base.info, Node: SystemExceptions.CInterfaceError, Next: SystemExceptions.EmptyCollection, Prev: SystemExceptions.BadReturn, Up: Base classes -1.158 SystemExceptions.CInterfaceError +1.162 SystemExceptions.CInterfaceError ====================================== Defined in namespace Smalltalk.SystemExceptions @@ -1715,7 +2619,7 @@  File: gst-base.info, Node: SystemExceptions.CInterfaceError-accessing, Up: SystemExceptions.CInterfaceError -1.158.1 SystemExceptions.CInterfaceError: accessing +1.162.1 SystemExceptions.CInterfaceError: accessing --------------------------------------------------- description @@ -1725,7 +2629,7 @@  File: gst-base.info, Node: SystemExceptions.EmptyCollection, Next: SystemExceptions.EndOfStream, Prev: SystemExceptions.CInterfaceError, Up: Base classes -1.159 SystemExceptions.EmptyCollection +1.163 SystemExceptions.EmptyCollection ====================================== Defined in namespace Smalltalk.SystemExceptions @@ -1740,7 +2644,7 @@  File: gst-base.info, Node: SystemExceptions.EmptyCollection-accessing, Up: SystemExceptions.EmptyCollection -1.159.1 SystemExceptions.EmptyCollection: accessing +1.163.1 SystemExceptions.EmptyCollection: accessing --------------------------------------------------- description @@ -1750,7 +2654,7 @@  File: gst-base.info, Node: SystemExceptions.EndOfStream, Next: SystemExceptions.FileError, Prev: SystemExceptions.EmptyCollection, Up: Base classes -1.160 SystemExceptions.EndOfStream +1.164 SystemExceptions.EndOfStream ================================== Defined in namespace Smalltalk.SystemExceptions @@ -1766,7 +2670,7 @@  File: gst-base.info, Node: SystemExceptions.EndOfStream class-signaling, Next: SystemExceptions.EndOfStream-accessing, Up: SystemExceptions.EndOfStream -1.160.1 SystemExceptions.EndOfStream class: signaling +1.164.1 SystemExceptions.EndOfStream class: signaling ----------------------------------------------------- signalOn: stream @@ -1776,7 +2680,7 @@  File: gst-base.info, Node: SystemExceptions.EndOfStream-accessing, Prev: SystemExceptions.EndOfStream class-signaling, Up: SystemExceptions.EndOfStream -1.160.2 SystemExceptions.EndOfStream: accessing +1.164.2 SystemExceptions.EndOfStream: accessing ----------------------------------------------- description @@ -1792,7 +2696,7 @@  File: gst-base.info, Node: SystemExceptions.FileError, Next: SystemExceptions.IndexOutOfRange, Prev: SystemExceptions.EndOfStream, Up: Base classes -1.161 SystemExceptions.FileError +1.165 SystemExceptions.FileError ================================ Defined in namespace Smalltalk.SystemExceptions @@ -1808,7 +2712,7 @@  File: gst-base.info, Node: SystemExceptions.FileError-accessing, Up: SystemExceptions.FileError -1.161.1 SystemExceptions.FileError: accessing +1.165.1 SystemExceptions.FileError: accessing --------------------------------------------- description @@ -1818,7 +2722,7 @@  File: gst-base.info, Node: SystemExceptions.IndexOutOfRange, Next: SystemExceptions.InvalidArgument, Prev: SystemExceptions.FileError, Up: Base classes -1.162 SystemExceptions.IndexOutOfRange +1.166 SystemExceptions.IndexOutOfRange ====================================== Defined in namespace Smalltalk.SystemExceptions @@ -1835,7 +2739,7 @@  File: gst-base.info, Node: SystemExceptions.IndexOutOfRange class-signaling, Next: SystemExceptions.IndexOutOfRange-accessing, Up: SystemExceptions.IndexOutOfRange -1.162.1 SystemExceptions.IndexOutOfRange class: signaling +1.166.1 SystemExceptions.IndexOutOfRange class: signaling --------------------------------------------------------- signalOn: aCollection withIndex: value @@ -1845,7 +2749,7 @@  File: gst-base.info, Node: SystemExceptions.IndexOutOfRange-accessing, Prev: SystemExceptions.IndexOutOfRange class-signaling, Up: SystemExceptions.IndexOutOfRange -1.162.2 SystemExceptions.IndexOutOfRange: accessing +1.166.2 SystemExceptions.IndexOutOfRange: accessing --------------------------------------------------- collection @@ -1864,7 +2768,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidArgument, Next: SystemExceptions.InvalidProcessState, Prev: SystemExceptions.IndexOutOfRange, Up: Base classes -1.163 SystemExceptions.InvalidArgument +1.167 SystemExceptions.InvalidArgument ====================================== Defined in namespace Smalltalk.SystemExceptions @@ -1879,7 +2783,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidArgument-accessing, Up: SystemExceptions.InvalidArgument -1.163.1 SystemExceptions.InvalidArgument: accessing +1.167.1 SystemExceptions.InvalidArgument: accessing --------------------------------------------------- messageText @@ -1889,7 +2793,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidProcessState, Next: SystemExceptions.InvalidSize, Prev: SystemExceptions.InvalidArgument, Up: Base classes -1.164 SystemExceptions.InvalidProcessState +1.168 SystemExceptions.InvalidProcessState ========================================== Defined in namespace Smalltalk.SystemExceptions @@ -1905,7 +2809,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidProcessState-accessing, Up: SystemExceptions.InvalidProcessState -1.164.1 SystemExceptions.InvalidProcessState: accessing +1.168.1 SystemExceptions.InvalidProcessState: accessing ------------------------------------------------------- description @@ -1915,7 +2819,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidSize, Next: SystemExceptions.InvalidValue, Prev: SystemExceptions.InvalidProcessState, Up: Base classes -1.165 SystemExceptions.InvalidSize +1.169 SystemExceptions.InvalidSize ================================== Defined in namespace Smalltalk.SystemExceptions @@ -1930,7 +2834,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidSize-accessing, Up: SystemExceptions.InvalidSize -1.165.1 SystemExceptions.InvalidSize: accessing +1.169.1 SystemExceptions.InvalidSize: accessing ----------------------------------------------- description @@ -1940,7 +2844,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidValue, Next: SystemExceptions.MustBeBoolean, Prev: SystemExceptions.InvalidSize, Up: Base classes -1.166 SystemExceptions.InvalidValue +1.170 SystemExceptions.InvalidValue =================================== Defined in namespace Smalltalk.SystemExceptions @@ -1957,7 +2861,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidValue class-signaling, Next: SystemExceptions.InvalidValue-accessing, Up: SystemExceptions.InvalidValue -1.166.1 SystemExceptions.InvalidValue class: signaling +1.170.1 SystemExceptions.InvalidValue class: signaling ------------------------------------------------------ signalOn: value @@ -1971,7 +2875,7 @@  File: gst-base.info, Node: SystemExceptions.InvalidValue-accessing, Prev: SystemExceptions.InvalidValue class-signaling, Up: SystemExceptions.InvalidValue -1.166.2 SystemExceptions.InvalidValue: accessing +1.170.2 SystemExceptions.InvalidValue: accessing ------------------------------------------------ description @@ -1990,7 +2894,7 @@  File: gst-base.info, Node: SystemExceptions.MustBeBoolean, Next: SystemExceptions.MutationError, Prev: SystemExceptions.InvalidValue, Up: Base classes -1.167 SystemExceptions.MustBeBoolean +1.171 SystemExceptions.MustBeBoolean ==================================== Defined in namespace Smalltalk.SystemExceptions @@ -2005,7 +2909,7 @@  File: gst-base.info, Node: SystemExceptions.MustBeBoolean class-signaling, Up: SystemExceptions.MustBeBoolean -1.167.1 SystemExceptions.MustBeBoolean class: signaling +1.171.1 SystemExceptions.MustBeBoolean class: signaling ------------------------------------------------------- signalOn: anObject @@ -2016,7 +2920,7 @@  File: gst-base.info, Node: SystemExceptions.MutationError, Next: SystemExceptions.NoRunnableProcess, Prev: SystemExceptions.MustBeBoolean, Up: Base classes -1.168 SystemExceptions.MutationError +1.172 SystemExceptions.MutationError ==================================== Defined in namespace Smalltalk.SystemExceptions @@ -2032,7 +2936,7 @@  File: gst-base.info, Node: SystemExceptions.MutationError class-instance creation, Next: SystemExceptions.MutationError-accessing, Up: SystemExceptions.MutationError -1.168.1 SystemExceptions.MutationError class: instance creation +1.172.1 SystemExceptions.MutationError class: instance creation --------------------------------------------------------------- new @@ -2043,7 +2947,7 @@  File: gst-base.info, Node: SystemExceptions.MutationError-accessing, Prev: SystemExceptions.MutationError class-instance creation, Up: SystemExceptions.MutationError -1.168.2 SystemExceptions.MutationError: accessing +1.172.2 SystemExceptions.MutationError: accessing ------------------------------------------------- description @@ -2053,7 +2957,7 @@  File: gst-base.info, Node: SystemExceptions.NoRunnableProcess, Next: SystemExceptions.NotEnoughElements, Prev: SystemExceptions.MutationError, Up: Base classes -1.169 SystemExceptions.NoRunnableProcess +1.173 SystemExceptions.NoRunnableProcess ======================================== Defined in namespace Smalltalk.SystemExceptions @@ -2068,7 +2972,7 @@  File: gst-base.info, Node: SystemExceptions.NoRunnableProcess-accessing, Up: SystemExceptions.NoRunnableProcess -1.169.1 SystemExceptions.NoRunnableProcess: accessing +1.173.1 SystemExceptions.NoRunnableProcess: accessing ----------------------------------------------------- description @@ -2078,7 +2982,7 @@  File: gst-base.info, Node: SystemExceptions.NotEnoughElements, Next: SystemExceptions.NotFound, Prev: SystemExceptions.NoRunnableProcess, Up: Base classes -1.170 SystemExceptions.NotEnoughElements +1.174 SystemExceptions.NotEnoughElements ======================================== Defined in namespace Smalltalk.SystemExceptions @@ -2095,7 +2999,7 @@  File: gst-base.info, Node: SystemExceptions.NotEnoughElements class-signaling, Next: SystemExceptions.NotEnoughElements-accessing, Up: SystemExceptions.NotEnoughElements -1.170.1 SystemExceptions.NotEnoughElements class: signaling +1.174.1 SystemExceptions.NotEnoughElements class: signaling ----------------------------------------------------------- signalOn: remainingCount @@ -2105,7 +3009,7 @@  File: gst-base.info, Node: SystemExceptions.NotEnoughElements-accessing, Prev: SystemExceptions.NotEnoughElements class-signaling, Up: SystemExceptions.NotEnoughElements -1.170.2 SystemExceptions.NotEnoughElements: accessing +1.174.2 SystemExceptions.NotEnoughElements: accessing ----------------------------------------------------- description @@ -2124,7 +3028,7 @@  File: gst-base.info, Node: SystemExceptions.NotFound, Next: SystemExceptions.NotImplemented, Prev: SystemExceptions.NotEnoughElements, Up: Base classes -1.171 SystemExceptions.NotFound +1.175 SystemExceptions.NotFound =============================== Defined in namespace Smalltalk.SystemExceptions @@ -2140,7 +3044,7 @@  File: gst-base.info, Node: SystemExceptions.NotFound class-accessing, Next: SystemExceptions.NotFound-accessing, Up: SystemExceptions.NotFound -1.171.1 SystemExceptions.NotFound class: accessing +1.175.1 SystemExceptions.NotFound class: accessing -------------------------------------------------- signalOn: value what: aString @@ -2151,7 +3055,7 @@  File: gst-base.info, Node: SystemExceptions.NotFound-accessing, Prev: SystemExceptions.NotFound class-accessing, Up: SystemExceptions.NotFound -1.171.2 SystemExceptions.NotFound: accessing +1.175.2 SystemExceptions.NotFound: accessing -------------------------------------------- description @@ -2161,7 +3065,7 @@  File: gst-base.info, Node: SystemExceptions.NotImplemented, Next: SystemExceptions.NotIndexable, Prev: SystemExceptions.NotFound, Up: Base classes -1.172 SystemExceptions.NotImplemented +1.176 SystemExceptions.NotImplemented ===================================== Defined in namespace Smalltalk.SystemExceptions @@ -2176,7 +3080,7 @@  File: gst-base.info, Node: SystemExceptions.NotImplemented-accessing, Up: SystemExceptions.NotImplemented -1.172.1 SystemExceptions.NotImplemented: accessing +1.176.1 SystemExceptions.NotImplemented: accessing -------------------------------------------------- description @@ -2186,7 +3090,7 @@  File: gst-base.info, Node: SystemExceptions.NotIndexable, Next: SystemExceptions.NotYetImplemented, Prev: SystemExceptions.NotImplemented, Up: Base classes -1.173 SystemExceptions.NotIndexable +1.177 SystemExceptions.NotIndexable =================================== Defined in namespace Smalltalk.SystemExceptions @@ -2201,7 +3105,7 @@  File: gst-base.info, Node: SystemExceptions.NotIndexable-accessing, Up: SystemExceptions.NotIndexable -1.173.1 SystemExceptions.NotIndexable: accessing +1.177.1 SystemExceptions.NotIndexable: accessing ------------------------------------------------ description @@ -2211,7 +3115,7 @@  File: gst-base.info, Node: SystemExceptions.NotYetImplemented, Next: SystemExceptions.PackageNotAvailable, Prev: SystemExceptions.NotIndexable, Up: Base classes -1.174 SystemExceptions.NotYetImplemented +1.178 SystemExceptions.NotYetImplemented ======================================== Defined in namespace Smalltalk.SystemExceptions @@ -2227,7 +3131,7 @@  File: gst-base.info, Node: SystemExceptions.NotYetImplemented-accessing, Up: SystemExceptions.NotYetImplemented -1.174.1 SystemExceptions.NotYetImplemented: accessing +1.178.1 SystemExceptions.NotYetImplemented: accessing ----------------------------------------------------- description @@ -2237,7 +3141,7 @@  File: gst-base.info, Node: SystemExceptions.PackageNotAvailable, Next: SystemExceptions.PrimitiveFailed, Prev: SystemExceptions.NotYetImplemented, Up: Base classes -1.175 SystemExceptions.PackageNotAvailable +1.179 SystemExceptions.PackageNotAvailable ========================================== Defined in namespace Smalltalk.SystemExceptions @@ -2252,7 +3156,7 @@  File: gst-base.info, Node: SystemExceptions.PackageNotAvailable class-still unclassified, Next: SystemExceptions.PackageNotAvailable-description, Up: SystemExceptions.PackageNotAvailable -1.175.1 SystemExceptions.PackageNotAvailable class: still unclassified +1.179.1 SystemExceptions.PackageNotAvailable class: still unclassified ---------------------------------------------------------------------- signal: aString @@ -2263,7 +3167,7 @@  File: gst-base.info, Node: SystemExceptions.PackageNotAvailable-description, Prev: SystemExceptions.PackageNotAvailable class-still unclassified, Up: SystemExceptions.PackageNotAvailable -1.175.2 SystemExceptions.PackageNotAvailable: description +1.179.2 SystemExceptions.PackageNotAvailable: description --------------------------------------------------------- isResumable @@ -2274,7 +3178,7 @@  File: gst-base.info, Node: SystemExceptions.PrimitiveFailed, Next: SystemExceptions.ProcessBeingTerminated, Prev: SystemExceptions.PackageNotAvailable, Up: Base classes -1.176 SystemExceptions.PrimitiveFailed +1.180 SystemExceptions.PrimitiveFailed ====================================== Defined in namespace Smalltalk.SystemExceptions @@ -2289,7 +3193,7 @@  File: gst-base.info, Node: SystemExceptions.PrimitiveFailed-accessing, Up: SystemExceptions.PrimitiveFailed -1.176.1 SystemExceptions.PrimitiveFailed: accessing +1.180.1 SystemExceptions.PrimitiveFailed: accessing --------------------------------------------------- description @@ -2299,7 +3203,7 @@  File: gst-base.info, Node: SystemExceptions.ProcessBeingTerminated, Next: SystemExceptions.ProcessTerminated, Prev: SystemExceptions.PrimitiveFailed, Up: Base classes -1.177 SystemExceptions.ProcessBeingTerminated +1.181 SystemExceptions.ProcessBeingTerminated ============================================= Defined in namespace Smalltalk.SystemExceptions @@ -2314,7 +3218,7 @@  File: gst-base.info, Node: SystemExceptions.ProcessBeingTerminated-accessing, Up: SystemExceptions.ProcessBeingTerminated -1.177.1 SystemExceptions.ProcessBeingTerminated: accessing +1.181.1 SystemExceptions.ProcessBeingTerminated: accessing ---------------------------------------------------------- description @@ -2330,7 +3234,7 @@  File: gst-base.info, Node: SystemExceptions.ProcessTerminated, Next: SystemExceptions.ReadOnlyObject, Prev: SystemExceptions.ProcessBeingTerminated, Up: Base classes -1.178 SystemExceptions.ProcessTerminated +1.182 SystemExceptions.ProcessTerminated ======================================== Defined in namespace Smalltalk.SystemExceptions @@ -2346,7 +3250,7 @@  File: gst-base.info, Node: SystemExceptions.ProcessTerminated-accessing, Up: SystemExceptions.ProcessTerminated -1.178.1 SystemExceptions.ProcessTerminated: accessing +1.182.1 SystemExceptions.ProcessTerminated: accessing ----------------------------------------------------- description @@ -2356,7 +3260,7 @@  File: gst-base.info, Node: SystemExceptions.ReadOnlyObject, Next: SystemExceptions.SecurityError, Prev: SystemExceptions.ProcessTerminated, Up: Base classes -1.179 SystemExceptions.ReadOnlyObject +1.183 SystemExceptions.ReadOnlyObject ===================================== Defined in namespace Smalltalk.SystemExceptions @@ -2371,7 +3275,7 @@  File: gst-base.info, Node: SystemExceptions.ReadOnlyObject-accessing, Up: SystemExceptions.ReadOnlyObject -1.179.1 SystemExceptions.ReadOnlyObject: accessing +1.183.1 SystemExceptions.ReadOnlyObject: accessing -------------------------------------------------- description @@ -2381,7 +3285,7 @@  File: gst-base.info, Node: SystemExceptions.SecurityError, Next: SystemExceptions.ShouldNotImplement, Prev: SystemExceptions.ReadOnlyObject, Up: Base classes -1.180 SystemExceptions.SecurityError +1.184 SystemExceptions.SecurityError ==================================== Defined in namespace Smalltalk.SystemExceptions @@ -2398,7 +3302,7 @@  File: gst-base.info, Node: SystemExceptions.SecurityError class-accessing, Next: SystemExceptions.SecurityError-accessing, Up: SystemExceptions.SecurityError -1.180.1 SystemExceptions.SecurityError class: accessing +1.184.1 SystemExceptions.SecurityError class: accessing ------------------------------------------------------- signal: aPermission @@ -2409,7 +3313,7 @@  File: gst-base.info, Node: SystemExceptions.SecurityError-accessing, Prev: SystemExceptions.SecurityError class-accessing, Up: SystemExceptions.SecurityError -1.180.2 SystemExceptions.SecurityError: accessing +1.184.2 SystemExceptions.SecurityError: accessing ------------------------------------------------- description @@ -2425,7 +3329,7 @@  File: gst-base.info, Node: SystemExceptions.ShouldNotImplement, Next: SystemExceptions.SubclassResponsibility, Prev: SystemExceptions.SecurityError, Up: Base classes -1.181 SystemExceptions.ShouldNotImplement +1.185 SystemExceptions.ShouldNotImplement ========================================= Defined in namespace Smalltalk.SystemExceptions @@ -2441,7 +3345,7 @@  File: gst-base.info, Node: SystemExceptions.ShouldNotImplement-accessing, Up: SystemExceptions.ShouldNotImplement -1.181.1 SystemExceptions.ShouldNotImplement: accessing +1.185.1 SystemExceptions.ShouldNotImplement: accessing ------------------------------------------------------ description @@ -2449,9 +3353,9 @@  -File: gst-base.info, Node: SystemExceptions.SubclassResponsibility, Next: SystemExceptions.UserInterrupt, Prev: SystemExceptions.ShouldNotImplement, Up: Base classes +File: gst-base.info, Node: SystemExceptions.SubclassResponsibility, Next: SystemExceptions.UnhandledException, Prev: SystemExceptions.ShouldNotImplement, Up: Base classes -1.182 SystemExceptions.SubclassResponsibility +1.186 SystemExceptions.SubclassResponsibility ============================================= Defined in namespace Smalltalk.SystemExceptions @@ -2467,7 +3371,7 @@  File: gst-base.info, Node: SystemExceptions.SubclassResponsibility-accessing, Up: SystemExceptions.SubclassResponsibility -1.182.1 SystemExceptions.SubclassResponsibility: accessing +1.186.1 SystemExceptions.SubclassResponsibility: accessing ---------------------------------------------------------- description @@ -2475,9 +3379,38 @@  -File: gst-base.info, Node: SystemExceptions.UserInterrupt, Next: SystemExceptions.VerificationError, Prev: SystemExceptions.SubclassResponsibility, Up: Base classes +File: gst-base.info, Node: SystemExceptions.UnhandledException, Next: SystemExceptions.UserInterrupt, Prev: SystemExceptions.SubclassResponsibility, Up: Base classes + +1.187 SystemExceptions.UnhandledException +========================================= + +Defined in namespace Smalltalk.SystemExceptions +Superclass: Exception +Category: Language-Exception + I am raised when a backtrace is shown to terminate the current + process. + +* Menu: + +* SystemExceptions.UnhandledException-accessing:: (instance) + + +File: gst-base.info, Node: SystemExceptions.UnhandledException-accessing, Up: SystemExceptions.UnhandledException + +1.187.1 SystemExceptions.UnhandledException: accessing +------------------------------------------------------ + +defaultAction + Terminate the currrent process. + +description + Answer a textual description of the exception. + + + +File: gst-base.info, Node: SystemExceptions.UserInterrupt, Next: SystemExceptions.VerificationError, Prev: SystemExceptions.UnhandledException, Up: Base classes -1.183 SystemExceptions.UserInterrupt +1.188 SystemExceptions.UserInterrupt ==================================== Defined in namespace Smalltalk.SystemExceptions @@ -2492,7 +3425,7 @@  File: gst-base.info, Node: SystemExceptions.UserInterrupt-accessing, Up: SystemExceptions.UserInterrupt -1.183.1 SystemExceptions.UserInterrupt: accessing +1.188.1 SystemExceptions.UserInterrupt: accessing ------------------------------------------------- description @@ -2502,7 +3435,7 @@  File: gst-base.info, Node: SystemExceptions.VerificationError, Next: SystemExceptions.VMError, Prev: SystemExceptions.UserInterrupt, Up: Base classes -1.184 SystemExceptions.VerificationError +1.189 SystemExceptions.VerificationError ======================================== Defined in namespace Smalltalk.SystemExceptions @@ -2517,7 +3450,7 @@  File: gst-base.info, Node: SystemExceptions.VerificationError-accessing, Up: SystemExceptions.VerificationError -1.184.1 SystemExceptions.VerificationError: accessing +1.189.1 SystemExceptions.VerificationError: accessing ----------------------------------------------------- description @@ -2527,7 +3460,7 @@  File: gst-base.info, Node: SystemExceptions.VMError, Next: SystemExceptions.WrongArgumentCount, Prev: SystemExceptions.VerificationError, Up: Base classes -1.185 SystemExceptions.VMError +1.190 SystemExceptions.VMError ============================== Defined in namespace Smalltalk.SystemExceptions @@ -2542,7 +3475,7 @@  File: gst-base.info, Node: SystemExceptions.VMError-accessing, Up: SystemExceptions.VMError -1.185.1 SystemExceptions.VMError: accessing +1.190.1 SystemExceptions.VMError: accessing ------------------------------------------- description @@ -2552,7 +3485,7 @@  File: gst-base.info, Node: SystemExceptions.WrongArgumentCount, Next: SystemExceptions.WrongClass, Prev: SystemExceptions.VMError, Up: Base classes -1.186 SystemExceptions.WrongArgumentCount +1.191 SystemExceptions.WrongArgumentCount ========================================= Defined in namespace Smalltalk.SystemExceptions @@ -2568,7 +3501,7 @@  File: gst-base.info, Node: SystemExceptions.WrongArgumentCount-accessing, Up: SystemExceptions.WrongArgumentCount -1.186.1 SystemExceptions.WrongArgumentCount: accessing +1.191.1 SystemExceptions.WrongArgumentCount: accessing ------------------------------------------------------ description @@ -2578,7 +3511,7 @@  File: gst-base.info, Node: SystemExceptions.WrongClass, Next: SystemExceptions.WrongMessageSent, Prev: SystemExceptions.WrongArgumentCount, Up: Base classes -1.187 SystemExceptions.WrongClass +1.192 SystemExceptions.WrongClass ================================= Defined in namespace Smalltalk.SystemExceptions @@ -2596,7 +3529,7 @@  File: gst-base.info, Node: SystemExceptions.WrongClass class-signaling, Next: SystemExceptions.WrongClass-accessing, Up: SystemExceptions.WrongClass -1.187.1 SystemExceptions.WrongClass class: signaling +1.192.1 SystemExceptions.WrongClass class: signaling ---------------------------------------------------- signalOn: anObject mustBe: aClassOrArray @@ -2611,7 +3544,7 @@  File: gst-base.info, Node: SystemExceptions.WrongClass-accessing, Prev: SystemExceptions.WrongClass class-signaling, Up: SystemExceptions.WrongClass -1.187.2 SystemExceptions.WrongClass: accessing +1.192.2 SystemExceptions.WrongClass: accessing ---------------------------------------------- description @@ -2634,7 +3567,7 @@  File: gst-base.info, Node: SystemExceptions.WrongMessageSent, Next: TextCollector, Prev: SystemExceptions.WrongClass, Up: Base classes -1.188 SystemExceptions.WrongMessageSent +1.193 SystemExceptions.WrongMessageSent ======================================= Defined in namespace Smalltalk.SystemExceptions @@ -2652,7 +3585,7 @@  File: gst-base.info, Node: SystemExceptions.WrongMessageSent class-signaling, Next: SystemExceptions.WrongMessageSent-accessing, Up: SystemExceptions.WrongMessageSent -1.188.1 SystemExceptions.WrongMessageSent class: signaling +1.193.1 SystemExceptions.WrongMessageSent class: signaling ---------------------------------------------------------- signalOn: selector useInstead: aSymbol @@ -2663,7 +3596,7 @@  File: gst-base.info, Node: SystemExceptions.WrongMessageSent-accessing, Prev: SystemExceptions.WrongMessageSent class-signaling, Up: SystemExceptions.WrongMessageSent -1.188.2 SystemExceptions.WrongMessageSent: accessing +1.193.2 SystemExceptions.WrongMessageSent: accessing ---------------------------------------------------- messageText @@ -2685,7 +3618,7 @@  File: gst-base.info, Node: TextCollector, Next: Time, Prev: SystemExceptions.WrongMessageSent, Up: Base classes -1.189 TextCollector +1.194 TextCollector =================== Defined in namespace Smalltalk @@ -2707,7 +3640,7 @@  File: gst-base.info, Node: TextCollector class-accessing, Next: TextCollector-accessing, Up: TextCollector -1.189.1 TextCollector class: accessing +1.194.1 TextCollector class: accessing -------------------------------------- message: receiverToSelectorAssociation @@ -2723,7 +3656,7 @@  File: gst-base.info, Node: TextCollector-accessing, Next: TextCollector-printing, Prev: TextCollector class-accessing, Up: TextCollector -1.189.2 TextCollector: accessing +1.194.2 TextCollector: accessing -------------------------------- cr @@ -2755,7 +3688,7 @@  File: gst-base.info, Node: TextCollector-printing, Next: TextCollector-set up, Prev: TextCollector-accessing, Up: TextCollector -1.189.3 TextCollector: printing +1.194.3 TextCollector: printing ------------------------------- print: anObject @@ -2768,7 +3701,7 @@  File: gst-base.info, Node: TextCollector-set up, Next: TextCollector-storing, Prev: TextCollector-printing, Up: TextCollector -1.189.4 TextCollector: set up +1.194.4 TextCollector: set up ----------------------------- message @@ -2785,7 +3718,7 @@  File: gst-base.info, Node: TextCollector-storing, Prev: TextCollector-set up, Up: TextCollector -1.189.5 TextCollector: storing +1.194.5 TextCollector: storing ------------------------------ store: anObject @@ -2798,7 +3731,7 @@  File: gst-base.info, Node: Time, Next: True, Prev: TextCollector, Up: Base classes -1.190 Time +1.195 Time ========== Defined in namespace Smalltalk @@ -2824,7 +3757,7 @@  File: gst-base.info, Node: Time class-basic (UTC), Next: Time class-builtins, Up: Time -1.190.1 Time class: basic (UTC) +1.195.1 Time class: basic (UTC) ------------------------------- midnight @@ -2844,7 +3777,7 @@  File: gst-base.info, Node: Time class-builtins, Next: Time class-clocks, Prev: Time class-basic (UTC), Up: Time -1.190.2 Time class: builtins +1.195.2 Time class: builtins ---------------------------- primMillisecondClock @@ -2872,7 +3805,7 @@  File: gst-base.info, Node: Time class-clocks, Next: Time class-initialization, Prev: Time class-builtins, Up: Time -1.190.3 Time class: clocks +1.195.3 Time class: clocks -------------------------- millisecondClock @@ -2894,7 +3827,7 @@  File: gst-base.info, Node: Time class-initialization, Next: Time class-instance creation, Prev: Time class-clocks, Up: Time -1.190.4 Time class: initialization +1.195.4 Time class: initialization ---------------------------------- initialize @@ -2907,7 +3840,7 @@  File: gst-base.info, Node: Time class-instance creation, Next: Time-accessing (ANSI for DateAndTimes), Prev: Time class-initialization, Up: Time -1.190.5 Time class: instance creation +1.195.5 Time class: instance creation ------------------------------------- fromSeconds: secondCount @@ -2940,7 +3873,7 @@  File: gst-base.info, Node: Time-accessing (ANSI for DateAndTimes), Next: Time-accessing (non ANSI & for Durations), Prev: Time class-instance creation, Up: Time -1.190.6 Time: accessing (ANSI for DateAndTimes) +1.195.6 Time: accessing (ANSI for DateAndTimes) ----------------------------------------------- hour @@ -2962,7 +3895,7 @@  File: gst-base.info, Node: Time-accessing (non ANSI & for Durations), Next: Time-arithmetic, Prev: Time-accessing (ANSI for DateAndTimes), Up: Time -1.190.7 Time: accessing (non ANSI & for Durations) +1.195.7 Time: accessing (non ANSI & for Durations) -------------------------------------------------- asSeconds @@ -2981,7 +3914,7 @@  File: gst-base.info, Node: Time-arithmetic, Next: Time-comparing, Prev: Time-accessing (non ANSI & for Durations), Up: Time -1.190.8 Time: arithmetic +1.195.8 Time: arithmetic ------------------------ addSeconds: timeAmount @@ -3002,7 +3935,7 @@  File: gst-base.info, Node: Time-comparing, Prev: Time-arithmetic, Up: Time -1.190.9 Time: comparing +1.195.9 Time: comparing ----------------------- < aTime @@ -3018,7 +3951,7 @@  File: gst-base.info, Node: True, Next: UndefinedObject, Prev: Time, Up: Base classes -1.191 True +1.196 True ========== Defined in namespace Smalltalk @@ -3036,7 +3969,7 @@  File: gst-base.info, Node: True-basic, Next: True-C hacks, Up: True -1.191.1 True: basic +1.196.1 True: basic ------------------- & aBoolean @@ -3080,7 +4013,7 @@  File: gst-base.info, Node: True-C hacks, Next: True-printing, Prev: True-basic, Up: True -1.191.2 True: C hacks +1.196.2 True: C hacks --------------------- asCBooleanValue @@ -3090,7 +4023,7 @@  File: gst-base.info, Node: True-printing, Prev: True-C hacks, Up: True -1.191.3 True: printing +1.196.3 True: printing ---------------------- printOn: aStream @@ -3100,7 +4033,7 @@  File: gst-base.info, Node: UndefinedObject, Next: UnicodeCharacter, Prev: True, Up: Base classes -1.192 UndefinedObject +1.197 UndefinedObject ===================== Defined in namespace Smalltalk @@ -3123,7 +4056,7 @@  File: gst-base.info, Node: UndefinedObject-basic, Next: UndefinedObject-class creation - alternative, Up: UndefinedObject -1.192.1 UndefinedObject: basic +1.197.1 UndefinedObject: basic ------------------------------ copy @@ -3139,7 +4072,7 @@  File: gst-base.info, Node: UndefinedObject-class creation - alternative, Next: UndefinedObject-class polymorphism, Prev: UndefinedObject-basic, Up: UndefinedObject -1.192.2 UndefinedObject: class creation - alternative +1.197.2 UndefinedObject: class creation - alternative ----------------------------------------------------- subclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames @@ -3170,7 +4103,7 @@  File: gst-base.info, Node: UndefinedObject-class polymorphism, Next: UndefinedObject-CObject interoperability, Prev: UndefinedObject-class creation - alternative, Up: UndefinedObject -1.192.3 UndefinedObject: class polymorphism +1.197.3 UndefinedObject: class polymorphism ------------------------------------------- allSubclasses @@ -3232,7 +4165,7 @@  File: gst-base.info, Node: UndefinedObject-CObject interoperability, Next: UndefinedObject-dependents access, Prev: UndefinedObject-class polymorphism, Up: UndefinedObject -1.192.4 UndefinedObject: CObject interoperability +1.197.4 UndefinedObject: CObject interoperability ------------------------------------------------- free @@ -3246,7 +4179,7 @@  File: gst-base.info, Node: UndefinedObject-dependents access, Next: UndefinedObject-printing, Prev: UndefinedObject-CObject interoperability, Up: UndefinedObject -1.192.5 UndefinedObject: dependents access +1.197.5 UndefinedObject: dependents access ------------------------------------------ addDependent: ignored @@ -3259,7 +4192,7 @@  File: gst-base.info, Node: UndefinedObject-printing, Next: UndefinedObject-storing, Prev: UndefinedObject-dependents access, Up: UndefinedObject -1.192.6 UndefinedObject: printing +1.197.6 UndefinedObject: printing --------------------------------- printOn: aStream @@ -3274,7 +4207,7 @@  File: gst-base.info, Node: UndefinedObject-storing, Next: UndefinedObject-testing, Prev: UndefinedObject-printing, Up: UndefinedObject -1.192.7 UndefinedObject: storing +1.197.7 UndefinedObject: storing -------------------------------- isLiteralObject @@ -3290,7 +4223,7 @@  File: gst-base.info, Node: UndefinedObject-testing, Prev: UndefinedObject-storing, Up: UndefinedObject -1.192.8 UndefinedObject: testing +1.197.8 UndefinedObject: testing -------------------------------- ifNil: nilBlock @@ -3320,7 +4253,7 @@  File: gst-base.info, Node: UnicodeCharacter, Next: UnicodeString, Prev: UndefinedObject, Up: Base classes -1.193 UnicodeCharacter +1.198 UnicodeCharacter ====================== Defined in namespace Smalltalk @@ -3336,11 +4269,12 @@ * Menu: * UnicodeCharacter class-built ins:: (class) +* UnicodeCharacter-coercion methods:: (instance)  -File: gst-base.info, Node: UnicodeCharacter class-built ins, Up: UnicodeCharacter +File: gst-base.info, Node: UnicodeCharacter class-built ins, Next: UnicodeCharacter-coercion methods, Up: UnicodeCharacter -1.193.1 UnicodeCharacter class: built ins +1.198.1 UnicodeCharacter class: built ins ----------------------------------------- method @@ -3356,9 +4290,19 @@  +File: gst-base.info, Node: UnicodeCharacter-coercion methods, Prev: UnicodeCharacter class-built ins, Up: UnicodeCharacter + +1.198.2 UnicodeCharacter: coercion methods +------------------------------------------ + +* aNumber + Returns a String with aNumber occurrences of the receiver. + + + File: gst-base.info, Node: UnicodeString, Next: ValueAdaptor, Prev: UnicodeCharacter, Up: Base classes -1.194 UnicodeString +1.199 UnicodeString =================== Defined in namespace Smalltalk @@ -3378,7 +4322,7 @@  File: gst-base.info, Node: UnicodeString class-converting, Next: UnicodeString class-multibyte encodings, Up: UnicodeString -1.194.1 UnicodeString class: converting +1.199.1 UnicodeString class: converting --------------------------------------- fromString: aString @@ -3390,7 +4334,7 @@  File: gst-base.info, Node: UnicodeString class-multibyte encodings, Next: UnicodeString-built-ins, Prev: UnicodeString class-converting, Up: UnicodeString -1.194.2 UnicodeString class: multibyte encodings +1.199.2 UnicodeString class: multibyte encodings ------------------------------------------------ defaultEncoding @@ -3405,7 +4349,7 @@  File: gst-base.info, Node: UnicodeString-built-ins, Next: UnicodeString-converting, Prev: UnicodeString class-multibyte encodings, Up: UnicodeString -1.194.3 UnicodeString: built-ins +1.199.3 UnicodeString: built-ins -------------------------------- hash @@ -3415,7 +4359,7 @@  File: gst-base.info, Node: UnicodeString-converting, Next: UnicodeString-multibyte encodings, Prev: UnicodeString-built-ins, Up: UnicodeString -1.194.4 UnicodeString: converting +1.199.4 UnicodeString: converting --------------------------------- asString @@ -3440,7 +4384,7 @@  File: gst-base.info, Node: UnicodeString-multibyte encodings, Prev: UnicodeString-converting, Up: UnicodeString -1.194.5 UnicodeString: multibyte encodings +1.199.5 UnicodeString: multibyte encodings ------------------------------------------ encoding @@ -3456,7 +4400,7 @@  File: gst-base.info, Node: ValueAdaptor, Next: ValueHolder, Prev: UnicodeString, Up: Base classes -1.195 ValueAdaptor +1.200 ValueAdaptor ================== Defined in namespace Smalltalk @@ -3474,7 +4418,7 @@  File: gst-base.info, Node: ValueAdaptor class-creating instances, Next: ValueAdaptor-accessing, Up: ValueAdaptor -1.195.1 ValueAdaptor class: creating instances +1.200.1 ValueAdaptor class: creating instances ---------------------------------------------- new @@ -3485,7 +4429,7 @@  File: gst-base.info, Node: ValueAdaptor-accessing, Next: ValueAdaptor-printing, Prev: ValueAdaptor class-creating instances, Up: ValueAdaptor -1.195.2 ValueAdaptor: accessing +1.200.2 ValueAdaptor: accessing ------------------------------- value @@ -3500,7 +4444,7 @@  File: gst-base.info, Node: ValueAdaptor-printing, Prev: ValueAdaptor-accessing, Up: ValueAdaptor -1.195.3 ValueAdaptor: printing +1.200.3 ValueAdaptor: printing ------------------------------ printOn: aStream @@ -3510,7 +4454,7 @@  File: gst-base.info, Node: ValueHolder, Next: VariableBinding, Prev: ValueAdaptor, Up: Base classes -1.196 ValueHolder +1.201 ValueHolder ================= Defined in namespace Smalltalk @@ -3530,7 +4474,7 @@  File: gst-base.info, Node: ValueHolder class-creating instances, Next: ValueHolder-accessing, Up: ValueHolder -1.196.1 ValueHolder class: creating instances +1.201.1 ValueHolder class: creating instances --------------------------------------------- new @@ -3546,7 +4490,7 @@  File: gst-base.info, Node: ValueHolder-accessing, Next: ValueHolder-initializing, Prev: ValueHolder class-creating instances, Up: ValueHolder -1.196.2 ValueHolder: accessing +1.201.2 ValueHolder: accessing ------------------------------ value @@ -3559,7 +4503,7 @@  File: gst-base.info, Node: ValueHolder-initializing, Prev: ValueHolder-accessing, Up: ValueHolder -1.196.3 ValueHolder: initializing +1.201.3 ValueHolder: initializing --------------------------------- initialize @@ -3569,7 +4513,7 @@  File: gst-base.info, Node: VariableBinding, Next: VersionableObjectProxy, Prev: ValueHolder, Up: Base classes -1.197 VariableBinding +1.202 VariableBinding ===================== Defined in namespace Smalltalk @@ -3589,7 +4533,7 @@  File: gst-base.info, Node: VariableBinding-printing, Next: VariableBinding-saving and loading, Up: VariableBinding -1.197.1 VariableBinding: printing +1.202.1 VariableBinding: printing --------------------------------- path @@ -3602,7 +4546,7 @@  File: gst-base.info, Node: VariableBinding-saving and loading, Next: VariableBinding-storing, Prev: VariableBinding-printing, Up: VariableBinding -1.197.2 VariableBinding: saving and loading +1.202.2 VariableBinding: saving and loading ------------------------------------------- to @@ -3616,7 +4560,7 @@  File: gst-base.info, Node: VariableBinding-storing, Next: VariableBinding-testing, Prev: VariableBinding-saving and loading, Up: VariableBinding -1.197.3 VariableBinding: storing +1.202.3 VariableBinding: storing -------------------------------- isLiteralObject @@ -3632,7 +4576,7 @@  File: gst-base.info, Node: VariableBinding-testing, Prev: VariableBinding-storing, Up: VariableBinding -1.197.4 VariableBinding: testing +1.202.4 VariableBinding: testing -------------------------------- isDefined @@ -3641,9 +4585,9 @@  -File: gst-base.info, Node: VersionableObjectProxy, Next: VFS.ArchiveFileHandler, Prev: VariableBinding, Up: Base classes +File: gst-base.info, Node: VersionableObjectProxy, Next: VFS.ArchiveFile, Prev: VariableBinding, Up: Base classes -1.198 VersionableObjectProxy +1.203 VersionableObjectProxy ============================ Defined in namespace Smalltalk @@ -3666,7 +4610,7 @@  File: gst-base.info, Node: VersionableObjectProxy class-saving and restoring, Next: VersionableObjectProxy-saving and restoring, Up: VersionableObjectProxy -1.198.1 VersionableObjectProxy class: saving and restoring +1.203.1 VersionableObjectProxy class: saving and restoring ---------------------------------------------------------- to @@ -3688,7 +4632,7 @@  File: gst-base.info, Node: VersionableObjectProxy-saving and restoring, Prev: VersionableObjectProxy class-saving and restoring, Up: VersionableObjectProxy -1.198.2 VersionableObjectProxy: saving and restoring +1.203.2 VersionableObjectProxy: saving and restoring ---------------------------------------------------- dumpTo: anObjectDumper @@ -3696,69 +4640,74 @@  -File: gst-base.info, Node: VFS.ArchiveFileHandler, Next: VFS.ArchiveMemberHandler, Prev: VersionableObjectProxy, Up: Base classes +File: gst-base.info, Node: VFS.ArchiveFile, Next: VFS.ArchiveMember, Prev: VersionableObjectProxy, Up: Base classes -1.199 VFS.ArchiveFileHandler -============================ +1.204 VFS.ArchiveFile +===================== Defined in namespace Smalltalk.VFS -Superclass: VFS.FileHandlerWrapper +Superclass: VFS.FileWrapper Category: Streams-Files - ArchiveFileHandler handles virtual filesystems that have a - directory structure of their own. The directories and files in - the archive are instances of ArchiveMemberHandler, but the - functionality resides entirely in ArchiveFileHandler because the - members will still ask the archive to get directory information on - them, to extract them to a real file, and so on. + ArchiveFile handles virtual filesystems that have a directory + structure of their own. The directories and files in the archive + are instances of ArchiveMember, but the functionality resides + entirely in ArchiveFile because the members will still ask the + archive to get directory information on them, to extract them to a + real file, and so on. * Menu: -* VFS.ArchiveFileHandler-ArchiveMemberHandler protocol:: (instance) -* VFS.ArchiveFileHandler-directory operations:: (instance) -* VFS.ArchiveFileHandler-querying:: (instance) -* VFS.ArchiveFileHandler-TmpFileArchiveMemberHandler protocol:: (instance) +* VFS.ArchiveFile-ArchiveMember protocol:: (instance) +* VFS.ArchiveFile-directory operations:: (instance) +* VFS.ArchiveFile-querying:: (instance) +* VFS.ArchiveFile-still unclassified:: (instance) +* VFS.ArchiveFile-TmpFileArchiveMember protocol:: (instance)  -File: gst-base.info, Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Next: VFS.ArchiveFileHandler-directory operations, Up: VFS.ArchiveFileHandler +File: gst-base.info, Node: VFS.ArchiveFile-ArchiveMember protocol, Next: VFS.ArchiveFile-directory operations, Up: VFS.ArchiveFile -1.199.1 VFS.ArchiveFileHandler: ArchiveMemberHandler protocol -------------------------------------------------------------- +1.204.1 VFS.ArchiveFile: ArchiveMember protocol +----------------------------------------------- -fillMember: anArchiveMemberHandler - Extract the information on anArchiveMemberHandler. Answer false - if it actually does not exist in the archive; otherwise, answer - true after having told anArchiveMemberHandler about them by - sending #size:stCtime:stMtime:stAtime:isDirectory: to it. +fillMember: anArchiveMember + Extract the information on anArchiveMember. Answer false if it + actually does not exist in the archive; otherwise, answer true + after having told anArchiveMember about them by sending + #size:stCtime:stMtime:stAtime:isDirectory: to it. -member: anArchiveMemberHandler do: aBlock +member: anArchiveMember do: aBlock Evaluate aBlock once for each file in the directory represented by - anArchiveMemberHandler, passing its name. + anArchiveMember, passing its name. -member: anArchiveMemberHandler mode: bits - Set the permission bits for the file in anArchiveMemberHandler. +member: anArchiveMember mode: bits + Set the permission bits for the file in anArchiveMember. refresh Extract the directory listing from the archive -removeMember: anArchiveMemberHandler - Remove the member represented by anArchiveMemberHandler. +removeMember: anArchiveMember + Remove the member represented by anArchiveMember. -updateMember: anArchiveMemberHandler - Update the member represented by anArchiveMemberHandler by copying - the file into which it was extracted back to the archive. +updateMember: anArchiveMember + Update the member represented by anArchiveMember by copying the + file into which it was extracted back to the archive.  -File: gst-base.info, Node: VFS.ArchiveFileHandler-directory operations, Next: VFS.ArchiveFileHandler-querying, Prev: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ArchiveFileHandler +File: gst-base.info, Node: VFS.ArchiveFile-directory operations, Next: VFS.ArchiveFile-querying, Prev: VFS.ArchiveFile-ArchiveMember protocol, Up: VFS.ArchiveFile -1.199.2 VFS.ArchiveFileHandler: directory operations ----------------------------------------------------- +1.204.2 VFS.ArchiveFile: directory operations +--------------------------------------------- at: aName - Answer a VFSHandler for a file named `aName' residing in the + Answer a FilePath for a file named `aName' residing in the directory represented by the receiver. -do: aBlock +nameAt: aString + Answer a FilePath for a file named `aName' residing in the + directory represented by the receiver. + +namesDo: aBlock Evaluate aBlock once for each file in the directory represented by the receiver, passing its name. @@ -3768,10 +4717,10 @@  -File: gst-base.info, Node: VFS.ArchiveFileHandler-querying, Next: VFS.ArchiveFileHandler-TmpFileArchiveMemberHandler protocol, Prev: VFS.ArchiveFileHandler-directory operations, Up: VFS.ArchiveFileHandler +File: gst-base.info, Node: VFS.ArchiveFile-querying, Next: VFS.ArchiveFile-still unclassified, Prev: VFS.ArchiveFile-directory operations, Up: VFS.ArchiveFile -1.199.3 VFS.ArchiveFileHandler: querying ----------------------------------------- +1.204.3 VFS.ArchiveFile: querying +--------------------------------- isAccessible Answer whether a directory with the name contained in the receiver @@ -3782,46 +4731,66 @@  -File: gst-base.info, Node: VFS.ArchiveFileHandler-TmpFileArchiveMemberHandler protocol, Prev: VFS.ArchiveFileHandler-querying, Up: VFS.ArchiveFileHandler +File: gst-base.info, Node: VFS.ArchiveFile-still unclassified, Next: VFS.ArchiveFile-TmpFileArchiveMember protocol, Prev: VFS.ArchiveFile-querying, Up: VFS.ArchiveFile + +1.204.4 VFS.ArchiveFile: still unclassified +------------------------------------------- + +displayOn: aStream + Print a representation of the file identified by the receiver. + + + +File: gst-base.info, Node: VFS.ArchiveFile-TmpFileArchiveMember protocol, Prev: VFS.ArchiveFile-still unclassified, Up: VFS.ArchiveFile -1.199.4 VFS.ArchiveFileHandler: TmpFileArchiveMemberHandler protocol --------------------------------------------------------------------- +1.204.5 VFS.ArchiveFile: TmpFileArchiveMember protocol +------------------------------------------------------ -extractMember: anArchiveMemberHandler - Extract the contents of anArchiveMemberHandler into a file that - resides on disk, and answer the name of the file. +extractMember: anArchiveMember + Extract the contents of anArchiveMember into a file that resides + on disk, and answer the name of the file. -extractMember: anArchiveMemberHandler into: file - Extract the contents of anArchiveMemberHandler into a file that - resides on disk, and answer the name of the file. +extractMember: anArchiveMember into: file + Extract the contents of anArchiveMember into a file that resides + on disk, and answer the name of the file.  -File: gst-base.info, Node: VFS.ArchiveMemberHandler, Next: VFS.CStatStruct, Prev: VFS.ArchiveFileHandler, Up: Base classes +File: gst-base.info, Node: VFS.ArchiveMember, Next: VFS.FileWrapper, Prev: VFS.ArchiveFile, Up: Base classes -1.200 VFS.ArchiveMemberHandler -============================== +1.205 VFS.ArchiveMember +======================= Defined in namespace Smalltalk.VFS -Superclass: VFS.VFSHandler +Superclass: FilePath Category: Streams-Files - TmpFileArchiveMemberHandler is a handler class for members of - archive files that creates temporary files when extracting files - from an archive. + TmpFileArchiveMember is a handler class for members of archive + files that creates temporary files when extracting files from an + archive. * Menu: -* VFS.ArchiveMemberHandler-accessing:: (instance) -* VFS.ArchiveMemberHandler-directory operations:: (instance) -* VFS.ArchiveMemberHandler-file operations:: (instance) -* VFS.ArchiveMemberHandler-initializing:: (instance) -* VFS.ArchiveMemberHandler-testing:: (instance) +* VFS.ArchiveMember-accessing:: (instance) +* VFS.ArchiveMember-basic:: (instance) +* VFS.ArchiveMember-delegation:: (instance) +* VFS.ArchiveMember-directory operations:: (instance) +* VFS.ArchiveMember-file operations:: (instance) +* VFS.ArchiveMember-initializing:: (instance) +* VFS.ArchiveMember-still unclassified:: (instance) +* VFS.ArchiveMember-testing:: (instance)  -File: gst-base.info, Node: VFS.ArchiveMemberHandler-accessing, Next: VFS.ArchiveMemberHandler-directory operations, Up: VFS.ArchiveMemberHandler +File: gst-base.info, Node: VFS.ArchiveMember-accessing, Next: VFS.ArchiveMember-basic, Up: VFS.ArchiveMember -1.200.1 VFS.ArchiveMemberHandler: accessing -------------------------------------------- +1.205.1 VFS.ArchiveMember: accessing +------------------------------------ + +archive + Answer the archive of which the receiver is a member. + +asString + Answer the name of the file identified by the receiver as answered + by File>>#name. creationTime Answer the creation time of the file identified by the receiver. @@ -3829,10 +4798,6 @@ time (the `last change time' has to do with permissions, ownership and the like). -fullName - Answer the name of the file identified by the receiver as answered - by File>>#name. - lastAccessTime Answer the last access time of the file identified by the receiver @@ -3852,12 +4817,6 @@ name: aName Set the receiver's file name to aName. -parent - Answer the archive of which the receiver is a member. - -realFileName - Answer `nil'. - refresh Refresh the statistics for the receiver @@ -3866,28 +4825,52 @@  -File: gst-base.info, Node: VFS.ArchiveMemberHandler-directory operations, Next: VFS.ArchiveMemberHandler-file operations, Prev: VFS.ArchiveMemberHandler-accessing, Up: VFS.ArchiveMemberHandler +File: gst-base.info, Node: VFS.ArchiveMember-basic, Next: VFS.ArchiveMember-delegation, Prev: VFS.ArchiveMember-accessing, Up: VFS.ArchiveMember -1.200.2 VFS.ArchiveMemberHandler: directory operations ------------------------------------------------------- +1.205.2 VFS.ArchiveMember: basic +-------------------------------- + += aFile + Answer whether the receiver represents the same file as the + receiver. + +hash + Answer a hash value for the receiver. + + + +File: gst-base.info, Node: VFS.ArchiveMember-delegation, Next: VFS.ArchiveMember-directory operations, Prev: VFS.ArchiveMember-basic, Up: VFS.ArchiveMember + +1.205.3 VFS.ArchiveMember: delegation +------------------------------------- + +full + Answer the size of the file identified by the receiver + + + +File: gst-base.info, Node: VFS.ArchiveMember-directory operations, Next: VFS.ArchiveMember-file operations, Prev: VFS.ArchiveMember-delegation, Up: VFS.ArchiveMember + +1.205.4 VFS.ArchiveMember: directory operations +----------------------------------------------- at: aName - Answer a VFSHandler for a file named `aName' residing in the + Answer a FilePath for a file named `aName' residing in the directory represented by the receiver. -createDir: dirName +createDirectory: dirName Create a subdirectory of the receiver, naming it dirName. -do: aBlock +namesDo: aBlock Evaluate aBlock once for each file in the directory represented by the receiver, passing its name.  -File: gst-base.info, Node: VFS.ArchiveMemberHandler-file operations, Next: VFS.ArchiveMemberHandler-initializing, Prev: VFS.ArchiveMemberHandler-directory operations, Up: VFS.ArchiveMemberHandler +File: gst-base.info, Node: VFS.ArchiveMember-file operations, Next: VFS.ArchiveMember-initializing, Prev: VFS.ArchiveMember-directory operations, Up: VFS.ArchiveMember -1.200.3 VFS.ArchiveMemberHandler: file operations -------------------------------------------------- +1.205.5 VFS.ArchiveMember: file operations +------------------------------------------ open: class mode: mode ifFail: aBlock Open the receiver in the given mode (as answered by FileStream's @@ -3904,18 +4887,18 @@  -File: gst-base.info, Node: VFS.ArchiveMemberHandler-initializing, Next: VFS.ArchiveMemberHandler-testing, Prev: VFS.ArchiveMemberHandler-file operations, Up: VFS.ArchiveMemberHandler +File: gst-base.info, Node: VFS.ArchiveMember-initializing, Next: VFS.ArchiveMember-still unclassified, Prev: VFS.ArchiveMember-file operations, Up: VFS.ArchiveMember -1.200.4 VFS.ArchiveMemberHandler: initializing ----------------------------------------------- - -fillFrom: data - Called back by the receiver's parent when the ArchiveMemberHandler - asks for file information. +1.205.6 VFS.ArchiveMember: initializing +--------------------------------------- -parent: anArchiveFileHandler +archive: anArchiveFile Set the archive of which the receiver is a member. +fillFrom: data + Called back by the receiver's archive when the ArchiveMember asks + for file information. + size: bytes stCtime: ctime stMtime: mtime stAtime: atime mode: modeBits Set the file information for the receiver. @@ -3924,10 +4907,27 @@  -File: gst-base.info, Node: VFS.ArchiveMemberHandler-testing, Prev: VFS.ArchiveMemberHandler-initializing, Up: VFS.ArchiveMemberHandler +File: gst-base.info, Node: VFS.ArchiveMember-still unclassified, Next: VFS.ArchiveMember-testing, Prev: VFS.ArchiveMember-initializing, Up: VFS.ArchiveMember -1.200.5 VFS.ArchiveMemberHandler: testing ------------------------------------------ +1.205.7 VFS.ArchiveMember: still unclassified +--------------------------------------------- + +, aName + Answer an object of the same kind as the receiver, whose name is + suffixed with aName. + +displayOn: aStream + Print a representation of the file identified by the receiver. + +isAbsolute + Answer whether the receiver identifies an absolute path. + + + +File: gst-base.info, Node: VFS.ArchiveMember-testing, Prev: VFS.ArchiveMember-still unclassified, Up: VFS.ArchiveMember + +1.205.8 VFS.ArchiveMember: testing +---------------------------------- exists Answer whether a file with the name contained in the receiver does @@ -3949,295 +4949,112 @@ Answer whether a file with the name contained in the receiver does exist and is readable -isWriteable - Answer whether a file with the name contained in the receiver does - exist and is writeable - -mode - Answer the octal permissions for the file. - -mode: mode - Set the octal permissions for the file to be `mode'. - - - -File: gst-base.info, Node: VFS.CStatStruct, Next: VFS.DecodedFileHandler, Prev: VFS.ArchiveMemberHandler, Up: Base classes - -1.201 VFS.CStatStruct -===================== - -Defined in namespace Smalltalk.VFS -Superclass: CStruct -Category: Streams-Files - -* Menu: - -* VFS.CStatStruct class-accessing:: (class) -* VFS.CStatStruct-accessing:: (instance) -* VFS.CStatStruct-debugging:: (instance) - - -File: gst-base.info, Node: VFS.CStatStruct class-accessing, Next: VFS.CStatStruct-accessing, Up: VFS.CStatStruct - -1.201.1 VFS.CStatStruct class: accessing ----------------------------------------- - -alignof - Not commented. - -sizeof - Not commented. - - - -File: gst-base.info, Node: VFS.CStatStruct-accessing, Next: VFS.CStatStruct-debugging, Prev: VFS.CStatStruct class-accessing, Up: VFS.CStatStruct - -1.201.2 VFS.CStatStruct: accessing ----------------------------------- - -alignof - Not commented. - -sizeof - Not commented. - -stAtime - Not commented. - -stCtime - Not commented. - -stMode - Not commented. - -stMtime - Not commented. - -stSize - Not commented. - - - -File: gst-base.info, Node: VFS.CStatStruct-debugging, Prev: VFS.CStatStruct-accessing, Up: VFS.CStatStruct - -1.201.3 VFS.CStatStruct: debugging ----------------------------------- - -inspectSelectorList - Not commented. - - - -File: gst-base.info, Node: VFS.DecodedFileHandler, Next: VFS.FileHandlerWrapper, Prev: VFS.CStatStruct, Up: Base classes - -1.202 VFS.DecodedFileHandler -============================ - -Defined in namespace Smalltalk.VFS -Superclass: VFS.FileHandlerWrapper -Category: Streams-Files - -* Menu: - -* VFS.DecodedFileHandler class-registering:: (class) -* VFS.DecodedFileHandler-files:: (instance) - - -File: gst-base.info, Node: VFS.DecodedFileHandler class-registering, Next: VFS.DecodedFileHandler-files, Up: VFS.DecodedFileHandler - -1.202.1 VFS.DecodedFileHandler class: registering -------------------------------------------------- - -defaultFileTypes - Return the default virtual filesystems and the associated filter - commands. - -fileSystems - Answer the virtual file systems that can be processed by this - subclass. These are #gz (gzip a file), #ugz (uncompress a gzipped - file), #Z (compress a file via Unix compress), #uZ (uncompress a - compressed file), #bz2 (compress a file via bzip2), #ubz2 - (uncompress a file via bzip2), #tar (make a tar archive out of a - directory), #tgz (make a gzipped tar archive out of a directory), - #nop (do nothing, used for testing) and #strings (use the - `strings' utility to extract printable strings from a file). - -fileTypes - Return the valid virtual filesystems and the associated filter - commands. - -priority - Answer the priority for this class (higher number = higher - priority) in case multiple classes implement the same file system. - - - -File: gst-base.info, Node: VFS.DecodedFileHandler-files, Prev: VFS.DecodedFileHandler class-registering, Up: VFS.DecodedFileHandler - -1.202.2 VFS.DecodedFileHandler: files -------------------------------------- - -at: aName - Signal an error, as this can't represent a file container. - -open: class mode: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) - -parent: containerFileHandler fsName: aString - Private - Initialize a new object storing the contents of the - virtualFileName file into temporaryFileName. - -realFileName - Answer the real file name which holds the file contents, or nil if - it does not apply. - -release - Release the resources used by the receiver that don't survive when - reloading a snapshot. - - - -File: gst-base.info, Node: VFS.FileHandlerWrapper, Next: VFS.RealFileHandler, Prev: VFS.DecodedFileHandler, Up: Base classes - -1.203 VFS.FileHandlerWrapper -============================ - -Defined in namespace Smalltalk.VFS -Superclass: VFS.VFSHandler -Category: Streams-Files - DecodedFileHandler handles virtual filesystems that take a file - that is on-disk, run a command on it, and then read from the - result. - -* Menu: - -* VFS.FileHandlerWrapper class-instance creation:: (class) -* VFS.FileHandlerWrapper-accessing:: (instance) -* VFS.FileHandlerWrapper-delegation:: (instance) - - -File: gst-base.info, Node: VFS.FileHandlerWrapper class-instance creation, Next: VFS.FileHandlerWrapper-accessing, Up: VFS.FileHandlerWrapper - -1.203.1 VFS.FileHandlerWrapper class: instance creation -------------------------------------------------------- - -vfsFor: parent name: fsName - Create an instance of this class representing the contents of the - given file, under the virtual filesystem fsName. - - - -File: gst-base.info, Node: VFS.FileHandlerWrapper-accessing, Next: VFS.FileHandlerWrapper-delegation, Prev: VFS.FileHandlerWrapper class-instance creation, Up: VFS.FileHandlerWrapper - -1.203.2 VFS.FileHandlerWrapper: accessing ------------------------------------------ - -name - Answer the VFS name for my file. - -parent - Answer `parent'. - -realFileName - Answer the container file containing me. - - - -File: gst-base.info, Node: VFS.FileHandlerWrapper-delegation, Prev: VFS.FileHandlerWrapper-accessing, Up: VFS.FileHandlerWrapper - -1.203.3 VFS.FileHandlerWrapper: delegation ------------------------------------------- - -creationTime - Answer the creation time of the file identified by the receiver. - On some operating systems, this could actually be the last change - time (the `last change time' has to do with permissions, ownership - and the like). - -isExecutable - Answer whether a file with the name contained in the receiver does - exist and is executable - -isReadable - Answer whether a file with the name contained in the receiver does - exist and is readable - -isWriteable - Answer whether a file with the name contained in the receiver does - exist and is writeable - -lastAccessTime - Answer the last access time of the file identified by the receiver - -lastChangeTime - Answer the last change time of the file identified by the receiver - (the `last change time' has to do with permissions, ownership and - the like). On some operating systems, this could actually be the - file creation time. - -lastModifyTime - Answer the last modify time of the file identified by the receiver - (the `last modify time' has to do with the actual file contents). +isSymbolicLink + Answer whether a file with the name contained in the receiver does + exist and identifies a symbolic link. -open: class mode: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) +isWriteable + Answer whether a file with the name contained in the receiver does + exist and is writeable -remove - Remove the file with the given path name +mode + Answer the octal permissions for the file. -size - Answer the size of the file identified by the receiver +mode: mode + Set the octal permissions for the file to be `mode'.  -File: gst-base.info, Node: VFS.RealFileHandler, Next: VFS.TmpFileArchiveMemberHandler, Prev: VFS.FileHandlerWrapper, Up: Base classes +File: gst-base.info, Node: VFS.FileWrapper, Next: VFS.StoredZipMember, Prev: VFS.ArchiveMember, Up: Base classes -1.204 VFS.RealFileHandler -========================= +1.206 VFS.FileWrapper +===================== Defined in namespace Smalltalk.VFS -Superclass: VFS.VFSHandler +Superclass: FilePath Category: Streams-Files - RealFileHandler is an handler for files that are on disk, as well - as for virtual files that end up being on disk when they are - opened for the first time. + FileWrapper gives information for virtual files that refer to a + real file on disk. * Menu: -* VFS.RealFileHandler class-C call-outs:: (class) -* VFS.RealFileHandler class-initialization:: (class) -* VFS.RealFileHandler-accessing:: (instance) -* VFS.RealFileHandler-directory operations:: (instance) -* VFS.RealFileHandler-file operations:: (instance) -* VFS.RealFileHandler-testing:: (instance) +* VFS.FileWrapper class-initializing:: (class) +* VFS.FileWrapper class-instance creation:: (class) +* VFS.FileWrapper-accessing:: (instance) +* VFS.FileWrapper-basic:: (instance) +* VFS.FileWrapper-delegation:: (instance) +* VFS.FileWrapper-enumerating:: (instance) +* VFS.FileWrapper-file operations:: (instance) +* VFS.FileWrapper-testing:: (instance)  -File: gst-base.info, Node: VFS.RealFileHandler class-C call-outs, Next: VFS.RealFileHandler class-initialization, Up: VFS.RealFileHandler +File: gst-base.info, Node: VFS.FileWrapper class-initializing, Next: VFS.FileWrapper class-instance creation, Up: VFS.FileWrapper -1.204.1 VFS.RealFileHandler class: C call-outs ----------------------------------------------- +1.206.1 VFS.FileWrapper class: initializing +------------------------------------------- -working - Answer the working directory. +initialize + Register the receiver with ObjectMemory + +update: aspect + Private - Remove the files before quitting, and register the + virtual filesystems specified by the subclasses upon image load.  -File: gst-base.info, Node: VFS.RealFileHandler class-initialization, Next: VFS.RealFileHandler-accessing, Prev: VFS.RealFileHandler class-C call-outs, Up: VFS.RealFileHandler +File: gst-base.info, Node: VFS.FileWrapper class-instance creation, Next: VFS.FileWrapper-accessing, Prev: VFS.FileWrapper class-initializing, Up: VFS.FileWrapper -1.204.2 VFS.RealFileHandler class: initialization -------------------------------------------------- +1.206.2 VFS.FileWrapper class: instance creation +------------------------------------------------ -initialize - Initialize the receiver's class variables +on: file + Create an instance of this class representing the contents of the + given file, under the virtual filesystem fsName.  -File: gst-base.info, Node: VFS.RealFileHandler-accessing, Next: VFS.RealFileHandler-directory operations, Prev: VFS.RealFileHandler class-initialization, Up: VFS.RealFileHandler +File: gst-base.info, Node: VFS.FileWrapper-accessing, Next: VFS.FileWrapper-basic, Prev: VFS.FileWrapper class-instance creation, Up: VFS.FileWrapper -1.204.3 VFS.RealFileHandler: accessing --------------------------------------- +1.206.3 VFS.FileWrapper: accessing +---------------------------------- + +asString + Answer the string representation of the receiver's path. + +at: aName + Answer a File or Directory object as appropriate for a file named + 'aName' in the directory represented by the receiver. + +lastAccessTime: accessDateTime lastModifyTime: modifyDateTime + Update the timestamps of the file corresponding to the receiver, + to be accessDateTime and modifyDateTime. + +name + Answer the full path to the receiver. + +pathTo: destName + Compute the relative path from the receiver to destName. + + + +File: gst-base.info, Node: VFS.FileWrapper-basic, Next: VFS.FileWrapper-delegation, Prev: VFS.FileWrapper-accessing, Up: VFS.FileWrapper + +1.206.4 VFS.FileWrapper: basic +------------------------------ + += aFile + Answer whether the receiver represents the same file as the + receiver. + +hash + Answer a hash value for the receiver. + + + +File: gst-base.info, Node: VFS.FileWrapper-delegation, Next: VFS.FileWrapper-enumerating, Prev: VFS.FileWrapper-basic, Up: VFS.FileWrapper + +1.206.5 VFS.FileWrapper: delegation +----------------------------------- creationTime Answer the creation time of the file identified by the receiver. @@ -4245,14 +5062,20 @@ time (the `last change time' has to do with permissions, ownership and the like). -finalize - Free the statistics for the receiver +full + Answer the size of the file identified by the receiver -isDirectory - Answer whether the file is a directory. +isExecutable + Answer whether a file with the name contained in the receiver does + exist and is executable -isSymbolicLink - Answer whether the file is a symbolic link. +isReadable + Answer whether a file with the name contained in the receiver does + exist and is readable + +isWriteable + Answer whether a file with the name contained in the receiver does + exist and is writeable lastAccessTime Answer the last access time of the file identified by the receiver @@ -4268,337 +5091,222 @@ (the `last modify time' has to do with the actual file contents). mode - Answer the octal permissions for the file. - -mode: mode - Set the octal permissions for the file to be `mode'. + Answer the permission bits for the file identified by the receiver -name - Answer the name of the file identified by the receiver - -name: aName - Private - Initialize the receiver's instance variables +mode: anInteger + Answer the permission bits for the file identified by the receiver -realFileName - Answer the real file name for the file identified by the receiver +open: class mode: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods) -refresh - Refresh the statistics for the receiver +remove + Remove the file with the given path name size Answer the size of the file identified by the receiver  -File: gst-base.info, Node: VFS.RealFileHandler-directory operations, Next: VFS.RealFileHandler-file operations, Prev: VFS.RealFileHandler-accessing, Up: VFS.RealFileHandler - -1.204.4 VFS.RealFileHandler: directory operations -------------------------------------------------- +File: gst-base.info, Node: VFS.FileWrapper-enumerating, Next: VFS.FileWrapper-file operations, Prev: VFS.FileWrapper-delegation, Up: VFS.FileWrapper -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. +1.206.6 VFS.FileWrapper: enumerating +------------------------------------ -do: aBlock +namesDo: aBlock Evaluate aBlock once for each file in the directory represented by - the receiver, passing its name. aBlock should not return. + the receiver, passing its name.  -File: gst-base.info, Node: VFS.RealFileHandler-file operations, Next: VFS.RealFileHandler-testing, Prev: VFS.RealFileHandler-directory operations, Up: VFS.RealFileHandler - -1.204.5 VFS.RealFileHandler: file operations --------------------------------------------- +File: gst-base.info, Node: VFS.FileWrapper-file operations, Next: VFS.FileWrapper-testing, Prev: VFS.FileWrapper-enumerating, Up: VFS.FileWrapper -lastAccessTime: accessDateTime lastModifyTime: modifyDateTime - Set the receiver's timestamps to be accessDateTime and - modifyDateTime. +1.206.7 VFS.FileWrapper: file operations +---------------------------------------- -open: class mode: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) +pathFrom: dirName + Compute the relative path from the directory dirName to the + receiver -remove - Remove the file with the given path name +renameTo: newName + Rename the file identified by the receiver to newName -renameTo: newFileName - Rename the file with the given path name to newFileName +symlinkAs: destName + Create destName as a symbolic link of the receiver. The + appropriate relative path is computed automatically. symlinkFrom: srcName - Create the receiver as a symlink from path destName + Create the receiver as a symbolic link from srcName (relative to + the path of the receiver).  -File: gst-base.info, Node: VFS.RealFileHandler-testing, Prev: VFS.RealFileHandler-file operations, Up: VFS.RealFileHandler +File: gst-base.info, Node: VFS.FileWrapper-testing, Prev: VFS.FileWrapper-file operations, Up: VFS.FileWrapper -1.204.6 VFS.RealFileHandler: testing ------------------------------------- +1.206.8 VFS.FileWrapper: testing +-------------------------------- exists Answer whether a file with the name contained in the receiver does exist. -isExecutable - Answer whether a file with the name contained in the receiver does - exist and is executable +isAbsolute + Answer whether the receiver identifies an absolute path. -isReadable +isAccessible + Answer whether a directory with the name contained in the receiver + does exist and can be accessed + +isDirectory Answer whether a file with the name contained in the receiver does - exist and is readable + exist identifies a directory. -isWriteable +isSymbolicLink Answer whether a file with the name contained in the receiver does - exist and is writeable + exist and identifies a symbolic link.  -File: gst-base.info, Node: VFS.TmpFileArchiveMemberHandler, Next: VFS.VFSHandler, Prev: VFS.RealFileHandler, Up: Base classes +File: gst-base.info, Node: VFS.StoredZipMember, Next: VFS.TmpFileArchiveMember, Prev: VFS.FileWrapper, Up: Base classes -1.205 VFS.TmpFileArchiveMemberHandler -===================================== +1.207 VFS.StoredZipMember +========================= Defined in namespace Smalltalk.VFS -Superclass: VFS.ArchiveMemberHandler +Superclass: VFS.TmpFileArchiveMember Category: Streams-Files + ArchiveMember is the handler class for stored ZIP archive members, + which are optimized. * Menu: -* VFS.TmpFileArchiveMemberHandler-directory operations:: (instance) -* VFS.TmpFileArchiveMemberHandler-finalization:: (instance) +* VFS.StoredZipMember-accessing:: (instance) +* VFS.StoredZipMember-opening:: (instance)  -File: gst-base.info, Node: VFS.TmpFileArchiveMemberHandler-directory operations, Next: VFS.TmpFileArchiveMemberHandler-finalization, Up: VFS.TmpFileArchiveMemberHandler +File: gst-base.info, Node: VFS.StoredZipMember-accessing, Next: VFS.StoredZipMember-opening, Up: VFS.StoredZipMember -1.205.1 VFS.TmpFileArchiveMemberHandler: directory operations -------------------------------------------------------------- +1.207.1 VFS.StoredZipMember: accessing +-------------------------------------- -open: class mode: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) +offset + Answer `offset'. -realFileName - Answer the real file name which holds the file contents, or nil if - it does not apply. +offset: anInteger + Not commented.  -File: gst-base.info, Node: VFS.TmpFileArchiveMemberHandler-finalization, Prev: VFS.TmpFileArchiveMemberHandler-directory operations, Up: VFS.TmpFileArchiveMemberHandler +File: gst-base.info, Node: VFS.StoredZipMember-opening, Prev: VFS.StoredZipMember-accessing, Up: VFS.StoredZipMember -1.205.2 VFS.TmpFileArchiveMemberHandler: finalization ------------------------------------------------------ +1.207.2 VFS.StoredZipMember: opening +------------------------------------ -release - Release the resources used by the receiver that don't survive when - reloading a snapshot. +open: class mode: mode ifFail: aBlock + Not commented.  -File: gst-base.info, Node: VFS.VFSHandler, Next: Warning, Prev: VFS.TmpFileArchiveMemberHandler, Up: Base classes +File: gst-base.info, Node: VFS.TmpFileArchiveMember, Next: VFS.ZipFile, Prev: VFS.StoredZipMember, Up: Base classes -1.206 VFS.VFSHandler -==================== +1.208 VFS.TmpFileArchiveMember +============================== Defined in namespace Smalltalk.VFS -Superclass: Object +Superclass: VFS.ArchiveMember Category: Streams-Files - VFSHandler is the abstract class for implementations of File and - Directory. These classes only delegate to the appropriate - handler, which is in charge of actually accessing or "molding" the - filesystem. * Menu: -* VFS.VFSHandler class-initializing:: (class) -* VFS.VFSHandler class-instance creation:: (class) -* VFS.VFSHandler-accessing:: (instance) -* VFS.VFSHandler-directory operations:: (instance) -* VFS.VFSHandler-file operations:: (instance) -* VFS.VFSHandler-releasing:: (instance) -* VFS.VFSHandler-testing:: (instance) - - -File: gst-base.info, Node: VFS.VFSHandler class-initializing, Next: VFS.VFSHandler class-instance creation, Up: VFS.VFSHandler - -1.206.1 VFS.VFSHandler class: initializing ------------------------------------------- - -fileSystems - Answer the virtual file systems that can be processed by this - subclass. The default is to answer an empty array, but subclasses - can override this. If you do so, you should override - #vfsFor:name:subPath: as well or you risk infinite loops. - -initialize - Register the receiver with ObjectMemory - -priority - Answer the priority for this class (higher number = higher - priority) in case multiple classes implement the same file system. - The default is 0. - -register: fileSystem forClass: vfsHandlerClass - Register the given file system to be handled by an instance of - vfsHandlerClass. This is automatically called if the class - overrides #fileSystems. - -update: aspect - Private - Remove the files before quitting, and register the - virtual filesystems specified by the subclasses upon image load. - - - -File: gst-base.info, Node: VFS.VFSHandler class-instance creation, Next: VFS.VFSHandler-accessing, Prev: VFS.VFSHandler class-initializing, Up: VFS.VFSHandler - -1.206.2 VFS.VFSHandler class: instance creation ------------------------------------------------ - -for: fileName - Answer the (real or virtual) file handler for the file named - fileName - +* VFS.TmpFileArchiveMember-directory operations:: (instance) +* VFS.TmpFileArchiveMember-finalization:: (instance) +* VFS.TmpFileArchiveMember-still unclassified:: (instance)  -File: gst-base.info, Node: VFS.VFSHandler-accessing, Next: VFS.VFSHandler-directory operations, Prev: VFS.VFSHandler class-instance creation, Up: VFS.VFSHandler - -1.206.3 VFS.VFSHandler: accessing ---------------------------------- - -creationTime - Answer the creation time of the file identified by the receiver. - On some operating systems, this could actually be the last change - time (the `last change time' has to do with permissions, ownership - and the like). - -fullName - Answer the name of the file identified by the receiver as answered - by File>>#name. - -lastAccessTime - Answer the last access time of the file identified by the receiver - -lastChangeTime - Answer the last change time of the file identified by the receiver - (the `last change time' has to do with permissions, ownership and - the like). On some operating systems, this could actually be the - file creation time. - -lastModifyTime - Answer the last modify time of the file identified by the receiver - (the `last modify time' has to do with the actual file contents). +File: gst-base.info, Node: VFS.TmpFileArchiveMember-directory operations, Next: VFS.TmpFileArchiveMember-finalization, Up: VFS.TmpFileArchiveMember -name - Answer the name of the file identified by the receiver +1.208.1 VFS.TmpFileArchiveMember: directory operations +------------------------------------------------------ -realFileName +file Answer the real file name which holds the file contents, or nil if it does not apply. -refresh - Refresh the statistics for the receiver - -size - Answer the size of the file identified by the receiver +open: class mode: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods)  -File: gst-base.info, Node: VFS.VFSHandler-directory operations, Next: VFS.VFSHandler-file operations, Prev: VFS.VFSHandler-accessing, Up: VFS.VFSHandler - -1.206.4 VFS.VFSHandler: directory operations --------------------------------------------- - -at: aName - Answer a VFSHandler for a file named `aName' residing in the - directory represented by the receiver. +File: gst-base.info, Node: VFS.TmpFileArchiveMember-finalization, Next: VFS.TmpFileArchiveMember-still unclassified, Prev: VFS.TmpFileArchiveMember-directory operations, Up: VFS.TmpFileArchiveMember -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. +1.208.2 VFS.TmpFileArchiveMember: finalization +---------------------------------------------- -do: aBlock - Evaluate aBlock once for each file in the directory represented by - the receiver, passing its name. aBlock should not return. +release + Release the resources used by the receiver that don't survive when + reloading a snapshot.  -File: gst-base.info, Node: VFS.VFSHandler-file operations, Next: VFS.VFSHandler-releasing, Prev: VFS.VFSHandler-directory operations, Up: VFS.VFSHandler - -1.206.5 VFS.VFSHandler: file operations ---------------------------------------- - -lastAccessTime: accessDateTime lastModifyTime: modifyDateTime - Set the receiver's timestamps to be accessDateTime and - modifyDateTime. If your file system does not support distinct - access and modification times, you should discard accessDateTime. - -open: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) - -open: class mode: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) - -openDescriptor: mode ifFail: aBlock - Open the receiver in the given mode (as answered by FileStream's - class constant methods) - -remove - Remove the file with the given path name +File: gst-base.info, Node: VFS.TmpFileArchiveMember-still unclassified, Prev: VFS.TmpFileArchiveMember-finalization, Up: VFS.TmpFileArchiveMember -renameTo: newFileName - Rename the file with the given path name oldFileName to newFileName +1.208.3 VFS.TmpFileArchiveMember: still unclassified +---------------------------------------------------- -symlinkFrom: srcName - Create the receiver as a symlink from the relative path srcName +extracted + Answer whether the file has already been extracted to disk.  -File: gst-base.info, Node: VFS.VFSHandler-releasing, Next: VFS.VFSHandler-testing, Prev: VFS.VFSHandler-file operations, Up: VFS.VFSHandler +File: gst-base.info, Node: VFS.ZipFile, Next: Warning, Prev: VFS.TmpFileArchiveMember, Up: Base classes -1.206.6 VFS.VFSHandler: releasing ---------------------------------- +1.209 VFS.ZipFile +================= + +Defined in namespace Smalltalk.VFS +Superclass: VFS.ArchiveFile +Category: Streams-Files + ZipFile transparently extracts files from a ZIP archive. -finalize - Upon finalization, we remove the file that was temporarily holding - the file contents +* Menu: +* VFS.ZipFile-members:: (instance)  -File: gst-base.info, Node: VFS.VFSHandler-testing, Prev: VFS.VFSHandler-releasing, Up: VFS.VFSHandler +File: gst-base.info, Node: VFS.ZipFile-members, Up: VFS.ZipFile -1.206.7 VFS.VFSHandler: testing -------------------------------- +1.209.1 VFS.ZipFile: members +---------------------------- -exists - Answer whether a file with the name contained in the receiver does - exist. +centralDirectoryRangeIn: f + Not commented. -isAccessible - Answer whether a directory with the name contained in the receiver - does exist and can be accessed +createDirectory: dirName + Create a subdirectory of the receiver, naming it dirName. -isDirectory - Answer whether a file with the name contained in the receiver does - exist and identifies a directory. +extractMember: anArchiveMember into: temp + Extract the contents of anArchiveMember into a file that resides + on disk, and answer the name of the file. -isExecutable - Answer whether a file with the name contained in the receiver does - exist and is executable +fileData + Extract the directory listing from the archive -isReadable - Answer whether a file with the name contained in the receiver does - exist and is readable +member: anArchiveMember mode: bits + Set the permission bits for the file in anArchiveMember. -isSymbolicLink - Answer whether the file is a symbolic link. +removeMember: anArchiveMember + Remove the member represented by anArchiveMember. -isWriteable - Answer whether a file with the name contained in the receiver does - exist and is writeable +updateMember: anArchiveMember + Update the member represented by anArchiveMember by copying the + file into which it was extracted back to the archive.  -File: gst-base.info, Node: Warning, Next: WeakArray, Prev: VFS.VFSHandler, Up: Base classes +File: gst-base.info, Node: Warning, Next: WeakArray, Prev: VFS.ZipFile, Up: Base classes -1.207 Warning +1.210 Warning ============= Defined in namespace Smalltalk @@ -4613,7 +5321,7 @@  File: gst-base.info, Node: Warning-exception description, Up: Warning -1.207.1 Warning: exception description +1.210.1 Warning: exception description -------------------------------------- description @@ -4623,7 +5331,7 @@  File: gst-base.info, Node: WeakArray, Next: WeakIdentitySet, Prev: Warning, Up: Base classes -1.208 WeakArray +1.211 WeakArray =============== Defined in namespace Smalltalk @@ -4642,7 +5350,7 @@  File: gst-base.info, Node: WeakArray class-instance creation, Next: WeakArray-accessing, Up: WeakArray -1.208.1 WeakArray class: instance creation +1.211.1 WeakArray class: instance creation ------------------------------------------ new: size @@ -4653,7 +5361,7 @@  File: gst-base.info, Node: WeakArray-accessing, Next: WeakArray-conversion, Prev: WeakArray class-instance creation, Up: WeakArray -1.208.2 WeakArray: accessing +1.211.2 WeakArray: accessing ---------------------------- aliveObjectsDo: aBlock @@ -4700,7 +5408,7 @@  File: gst-base.info, Node: WeakArray-conversion, Next: WeakArray-loading, Prev: WeakArray-accessing, Up: WeakArray -1.208.3 WeakArray: conversion +1.211.3 WeakArray: conversion ----------------------------- asArray @@ -4723,7 +5431,7 @@  File: gst-base.info, Node: WeakArray-loading, Prev: WeakArray-conversion, Up: WeakArray -1.208.4 WeakArray: loading +1.211.4 WeakArray: loading -------------------------- postLoad @@ -4734,7 +5442,7 @@  File: gst-base.info, Node: WeakIdentitySet, Next: WeakKeyDictionary, Prev: WeakArray, Up: Base classes -1.209 WeakIdentitySet +1.212 WeakIdentitySet ===================== Defined in namespace Smalltalk @@ -4752,7 +5460,7 @@  File: gst-base.info, Node: WeakIdentitySet-accessing, Up: WeakIdentitySet -1.209.1 WeakIdentitySet: accessing +1.212.1 WeakIdentitySet: accessing ---------------------------------- identityIncludes: anObject @@ -4763,7 +5471,7 @@  File: gst-base.info, Node: WeakKeyDictionary, Next: WeakKeyIdentityDictionary, Prev: WeakIdentitySet, Up: Base classes -1.210 WeakKeyDictionary +1.213 WeakKeyDictionary ======================= Defined in namespace Smalltalk @@ -4782,7 +5490,7 @@  File: gst-base.info, Node: WeakKeyDictionary class-hacks, Next: WeakKeyDictionary-accessing, Up: WeakKeyDictionary -1.210.1 WeakKeyDictionary class: hacks +1.213.1 WeakKeyDictionary class: hacks -------------------------------------- postLoad @@ -4793,7 +5501,7 @@  File: gst-base.info, Node: WeakKeyDictionary-accessing, Prev: WeakKeyDictionary class-hacks, Up: WeakKeyDictionary -1.210.2 WeakKeyDictionary: accessing +1.213.2 WeakKeyDictionary: accessing ------------------------------------ add: anAssociation @@ -4806,7 +5514,7 @@  File: gst-base.info, Node: WeakKeyIdentityDictionary, Next: WeakSet, Prev: WeakKeyDictionary, Up: Base classes -1.211 WeakKeyIdentityDictionary +1.214 WeakKeyIdentityDictionary =============================== Defined in namespace Smalltalk @@ -4822,7 +5530,7 @@  File: gst-base.info, Node: WeakSet, Next: WeakValueIdentityDictionary, Prev: WeakKeyIdentityDictionary, Up: Base classes -1.212 WeakSet +1.215 WeakSet ============= Defined in namespace Smalltalk @@ -4841,7 +5549,7 @@  File: gst-base.info, Node: WeakSet-accessing, Next: WeakSet-copying, Up: WeakSet -1.212.1 WeakSet: accessing +1.215.1 WeakSet: accessing -------------------------- add: anObject @@ -4856,7 +5564,7 @@  File: gst-base.info, Node: WeakSet-copying, Next: WeakSet-loading, Prev: WeakSet-accessing, Up: WeakSet -1.212.2 WeakSet: copying +1.215.2 WeakSet: copying ------------------------ deepCopy @@ -4871,7 +5579,7 @@  File: gst-base.info, Node: WeakSet-loading, Prev: WeakSet-copying, Up: WeakSet -1.212.3 WeakSet: loading +1.215.3 WeakSet: loading ------------------------ postLoad @@ -4882,7 +5590,7 @@  File: gst-base.info, Node: WeakValueIdentityDictionary, Next: WeakValueLookupTable, Prev: WeakSet, Up: Base classes -1.213 WeakValueIdentityDictionary +1.216 WeakValueIdentityDictionary ================================= Defined in namespace Smalltalk @@ -4898,7 +5606,7 @@  File: gst-base.info, Node: WeakValueLookupTable, Next: WordArray, Prev: WeakValueIdentityDictionary, Up: Base classes -1.214 WeakValueLookupTable +1.217 WeakValueLookupTable ========================== Defined in namespace Smalltalk @@ -4918,7 +5626,7 @@  File: gst-base.info, Node: WeakValueLookupTable class-hacks, Next: WeakValueLookupTable-hacks, Up: WeakValueLookupTable -1.214.1 WeakValueLookupTable class: hacks +1.217.1 WeakValueLookupTable class: hacks ----------------------------------------- primNew: realSize @@ -4929,7 +5637,7 @@  File: gst-base.info, Node: WeakValueLookupTable-hacks, Next: WeakValueLookupTable-rehashing, Prev: WeakValueLookupTable class-hacks, Up: WeakValueLookupTable -1.214.2 WeakValueLookupTable: hacks +1.217.2 WeakValueLookupTable: hacks ----------------------------------- at: key ifAbsent: aBlock @@ -4947,7 +5655,7 @@  File: gst-base.info, Node: WeakValueLookupTable-rehashing, Prev: WeakValueLookupTable-hacks, Up: WeakValueLookupTable -1.214.3 WeakValueLookupTable: rehashing +1.217.3 WeakValueLookupTable: rehashing --------------------------------------- rehash @@ -4957,7 +5665,7 @@  File: gst-base.info, Node: WordArray, Next: WriteStream, Prev: WeakValueLookupTable, Up: Base classes -1.215 WordArray +1.218 WordArray =============== Defined in namespace Smalltalk @@ -4970,7 +5678,7 @@  File: gst-base.info, Node: WriteStream, Next: ZeroDivide, Prev: WordArray, Up: Base classes -1.216 WriteStream +1.219 WriteStream ================= Defined in namespace Smalltalk @@ -4988,7 +5696,7 @@  File: gst-base.info, Node: WriteStream class-instance creation, Next: WriteStream-accessing-writing, Up: WriteStream -1.216.1 WriteStream class: instance creation +1.219.1 WriteStream class: instance creation -------------------------------------------- on: aCollection @@ -5008,7 +5716,7 @@  File: gst-base.info, Node: WriteStream-accessing-writing, Next: WriteStream-positioning, Prev: WriteStream class-instance creation, Up: WriteStream -1.216.2 WriteStream: accessing-writing +1.219.2 WriteStream: accessing-writing -------------------------------------- contents @@ -5034,7 +5742,7 @@  File: gst-base.info, Node: WriteStream-positioning, Prev: WriteStream-accessing-writing, Up: WriteStream -1.216.3 WriteStream: positioning +1.219.3 WriteStream: positioning -------------------------------- emptyStream @@ -5044,7 +5752,7 @@  File: gst-base.info, Node: ZeroDivide, Prev: WriteStream, Up: Base classes -1.217 ZeroDivide +1.220 ZeroDivide ================ Defined in namespace Smalltalk @@ -5063,7 +5771,7 @@  File: gst-base.info, Node: ZeroDivide class-instance creation, Next: ZeroDivide-accessing, Up: ZeroDivide -1.217.1 ZeroDivide class: instance creation +1.220.1 ZeroDivide class: instance creation ------------------------------------------- dividend: aNumber @@ -5078,7 +5786,7 @@  File: gst-base.info, Node: ZeroDivide-accessing, Next: ZeroDivide-description, Prev: ZeroDivide class-instance creation, Up: ZeroDivide -1.217.2 ZeroDivide: accessing +1.220.2 ZeroDivide: accessing ----------------------------- dividend @@ -5088,7 +5796,7 @@  File: gst-base.info, Node: ZeroDivide-description, Prev: ZeroDivide-accessing, Up: ZeroDivide -1.217.3 ZeroDivide: description +1.220.3 ZeroDivide: description ------------------------------- description @@ -5119,13 +5827,14 @@ * BlockContext: BlockContext. (line 6) * Boolean: Boolean. (line 6) * ByteArray: ByteArray. (line 6) -* ByteStream: ByteStream. (line 6) * CAggregate: CAggregate. (line 6) * CallinProcess: CallinProcess. (line 6) * CArray: CArray. (line 6) * CArrayCType: CArrayCType. (line 6) * CBoolean: CBoolean. (line 6) * CByte: CByte. (line 6) +* CCallable: CCallable. (line 6) +* CCallbackDescriptor: CCallbackDescriptor. (line 6) * CChar: CChar. (line 6) * CCompound: CCompound. (line 6) * CDouble: CDouble. (line 6) @@ -5178,6 +5887,7 @@ * False: False. (line 6) * File: File. (line 6) * FileDescriptor: FileDescriptor. (line 6) +* FilePath: FilePath. (line 6) * FileSegment: FileSegment. (line 6) * FileStream: FileStream. (line 6) * Float: Float. (line 6) @@ -5194,6 +5904,7 @@ * IdentitySet: IdentitySet. (line 6) * Integer: Integer. (line 6) * Interval: Interval. (line 6) +* Iterable: Iterable. (line 6) * LargeArray: LargeArray. (line 6) * LargeArrayedCollection: LargeArrayedCollection. (line 6) @@ -5236,6 +5947,7 @@ * Point: Point. (line 6) * PositionableStream: PositionableStream. (line 6) * Process: Process. (line 6) +* ProcessEnvironment: ProcessEnvironment. (line 6) * ProcessorScheduler: ProcessorScheduler. (line 6) * Promise: Promise. (line 6) * Random: Random. (line 6) @@ -5319,6 +6031,8 @@ (line 6) * SystemExceptions.SubclassResponsibility: SystemExceptions.SubclassResponsibility. (line 6) +* SystemExceptions.UnhandledException: SystemExceptions.UnhandledException. + (line 6) * SystemExceptions.UserInterrupt: SystemExceptions.UserInterrupt. (line 6) * SystemExceptions.VerificationError: SystemExceptions.VerificationError. @@ -5342,19 +6056,13 @@ * VariableBinding: VariableBinding. (line 6) * VersionableObjectProxy: VersionableObjectProxy. (line 6) -* VFS.ArchiveFileHandler: VFS.ArchiveFileHandler. - (line 6) -* VFS.ArchiveMemberHandler: VFS.ArchiveMemberHandler. - (line 6) -* VFS.CStatStruct: VFS.CStatStruct. (line 6) -* VFS.DecodedFileHandler: VFS.DecodedFileHandler. - (line 6) -* VFS.FileHandlerWrapper: VFS.FileHandlerWrapper. - (line 6) -* VFS.RealFileHandler: VFS.RealFileHandler. (line 6) -* VFS.TmpFileArchiveMemberHandler: VFS.TmpFileArchiveMemberHandler. +* VFS.ArchiveFile: VFS.ArchiveFile. (line 6) +* VFS.ArchiveMember: VFS.ArchiveMember. (line 6) +* VFS.FileWrapper: VFS.FileWrapper. (line 6) +* VFS.StoredZipMember: VFS.StoredZipMember. (line 6) +* VFS.TmpFileArchiveMember: VFS.TmpFileArchiveMember. (line 6) -* VFS.VFSHandler: VFS.VFSHandler. (line 6) +* VFS.ZipFile: VFS.ZipFile. (line 6) * Warning: Warning. (line 6) * WeakArray: WeakArray. (line 6) * WeakIdentitySet: WeakIdentitySet. (line 6) Binary files smalltalk-3.0.3/doc/gst-base.info-4 and smalltalk-3.0.4/doc/gst-base.info-4 differ Binary files smalltalk-3.0.3/doc/gst-base.info-5 and smalltalk-3.0.4/doc/gst-base.info-5 differ diff -rNu smalltalk-3.0.3/doc/gst-config.1 smalltalk-3.0.4/doc/gst-config.1 --- smalltalk-3.0.3/doc/gst-config.1 2008-05-14 12:18:13.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-config.1 2008-08-09 15:31:55.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH GST-CONFIG "1" "May 2008" "gst-config 3.0.3" "User Commands" +.TH GST-CONFIG "1" "August 2008" "gst-config 3.0.4" "User Commands" .SH NAME gst-config \- configuration for libgst .SH SYNOPSIS diff -rNu smalltalk-3.0.3/doc/gst-convert.1 smalltalk-3.0.4/doc/gst-convert.1 --- smalltalk-3.0.3/doc/gst-convert.1 2008-05-14 12:18:15.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-convert.1 2008-08-09 15:32:03.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH GST-CONVERT "1" "May 2008" "gst-convert version 3.0.3" "User Commands" +.TH GST-CONVERT "1" "August 2008" "gst-convert version 3.0.4" "User Commands" .SH NAME gst-convert \- Smalltalk syntax converter and beautifier .SH DESCRIPTION diff -rNu smalltalk-3.0.3/doc/gst-doc.1 smalltalk-3.0.4/doc/gst-doc.1 --- smalltalk-3.0.3/doc/gst-doc.1 2008-05-14 12:18:17.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-doc.1 2008-08-09 15:32:06.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH GST-DOC "1" "May 2008" "gst-doc version 3.0.3" "User Commands" +.TH GST-DOC "1" "August 2008" "gst-doc version 3.0.4" "User Commands" .SH NAME gst-doc \- GNU Smalltalk documentation generator .SH DESCRIPTION diff -rNu smalltalk-3.0.3/doc/gst-libs.info smalltalk-3.0.4/doc/gst-libs.info --- smalltalk-3.0.3/doc/gst-libs.info 2008-05-14 12:18:10.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-libs.info 2008-08-09 15:31:33.000000000 +0200 @@ -17,7 +17,7 @@ Indirect: gst-libs.info-1: 694 gst-libs.info-2: 300249 -gst-libs.info-3: 592169 +gst-libs.info-3: 592431  Tag Table: (Indirect) @@ -386,62 +386,62 @@ Node: TCP.Socket-out-of-band data340481 Node: TCP.Socket-printing340793 Node: TCP.Socket-stream protocol341063 -Node: TCP.SocketAddress343419 -Node: TCP.SocketAddress class-abstract343950 -Node: TCP.SocketAddress class-accessing344394 -Node: TCP.SocketAddress class-C call-outs346397 -Node: TCP.SocketAddress class-host name lookup346838 -Node: TCP.SocketAddress class-initialization347646 -Node: TCP.SocketAddress-accessing348856 -Node: TCP.SocketImpl349863 -Node: TCP.SocketImpl class-parameters350253 -Node: TCP.SocketImpl-abstract350515 -Node: TCP.SocketImpl-socket operations350848 -Node: TCP.TCPSocketImpl351290 -Node: TCP.TCPSocketImpl class-C constants351743 -Node: TCP.TCPSocketImpl class-implementation352065 -Node: TCP.TCPSocketImpl-implementation352443 -Node: TCP.TCPSocketImpl-socket options352813 -Node: TCP.UDPSocketImpl353172 -Node: TCP.UDPSocketImpl class-C constants353584 -Node: TCP.UDPSocketImpl class-implementation353873 -Node: TCP.UDPSocketImpl-multicasting354249 -Node: TCP.WriteBuffer355157 -Node: TCP.WriteBuffer-buffer handling355619 -Node: TCP.WriteBuffer-testing356105 -Node: ZLib package356316 -Node: ZLib.DeflateStream357399 -Node: ZLib.DeflateStream class-instance creation357784 -Node: ZLib.DeflateWriteStream358261 -Node: ZLib.GZipDeflateStream358635 -Node: ZLib.GZipDeflateStream class-instance creation359055 -Node: ZLib.GZipDeflateWriteStream359548 -Node: ZLib.GZipInflateStream359921 -Node: ZLib.InflateStream360277 -Node: ZLib.RawDeflateStream360636 -Node: ZLib.RawDeflateStream class-instance creation361043 -Node: ZLib.RawDeflateWriteStream361776 -Node: ZLib.RawDeflateWriteStream class-instance creation362202 -Node: ZLib.RawInflateStream362689 -Node: ZLib.RawInflateStream-positioning363085 -Node: ZLib.ZlibError364176 -Node: ZLib.ZlibError-accessing364548 -Node: ZLib.ZlibReadStream364816 -Node: ZLib.ZlibReadStream-streaming365224 -Node: ZLib.ZlibStream366161 -Node: ZLib.ZlibStream class-accessing366682 -Node: ZLib.ZlibStream class-instance creation367407 -Node: ZLib.ZlibStream-streaming367821 -Node: ZLib.ZlibWriteStream368264 -Node: ZLib.ZlibWriteStream-streaming368680 -Node: XML/XPath/XSL packages370515 -Node: Building a DOM from XML370864 -Node: Building XML376272 -Node: Using DTDs379459 -Node: XSL Processing382732 -Node: Attributions384171 -Node: Class index384534 -Node: Method index394848 -Node: Cross-reference592169 +Node: TCP.SocketAddress343539 +Node: TCP.SocketAddress class-abstract344070 +Node: TCP.SocketAddress class-accessing344514 +Node: TCP.SocketAddress class-C call-outs346517 +Node: TCP.SocketAddress class-host name lookup346958 +Node: TCP.SocketAddress class-initialization347766 +Node: TCP.SocketAddress-accessing348976 +Node: TCP.SocketImpl349983 +Node: TCP.SocketImpl class-parameters350373 +Node: TCP.SocketImpl-abstract350635 +Node: TCP.SocketImpl-socket operations350968 +Node: TCP.TCPSocketImpl351410 +Node: TCP.TCPSocketImpl class-C constants351863 +Node: TCP.TCPSocketImpl class-implementation352185 +Node: TCP.TCPSocketImpl-implementation352563 +Node: TCP.TCPSocketImpl-socket options352933 +Node: TCP.UDPSocketImpl353292 +Node: TCP.UDPSocketImpl class-C constants353704 +Node: TCP.UDPSocketImpl class-implementation353993 +Node: TCP.UDPSocketImpl-multicasting354369 +Node: TCP.WriteBuffer355277 +Node: TCP.WriteBuffer-buffer handling355739 +Node: TCP.WriteBuffer-testing356225 +Node: ZLib package356436 +Node: ZLib.DeflateStream357519 +Node: ZLib.DeflateStream class-instance creation357904 +Node: ZLib.DeflateWriteStream358381 +Node: ZLib.GZipDeflateStream358755 +Node: ZLib.GZipDeflateStream class-instance creation359175 +Node: ZLib.GZipDeflateWriteStream359668 +Node: ZLib.GZipInflateStream360041 +Node: ZLib.InflateStream360397 +Node: ZLib.RawDeflateStream360756 +Node: ZLib.RawDeflateStream class-instance creation361163 +Node: ZLib.RawDeflateWriteStream361896 +Node: ZLib.RawDeflateWriteStream class-instance creation362322 +Node: ZLib.RawInflateStream362809 +Node: ZLib.RawInflateStream-positioning363205 +Node: ZLib.ZlibError364296 +Node: ZLib.ZlibError-accessing364668 +Node: ZLib.ZlibReadStream364936 +Node: ZLib.ZlibReadStream-streaming365344 +Node: ZLib.ZlibStream366281 +Node: ZLib.ZlibStream class-accessing366802 +Node: ZLib.ZlibStream class-instance creation367527 +Node: ZLib.ZlibStream-streaming367941 +Node: ZLib.ZlibWriteStream368384 +Node: ZLib.ZlibWriteStream-streaming368800 +Node: XML/XPath/XSL packages370635 +Node: Building a DOM from XML370984 +Node: Building XML376392 +Node: Using DTDs379579 +Node: XSL Processing382852 +Node: Attributions384291 +Node: Class index384654 +Node: Method index394968 +Node: Cross-reference592431  End Tag Table diff -rNu smalltalk-3.0.3/doc/gst-libs.info-2 smalltalk-3.0.4/doc/gst-libs.info-2 --- smalltalk-3.0.3/doc/gst-libs.info-2 2008-05-14 12:18:10.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-libs.info-2 2008-08-09 15:31:33.000000000 +0200 @@ -1303,6 +1303,10 @@ atEnd Answer whether more data is available on the socket +availableBytes + Answer how many bytes are available in the socket's read buffer or + from the operating system. + bufferContents Answer the current contents of the read buffer @@ -2795,15 +2799,15 @@ (line 6) * >: Complex-comparing. (line 15) * >=: Complex-comparing. (line 18) -* ? <1>: I18N.LcPrintFormats-printing. +* ? <1>: I18N.LcMessages-opening MO files. (line 6) -* ? <2>: I18N.LcMessages-opening MO files. +* ? <2>: I18N.LcPrintFormats-printing. (line 6) -* ? <3>: I18N.LocaleConventions-accessing. +* ? <3>: I18N.LcMessagesDomain-querying. (line 6) * ? <4>: I18N.LocaleConventions class-accessing. (line 6) -* ?: I18N.LcMessagesDomain-querying. +* ?: I18N.LocaleConventions-accessing. (line 6) * abs: Complex-math. (line 18) * absSquared: Complex-math. (line 21) @@ -2813,9 +2817,9 @@ (line 6) * accept_: TCP.ServerSocket-accessing. (line 10) -* accept_peer_addrLen_ <1>: TCP.AbstractSocketImpl-C call-outs. +* accept_peer_addrLen_ <1>: TCP.AbstractSocketImpl class-C call-outs. (line 6) -* accept_peer_addrLen_: TCP.AbstractSocketImpl class-C call-outs. +* accept_peer_addrLen_: TCP.AbstractSocketImpl-C call-outs. (line 6) * activate: BLOX.BWidget-widget protocol. (line 6) @@ -2835,9 +2839,9 @@ (line 32) * add_: BLOX.BMenuBar-accessing. (line 6) -* add_afterIndex_ <1>: BLOX.BList-accessing. +* add_afterIndex_ <1>: BLOX.BDropDown-list box accessing. (line 6) -* add_afterIndex_: BLOX.BDropDown-list box accessing. +* add_afterIndex_: BLOX.BList-accessing. (line 6) * add_element_afterIndex_ <1>: BLOX.BDropDown-list box accessing. (line 11) @@ -2849,13 +2853,13 @@ (line 12) * addButton_receiver_message_argument_: BLOX.BDialog-accessing. (line 17) -* addChild_ <1>: BLOX.BCanvas-geometry management. +* addChild_ <1>: BLOX.BPopupWindow-geometry management. (line 6) -* addChild_ <2>: BLOX.Blox-customization. +* addChild_ <2>: BLOX.BCanvas-geometry management. (line 6) -* addChild_ <3>: BLOX.BPopupWindow-geometry management. +* addChild_ <3>: BLOX.BWidget-customization. (line 6) -* addChild_: BLOX.BWidget-customization. +* addChild_: BLOX.Blox-customization. (line 6) * addEventSet_: BLOX.BEventTarget-intercepting events. (line 6) @@ -2871,31 +2875,31 @@ (line 6) * addMenuItemFor_notifying_: BLOX.BMenu-callback registration. (line 9) -* address <1>: TCP.AbstractSocket-accessing. - (line 6) -* address <2>: TCP.ServerSocket-accessing. +* address <1>: TCP.ServerSocket-accessing. (line 15) +* address <2>: TCP.DatagramSocket-accessing. + (line 6) * address <3>: TCP.Datagram-accessing. (line 6) -* address <4>: TCP.DatagramSocket-accessing. +* address <4>: TCP.Socket-accessing. (line 6) -* address: TCP.Socket-accessing. +* address: TCP.AbstractSocket-accessing. (line 6) * address_: TCP.Datagram-accessing. (line 9) * addressClass <1>: TCP.UDPSocketImpl class-implementation. (line 6) -* addressClass <2>: TCP.ICMPSocketImpl class-implementation. +* addressClass <2>: TCP.OOBSocketImpl class-implementation. (line 6) * addressClass <3>: TCP.IPAddress-accessing. (line 6) -* addressClass <4>: TCP.TCPSocketImpl class-implementation. +* addressClass <4>: TCP.AbstractSocketImpl class-abstract. (line 6) * addressClass <5>: TCP.AbstractSocketImpl-socket operations. (line 11) -* addressClass <6>: TCP.OOBSocketImpl class-implementation. +* addressClass <6>: TCP.TCPSocketImpl class-implementation. (line 6) -* addressClass: TCP.AbstractSocketImpl class-abstract. +* addressClass: TCP.ICMPSocketImpl class-implementation. (line 6) * addressFamily <1>: TCP.IPAddress class-C constants. (line 6) @@ -2928,54 +2932,54 @@ * asFloatE: Complex-converting. (line 15) * asFloatQ: Complex-converting. (line 18) * asFraction: Complex-converting. (line 21) -* asPrimitiveWidget <1>: BLOX.BExtended-accessing. +* asPrimitiveWidget <1>: BLOX.Blox-widget protocol. (line 6) * asPrimitiveWidget <2>: BLOX.BPrimitive-accessing. (line 6) -* asPrimitiveWidget <3>: BLOX.Blox-widget protocol. - (line 6) -* asPrimitiveWidget: BLOX.BMenuObject-accessing. +* asPrimitiveWidget <3>: BLOX.BMenuObject-accessing. (line 38) -* associationAt_ <1>: BLOX.BDropDown-list box accessing. +* asPrimitiveWidget: BLOX.BExtended-accessing. + (line 6) +* associationAt_ <1>: BLOX.BList-accessing. (line 39) -* associationAt_: BLOX.BList-accessing. +* associationAt_: BLOX.BDropDown-list box accessing. (line 39) * asString: I18N.EncodedString-accessing. (line 6) * asUnicodeString: I18N.EncodedString-accessing. (line 9) -* at_ <1>: I18N.EncodedString-accessing. - (line 12) -* at_ <2>: BLOX.BCanvas-widget protocol. - (line 6) -* at_ <3>: I18N.LcMessagesDomain-querying. +* at_ <1>: I18N.LcMessagesDomain-querying. + (line 10) +* at_ <2>: BLOX.Blox class-utility. (line 10) +* at_ <3>: I18N.EncodedString-accessing. + (line 12) * at_ <4>: BLOX.BList-accessing. (line 44) -* at_ <5>: BLOX.BDropDown-list box accessing. +* at_ <5>: DBI.Row-accessing. (line 6) +* at_ <6>: BLOX.BCanvas-widget protocol. + (line 6) +* at_: BLOX.BDropDown-list box accessing. (line 44) -* at_ <6>: DBI.Row-accessing. (line 6) -* at_: BLOX.Blox class-utility. - (line 10) * at_cache_: TCP.SocketAddress class-accessing. (line 13) * at_plural_with_: I18N.LcMessagesDomain-querying. (line 14) -* at_put_ <1>: I18N.LcMessagesDomain-querying. - (line 18) -* at_put_: I18N.EncodedString-accessing. +* at_put_ <1>: I18N.EncodedString-accessing. (line 15) -* atEnd <1>: TCP.ReadBuffer-buffer handling. +* at_put_: I18N.LcMessagesDomain-querying. + (line 18) +* atEnd <1>: I18N.Encoder-stream operations. (line 6) -* atEnd <2>: ZLib.ZlibReadStream-streaming. +* atEnd <2>: TCP.Socket-stream protocol. (line 6) -* atEnd <3>: DBI.ResultSet-cursor access. +* atEnd <3>: TCP.AbstractSocket-stream protocol. (line 6) -* atEnd <4>: I18N.Encoder-stream operations. +* atEnd <4>: DBI.ResultSet-cursor access. (line 6) -* atEnd <5>: TCP.Socket-stream protocol. +* atEnd <5>: TCP.ReadBuffer-buffer handling. (line 6) -* atEnd: TCP.AbstractSocket-stream protocol. +* atEnd: ZLib.ZlibReadStream-streaming. (line 6) * atEndOfInput: I18N.Encoder-stream operations. (line 11) @@ -2984,60 +2988,62 @@ (line 15) * available: TCP.AbstractSocket-accessing. (line 11) -* backgroundColor <1>: BLOX.BCanvas-accessing. +* availableBytes: TCP.Socket-stream protocol. + (line 9) +* backgroundColor <1>: BLOX.BForm-accessing. (line 6) -* backgroundColor <2>: BLOX.BLabel-accessing. - (line 26) -* backgroundColor <3>: BLOX.BButton-accessing. +* backgroundColor <2>: BLOX.BButton-accessing. (line 6) -* backgroundColor <4>: BLOX.BList-accessing. - (line 47) -* backgroundColor <5>: BLOX.BTextAttributes-setting attributes. +* backgroundColor <3>: BLOX.BTextAttributes-setting attributes. + (line 6) +* backgroundColor <4>: BLOX.BProgress-accessing. + (line 6) +* backgroundColor <5>: BLOX.BCanvas-accessing. + (line 6) +* backgroundColor <6>: BLOX.BText-accessing. (line 6) -* backgroundColor <6>: BLOX.BImage-accessing. +* backgroundColor <7>: BLOX.BMenuObject-accessing. + (line 41) +* backgroundColor <8>: BLOX.BEdit-accessing. (line 6) -* backgroundColor <7>: BLOX.BForm-accessing. +* backgroundColor <9>: BLOX.BLabel-accessing. + (line 26) +* backgroundColor <10>: BLOX.BList-accessing. + (line 47) +* backgroundColor <11>: BLOX.BDropDown-accessing. (line 6) -* backgroundColor <8>: BLOX.BText-accessing. +* backgroundColor: BLOX.BImage-accessing. (line 6) -* backgroundColor <9>: BLOX.BDropDown-accessing. +* backgroundColor_ <1>: BLOX.BMenuObject-accessing. + (line 47) +* backgroundColor_ <2>: BLOX.BProgress-accessing. + (line 11) +* backgroundColor_ <3>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 6) -* backgroundColor <10>: BLOX.BProgress-accessing. +* backgroundColor_ <4>: BLOX.BDropDown-accessing. + (line 15) +* backgroundColor_ <5>: BLOX.BDropDownEdit-accessing. (line 6) -* backgroundColor <11>: BLOX.BEdit-accessing. +* backgroundColor_ <6>: BLOX.BDropDownList-accessing. (line 6) -* backgroundColor: BLOX.BMenuObject-accessing. - (line 41) -* backgroundColor_ <1>: BLOX.BTextAttributes-setting attributes. +* backgroundColor_ <7>: BLOX.BTextAttributes-setting attributes. (line 13) -* backgroundColor_ <2>: BLOX.BButton-accessing. +* backgroundColor_ <8>: BLOX.BImage-accessing. (line 12) -* backgroundColor_ <3>: BLOX.BCanvas-accessing. +* backgroundColor_ <9>: BLOX.BText-accessing. (line 12) -* backgroundColor_ <4>: BLOX.BTextAttributes class-instance-creation shortcuts. - (line 6) -* backgroundColor_ <5>: BLOX.BEdit-accessing. +* backgroundColor_ <10>: BLOX.BEdit-accessing. (line 12) -* backgroundColor_ <6>: BLOX.BProgress-accessing. - (line 11) -* backgroundColor_ <7>: BLOX.BForm-accessing. +* backgroundColor_ <11>: BLOX.BCanvas-accessing. (line 12) -* backgroundColor_ <8>: BLOX.BLabel-accessing. - (line 32) -* backgroundColor_ <9>: BLOX.BMenuObject-accessing. - (line 47) -* backgroundColor_ <10>: BLOX.BDropDown-accessing. - (line 15) -* backgroundColor_ <11>: BLOX.BText-accessing. +* backgroundColor_ <12>: BLOX.BButton-accessing. (line 12) -* backgroundColor_ <12>: BLOX.BDropDownEdit-accessing. - (line 6) -* backgroundColor_ <13>: BLOX.BList-accessing. - (line 53) -* backgroundColor_ <14>: BLOX.BImage-accessing. +* backgroundColor_ <13>: BLOX.BForm-accessing. (line 12) -* backgroundColor_: BLOX.BDropDownList-accessing. - (line 6) +* backgroundColor_ <14>: BLOX.BList-accessing. + (line 53) +* backgroundColor_: BLOX.BLabel-accessing. + (line 32) * balloonDelayTime: BLOX.BBalloon class-accessing. (line 6) * balloonDelayTime_: BLOX.BBalloon class-accessing. @@ -3056,30 +3062,30 @@ (line 9) * bindTo_port_: TCP.AbstractSocketImpl-socket operations. (line 15) -* black <1>: BLOX.BTextAttributes-colors. - (line 6) -* black: BLOX.BTextAttributes class-instance-creation shortcuts. +* black <1>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 10) +* black: BLOX.BTextAttributes-colors. + (line 6) * blank: BLOX.BImage-image management. (line 6) * blox <1>: BLOX.BCanvasObject-accessing. (line 6) * blox: BLOX.Gui-accessing. (line 6) * blox_: BLOX.Gui-accessing. (line 9) -* blue <1>: BLOX.BTextAttributes class-instance-creation shortcuts. - (line 13) -* blue: BLOX.BTextAttributes-colors. +* blue <1>: BLOX.BTextAttributes-colors. (line 9) +* blue: BLOX.BTextAttributes class-instance-creation shortcuts. + (line 13) * borderWidth: BLOX.BWidget-accessing. (line 6) * borderWidth_: BLOX.BWidget-accessing. (line 15) -* boundingBox <1>: BLOX.BCanvas-widget protocol. - (line 15) -* boundingBox <2>: BLOX.BBoundingBox-accessing. +* boundingBox <1>: BLOX.BPolyline-accessing. (line 6) -* boundingBox <3>: BLOX.BPolyline-accessing. +* boundingBox <2>: BLOX.BBoundingBox-accessing. (line 6) +* boundingBox <3>: BLOX.BCanvas-widget protocol. + (line 15) * boundingBox <4>: BLOX.BCanvasObject-accessing. (line 9) * boundingBox: BLOX.BWidget-geometry management. @@ -3088,62 +3094,62 @@ (line 9) * bringToTop: BLOX.BWidget-widget protocol. (line 32) -* bufferContents <1>: TCP.ReadBuffer-buffer handling. +* bufferContents <1>: TCP.Socket-stream protocol. + (line 13) +* bufferContents: TCP.ReadBuffer-buffer handling. (line 9) -* bufferContents: TCP.Socket-stream protocol. +* bufferSize <1>: TCP.DatagramSocket-accessing. (line 9) -* bufferSize <1>: TCP.DatagramSocketImpl-accessing. +* bufferSize <2>: ZLib.ZlibStream class-accessing. (line 6) -* bufferSize <2>: TCP.DatagramSocket-accessing. - (line 9) -* bufferSize: ZLib.ZlibStream class-accessing. +* bufferSize: TCP.DatagramSocketImpl-accessing. (line 6) -* bufferSize_ <1>: TCP.DatagramSocketImpl-accessing. - (line 9) +* bufferSize_ <1>: ZLib.ZlibStream class-accessing. + (line 10) * bufferSize_ <2>: TCP.DatagramSocket-accessing. (line 12) -* bufferSize_: ZLib.ZlibStream class-accessing. - (line 10) +* bufferSize_: TCP.DatagramSocketImpl-accessing. + (line 9) * byName_: TCP.SocketAddress class-host name lookup. (line 12) -* callback <1>: BLOX.BWindow-accessing. +* callback <1>: BLOX.BDropDown-callbacks. (line 6) * callback <2>: BLOX.BMenuObject-callback. (line 6) -* callback <3>: BLOX.BButton-accessing. +* callback <3>: BLOX.BEdit-accessing. (line 18) -* callback <4>: BLOX.BEdit-accessing. +* callback <4>: BLOX.BButton-accessing. (line 18) -* callback <5>: BLOX.BButtonLike-accessing. +* callback <5>: BLOX.BList-widget protocol. (line 6) -* callback <6>: BLOX.BDropDown-callbacks. +* callback <6>: BLOX.BButtonLike-accessing. (line 6) * callback <7>: BLOX.BText-accessing. (line 18) -* callback: BLOX.BList-widget protocol. +* callback: BLOX.BWindow-accessing. (line 6) * callback_message_ <1>: BLOX.BDropDownList-callbacks. (line 6) -* callback_message_ <2>: BLOX.BToggle-accessing. - (line 6) -* callback_message_ <3>: BLOX.BRadioButton-accessing. - (line 6) -* callback_message_ <4>: BLOX.BMenuObject-callback. +* callback_message_ <2>: BLOX.BMenuObject-callback. (line 10) -* callback_message_ <5>: BLOX.BWindow-accessing. +* callback_message_ <3>: BLOX.BButton-accessing. + (line 22) +* callback_message_ <4>: BLOX.BList-widget protocol. (line 10) +* callback_message_ <5>: BLOX.BEdit-accessing. + (line 22) * callback_message_ <6>: BLOX.BDropDown-callbacks. (line 10) -* callback_message_ <7>: BLOX.BList-widget protocol. +* callback_message_ <7>: BLOX.BButtonLike-accessing. (line 10) -* callback_message_ <8>: BLOX.BEdit-accessing. - (line 22) +* callback_message_ <8>: BLOX.BRadioButton-accessing. + (line 6) * callback_message_ <9>: BLOX.BText-accessing. (line 22) -* callback_message_ <10>: BLOX.BButtonLike-accessing. +* callback_message_ <10>: BLOX.BWindow-accessing. (line 10) -* callback_message_: BLOX.BButton-accessing. - (line 22) +* callback_message_: BLOX.BToggle-accessing. + (line 6) * callback_message_argument_: BLOX.BMenuObject-callback. (line 15) * callback_using_: BLOX.BMenu-callback registration. @@ -3151,47 +3157,47 @@ * canRead <1>: TCP.OOBSocketImpl-implementation. (line 6) * canRead <2>: TCP.Socket-stream protocol. - (line 12) + (line 16) * canRead: TCP.AbstractSocket-accessing. (line 15) -* canWrite <1>: TCP.Socket-stream protocol. - (line 16) -* canWrite: TCP.AbstractSocket-accessing. +* canWrite <1>: TCP.AbstractSocket-accessing. (line 18) -* cap <1>: BLOX.BLine-accessing. - (line 6) -* cap: BLOX.BPolyline-accessing. +* canWrite: TCP.Socket-stream protocol. + (line 20) +* cap <1>: BLOX.BPolyline-accessing. (line 9) -* cap_ <1>: BLOX.BLine-accessing. - (line 11) -* cap_: BLOX.BPolyline-accessing. +* cap: BLOX.BLine-accessing. + (line 6) +* cap_ <1>: BLOX.BPolyline-accessing. (line 16) -* category <1>: I18N.LcMonetary class-accessing. +* cap_: BLOX.BLine-accessing. + (line 11) +* category <1>: I18N.LcTime class-accessing. (line 6) * category <2>: I18N.LcMessages class-accessing. (line 6) -* category <3>: I18N.LcNumeric class-accessing. +* category <3>: I18N.LcMonetary class-accessing. (line 6) -* category <4>: I18N.LcTime class-accessing. +* category <4>: I18N.LcNumeric class-accessing. (line 6) * category: I18N.LocaleData class-accessing. (line 6) * ceiling: Complex-converting. (line 24) -* center <1>: BLOX.BDialog-widget protocol. +* center <1>: BLOX.BTextAttributes-setting attributes. + (line 20) +* center <2>: BLOX.BBoundingBox-accessing. + (line 9) +* center <3>: BLOX.BWindow-widget protocol. (line 6) -* center <2>: BLOX.BTextAttributes class-instance-creation shortcuts. +* center <4>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 16) -* center <3>: BLOX.BBoundingBox-accessing. - (line 9) -* center <4>: BLOX.BTextAttributes-setting attributes. - (line 20) -* center: BLOX.BWindow-widget protocol. +* center: BLOX.BDialog-widget protocol. (line 6) * center_extent_: BLOX.BBoundingBox-accessing. (line 12) -* centerIn_ <1>: BLOX.BDialog-widget protocol. +* centerIn_ <1>: BLOX.BWindow-widget protocol. (line 9) -* centerIn_: BLOX.BWindow-widget protocol. +* centerIn_: BLOX.BDialog-widget protocol. (line 9) * charset: I18N.LocaleData-accessing. (line 6) @@ -3205,72 +3211,72 @@ (line 6) * child_: I18N.RTENegationNode class-initializing. (line 6) -* child_height_ <1>: BLOX.BCanvas-geometry management. - (line 13) -* child_height_ <2>: BLOX.BText-geometry management. - (line 6) -* child_height_ <3>: BLOX.BPopupWindow-geometry management. - (line 14) -* child_height_: BLOX.BWidget-geometry management. +* child_height_ <1>: BLOX.BWidget-geometry management. (line 12) -* child_heightOffset_ <1>: BLOX.BCanvas-geometry management. +* child_height_ <2>: BLOX.BPopupWindow-geometry management. + (line 14) +* child_height_ <3>: BLOX.BText-geometry management. + (line 6) +* child_height_: BLOX.BCanvas-geometry management. + (line 13) +* child_heightOffset_ <1>: BLOX.BPopupWindow-geometry management. + (line 18) +* child_heightOffset_ <2>: BLOX.BCanvas-geometry management. (line 16) -* child_heightOffset_ <2>: BLOX.BText-geometry management. - (line 9) * child_heightOffset_ <3>: BLOX.BWidget-geometry management. (line 23) -* child_heightOffset_: BLOX.BPopupWindow-geometry management. - (line 18) +* child_heightOffset_: BLOX.BText-geometry management. + (line 9) * child_stretch_: BLOX.BWidget-geometry management. (line 33) -* child_width_ <1>: BLOX.BCanvas-geometry management. - (line 19) -* child_width_ <2>: BLOX.BText-geometry management. - (line 13) -* child_width_ <3>: BLOX.BWidget-geometry management. - (line 40) -* child_width_: BLOX.BPopupWindow-geometry management. +* child_width_ <1>: BLOX.BPopupWindow-geometry management. (line 21) -* child_widthOffset_ <1>: BLOX.BPopupWindow-geometry management. - (line 25) -* child_widthOffset_ <2>: BLOX.BCanvas-geometry management. +* child_width_ <2>: BLOX.BWidget-geometry management. + (line 40) +* child_width_ <3>: BLOX.BText-geometry management. + (line 13) +* child_width_: BLOX.BCanvas-geometry management. + (line 19) +* child_widthOffset_ <1>: BLOX.BCanvas-geometry management. (line 22) +* child_widthOffset_ <2>: BLOX.BText-geometry management. + (line 16) * child_widthOffset_ <3>: BLOX.BWidget-geometry management. (line 51) -* child_widthOffset_: BLOX.BText-geometry management. - (line 16) -* child_x_ <1>: BLOX.BPopupWindow-geometry management. - (line 28) -* child_x_ <2>: BLOX.BWidget-geometry management. - (line 61) -* child_x_ <3>: BLOX.BCanvas-geometry management. +* child_widthOffset_: BLOX.BPopupWindow-geometry management. (line 25) -* child_x_: BLOX.BText-geometry management. +* child_x_ <1>: BLOX.BText-geometry management. (line 20) -* child_xOffset_ <1>: BLOX.BCanvas-geometry management. - (line 29) +* child_x_ <2>: BLOX.BCanvas-geometry management. + (line 25) +* child_x_ <3>: BLOX.BWidget-geometry management. + (line 61) +* child_x_: BLOX.BPopupWindow-geometry management. + (line 28) +* child_xOffset_ <1>: BLOX.BText-geometry management. + (line 24) * child_xOffset_ <2>: BLOX.BWidget-geometry management. (line 71) -* child_xOffset_ <3>: BLOX.BText-geometry management. - (line 24) +* child_xOffset_ <3>: BLOX.BCanvas-geometry management. + (line 29) * child_xOffset_: BLOX.BPopupWindow-geometry management. (line 32) -* child_y_ <1>: BLOX.BCanvas-geometry management. - (line 32) -* child_y_ <2>: BLOX.BText-geometry management. - (line 27) -* child_y_ <3>: BLOX.BWidget-geometry management. +* child_y_ <1>: BLOX.BWidget-geometry management. (line 81) -* child_y_: BLOX.BPopupWindow-geometry management. +* child_y_ <2>: BLOX.BCanvas-geometry management. + (line 32) +* child_y_ <3>: BLOX.BPopupWindow-geometry management. (line 35) -* child_yOffset_ <1>: BLOX.BCanvas-geometry management. - (line 36) -* child_yOffset_ <2>: BLOX.BWidget-geometry management. +* child_y_: BLOX.BText-geometry management. + (line 27) +* child_yOffset_ <1>: BLOX.BWidget-geometry management. (line 91) +* child_yOffset_ <2>: BLOX.BPopupWindow-geometry management. + (line 39) * child_yOffset_ <3>: BLOX.BText-geometry management. (line 31) -* child_yOffset_: BLOX.BPopupWindow-geometry management. - (line 39) +* child_yOffset_: BLOX.BCanvas-geometry management. + (line 36) * childrenCount: BLOX.Blox-widget protocol. (line 9) * childrenDo_: BLOX.Blox-widget protocol. @@ -3287,31 +3293,31 @@ (line 26) * clipboard_: BLOX.Blox class-utility. (line 29) -* close <1>: TCP.AbstractSocket-accessing. - (line 21) -* close <2>: DBI.Connection-connecting. +* close <1>: ZLib.ZlibWriteStream-streaming. (line 6) -* close <3>: TCP.Socket-stream protocol. - (line 20) -* close: ZLib.ZlibWriteStream-streaming. +* close <2>: TCP.AbstractSocket-accessing. + (line 21) +* close <3>: DBI.Connection-connecting. (line 6) +* close: TCP.Socket-stream protocol. + (line 24) * closed: BLOX.BPolyline-accessing. (line 23) * closed_: BLOX.BPolyline-accessing. (line 26) * coerce_: Complex-creation/coercion. (line 6) -* color <1>: BLOX.BColorButton-accessing. - (line 6) -* color: BLOX.BCanvasObject-accessing. +* color <1>: BLOX.BCanvasObject-accessing. (line 12) -* color_ <1>: BLOX.BColorButton-accessing. - (line 9) -* color_: BLOX.BCanvasObject-accessing. +* color: BLOX.BColorButton-accessing. + (line 6) +* color_ <1>: BLOX.BCanvasObject-accessing. (line 15) -* columnAt_ <1>: DBI.ResultSet-accessing. +* color_: BLOX.BColorButton-accessing. + (line 9) +* columnAt_ <1>: DBI.Row-accessing. (line 13) +* columnAt_: DBI.ResultSet-accessing. (line 6) -* columnAt_: DBI.Row-accessing. (line 13) * columnCount: DBI.Row-accessing. (line 16) * columnNames <1>: DBI.Row-accessing. (line 19) * columnNames: DBI.ResultSet-accessing. @@ -3319,11 +3325,11 @@ * columns <1>: DBI.ResultSet-accessing. (line 12) * columns: DBI.Row-accessing. (line 22) -* compressingTo_ <1>: ZLib.RawDeflateStream class-instance creation. +* compressingTo_ <1>: ZLib.DeflateStream class-instance creation. (line 6) -* compressingTo_ <2>: ZLib.GZipDeflateStream class-instance creation. +* compressingTo_ <2>: ZLib.RawDeflateStream class-instance creation. (line 6) -* compressingTo_: ZLib.DeflateStream class-instance creation. +* compressingTo_: ZLib.GZipDeflateStream class-instance creation. (line 6) * compressingTo_level_ <1>: ZLib.DeflateStream class-instance creation. (line 10) @@ -3348,28 +3354,28 @@ (line 6) * connectTo_port_: TCP.SocketImpl-socket operations. (line 6) -* contents <1>: BLOX.BDialog-accessing. - (line 23) -* contents <2>: BLOX.BEdit-accessing. +* contents <1>: BLOX.BText-accessing. (line 27) -* contents <3>: BLOX.BText-accessing. - (line 27) -* contents: ZLib.ZlibWriteStream-streaming. +* contents <2>: ZLib.ZlibWriteStream-streaming. (line 11) -* contents_ <1>: BLOX.BText-accessing. +* contents <3>: BLOX.BDialog-accessing. + (line 23) +* contents: BLOX.BEdit-accessing. + (line 27) +* contents_ <1>: BLOX.BEdit-accessing. (line 30) * contents_ <2>: BLOX.BDialog-accessing. (line 27) * contents_ <3>: BLOX.BDropDown-list box accessing. (line 47) -* contents_ <4>: BLOX.BEdit-accessing. +* contents_ <4>: BLOX.BText-accessing. (line 30) * contents_: BLOX.BList-accessing. (line 59) -* contents_elements_ <1>: BLOX.BDropDown-list box accessing. - (line 51) -* contents_elements_: BLOX.BList-accessing. +* contents_elements_ <1>: BLOX.BList-accessing. (line 63) +* contents_elements_: BLOX.BDropDown-list box accessing. + (line 51) * continue: Debugger-stepping commands. (line 6) * copy: I18N.EncodedString-copying. @@ -3380,10 +3386,10 @@ (line 12) * copyFrom_to_: ZLib.RawInflateStream-positioning. (line 6) -* copyInto_ <1>: BLOX.BCanvasObject-accessing. - (line 18) -* copyInto_: BLOX.BEmbeddedImage-accessing. +* copyInto_ <1>: BLOX.BEmbeddedImage-accessing. (line 6) +* copyInto_: BLOX.BCanvasObject-accessing. + (line 18) * copyObject: BLOX.BCanvasObject-accessing. (line 23) * corner: BLOX.BBoundingBox-accessing. @@ -3394,12 +3400,12 @@ (line 15) * cosh: Complex-transcendental functions. (line 18) -* create <1>: BLOX.BWidget-customization. - (line 13) -* create <2>: BLOX.BExtended-customization. +* create <1>: BLOX.BExtended-customization. (line 6) -* create: BLOX.BCanvasObject-widget protocol. +* create <2>: BLOX.BCanvasObject-widget protocol. (line 6) +* create: BLOX.BWidget-customization. + (line 13) * create_type_protocol_ <1>: TCP.AbstractSocketImpl class-C call-outs. (line 15) * create_type_protocol_: TCP.AbstractSocketImpl-C call-outs. @@ -3420,9 +3426,9 @@ (line 10) * createList: BLOX.BDropDown-flexibility. (line 6) -* createLocalAddress <1>: TCP.SocketAddress class-initialization. +* createLocalAddress <1>: TCP.IPAddress class-initialization. (line 6) -* createLocalAddress: TCP.IPAddress class-initialization. +* createLocalAddress: TCP.SocketAddress class-initialization. (line 6) * createLoopbackHost <1>: TCP.IPAddress class-initialization. (line 10) @@ -3430,10 +3436,10 @@ (line 10) * createTextWidget: BLOX.BDropDown-flexibility. (line 11) -* createUnknownAddress <1>: TCP.SocketAddress class-initialization. - (line 16) -* createUnknownAddress: TCP.IPAddress class-initialization. +* createUnknownAddress <1>: TCP.IPAddress class-initialization. (line 14) +* createUnknownAddress: TCP.SocketAddress class-initialization. + (line 16) * currentColumn: BLOX.BText-position & lines. (line 9) * currentLine <1>: BLOX.BText-position & lines. @@ -3458,39 +3464,39 @@ (line 23) * darkCyan: BLOX.BTextAttributes-colors. (line 15) -* darkGreen <1>: BLOX.BTextAttributes-colors. - (line 18) -* darkGreen: BLOX.BTextAttributes class-instance-creation shortcuts. +* darkGreen <1>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 26) +* darkGreen: BLOX.BTextAttributes-colors. + (line 18) * darkMagenta <1>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 29) * darkMagenta: BLOX.BTextAttributes-colors. (line 21) -* data <1>: TCP.Datagram-accessing. - (line 12) -* data: BLOX.BEmbeddedImage-accessing. +* data <1>: BLOX.BEmbeddedImage-accessing. (line 11) -* data_ <1>: TCP.Datagram-accessing. - (line 15) -* data_ <2>: TCP.Datagram class-instance creation. +* data: TCP.Datagram-accessing. + (line 12) +* data_ <1>: TCP.Datagram class-instance creation. (line 6) -* data_ <3>: BLOX.BEmbeddedImage-accessing. +* data_ <2>: BLOX.BEmbeddedImage-accessing. (line 16) +* data_ <3>: TCP.Datagram-accessing. + (line 15) * data_: BLOX.BImage-image management. (line 9) * data_address_port_: TCP.Datagram class-instance creation. (line 9) * debuggerClass: Debugger class-disabling debugging. (line 6) -* deepCopy <1>: BLOX.BCanvasObject-accessing. +* deepCopy <1>: BLOX.Blox-basic. (line 6) +* deepCopy: BLOX.BCanvasObject-accessing. (line 42) -* deepCopy: BLOX.Blox-basic. (line 6) -* default <1>: I18N.Locale class-instance creation. - (line 6) -* default <2>: I18N.LocaleData class-accessing. +* default <1>: I18N.LocaleData class-accessing. (line 9) -* default: I18N.LocaleConventions class-accessing. +* default <2>: I18N.LocaleConventions class-accessing. (line 9) +* default: I18N.Locale class-instance creation. + (line 6) * defaultAddressClass: TCP.AbstractSocket class-defaults. (line 6) * defaultAddressClass_: TCP.AbstractSocket class-defaults. @@ -3545,9 +3551,9 @@ (line 32) * defaultWidth_: BLOX.BForm-accessing. (line 39) -* description <1>: I18N.IncompleteSequenceError-accessing. +* description <1>: I18N.InvalidCharsetError-accessing. (line 6) -* description <2>: I18N.InvalidCharsetError-accessing. +* description <2>: I18N.IncompleteSequenceError-accessing. (line 6) * description: I18N.InvalidSequenceError-accessing. (line 6) @@ -3555,16 +3561,16 @@ (line 23) * destroy: BLOX.Blox-widget protocol. (line 16) -* destroyed <1>: BLOX.BImage-widget protocol. +* destroyed <1>: BLOX.BDialog-widget protocol. + (line 12) +* destroyed <2>: BLOX.BCanvas-widget protocol. + (line 18) +* destroyed <3>: BLOX.BEdit-widget protocol. (line 6) -* destroyed <2>: BLOX.BEdit-widget protocol. +* destroyed <4>: BLOX.BImage-widget protocol. (line 6) -* destroyed <3>: BLOX.BRadioGroup-widget protocol. +* destroyed: BLOX.BRadioGroup-widget protocol. (line 6) -* destroyed <4>: BLOX.BDialog-widget protocol. - (line 12) -* destroyed: BLOX.BCanvas-widget protocol. - (line 18) * directory: BLOX.BImage class-small icons. (line 6) * dispatchEvents: BLOX.Blox class-event dispatching. @@ -3583,16 +3589,16 @@ (line 39) * dither: BLOX.BImage-image management. (line 13) -* do_ <1>: DBI.Connection-querying. - (line 6) -* do_ <2>: BLOX.BList-accessing. +* do_ <1>: BLOX.BList-accessing. (line 68) -* do_ <3>: I18N.EncodedString-accessing. +* do_ <2>: DBI.Connection-querying. + (line 6) +* do_ <3>: BLOX.BCanvas-widget protocol. + (line 22) +* do_ <4>: I18N.EncodedString-accessing. (line 18) -* do_ <4>: BLOX.BDropDown-list box accessing. +* do_: BLOX.BDropDown-list box accessing. (line 56) -* do_: BLOX.BCanvas-widget protocol. - (line 22) * domain_: I18N.LcMessages-opening MO files. (line 11) * domain_localeDirectory_: I18N.LcMessages-opening MO files. @@ -3619,10 +3625,10 @@ (line 51) * elements: BLOX.BList-accessing. (line 71) -* elements_ <1>: BLOX.BList-accessing. - (line 75) -* elements_: BLOX.BDropDown-list box accessing. +* elements_ <1>: BLOX.BDropDown-list box accessing. (line 59) +* elements_: BLOX.BList-accessing. + (line 75) * emacsLike: BLOX.BText class-accessing. (line 6) * emacsLike_: BLOX.BText class-accessing. @@ -3635,30 +3641,30 @@ (line 26) * enabled_: BLOX.Blox-widget protocol. (line 31) -* encoding <1>: I18N.EncodedString-accessing. - (line 21) -* encoding: I18N.EncodedStringFactory-instance creation. +* encoding <1>: I18N.EncodedStringFactory-instance creation. (line 6) -* encoding_ <1>: I18N.EncodedStringFactory-instance creation. - (line 9) -* encoding_ <2>: I18N.EncodedStream class-instance creation. +* encoding: I18N.EncodedString-accessing. + (line 21) +* encoding_ <1>: I18N.EncodedStream class-instance creation. (line 6) -* encoding_ <3>: I18N.EncodedString-initializing. +* encoding_ <2>: I18N.EncodedString-initializing. (line 6) -* encoding_: I18N.EncodedStringFactory class-instance creation. +* encoding_ <3>: I18N.EncodedStringFactory class-instance creation. (line 6) +* encoding_: I18N.EncodedStringFactory-instance creation. + (line 9) * encoding_as_: I18N.EncodedStream class-instance creation. (line 11) * endAngle: BLOX.BArc-accessing. (line 6) * endAngle_: BLOX.BArc-accessing. (line 10) -* ensureReadable <1>: TCP.OOBSocketImpl-implementation. - (line 9) -* ensureReadable: TCP.AbstractSocketImpl-asynchronous operations. +* ensureReadable <1>: TCP.AbstractSocketImpl-asynchronous operations. (line 6) -* ensureWriteable <1>: TCP.Socket-stream protocol. - (line 23) -* ensureWriteable: TCP.AbstractSocketImpl-asynchronous operations. +* ensureReadable: TCP.OOBSocketImpl-implementation. + (line 9) +* ensureWriteable <1>: TCP.AbstractSocketImpl-asynchronous operations. (line 10) +* ensureWriteable: TCP.Socket-stream protocol. + (line 27) * evalIn_tcl_: BLOX.Blox class-C call-outs. (line 6) * events: BLOX.BTextAttributes-setting attributes. @@ -3683,10 +3689,10 @@ (line 36) * exp: Complex-transcendental functions. (line 21) -* extent <1>: BLOX.BBoundingBox-accessing. - (line 27) -* extent: BLOX.BWidget-geometry management. +* extent <1>: BLOX.BWidget-geometry management. (line 101) +* extent: BLOX.BBoundingBox-accessing. + (line 27) * extent_ <1>: BLOX.BWidget-geometry management. (line 104) * extent_: BLOX.BBoundingBox-accessing. @@ -3720,7 +3726,7 @@ * fileOp_with_with_with_ifFail_: TCP.AbstractSocketImpl-socket operations. (line 47) * fill <1>: TCP.Socket-stream protocol. - (line 27) + (line 31) * fill: TCP.ReadBuffer-buffer handling. (line 12) * fillBlock_: TCP.ReadBuffer-buffer handling. @@ -3746,64 +3752,64 @@ * floor: Complex-converting. (line 27) * flush <1>: I18N.LcMessagesDomain-handling the cache. (line 6) -* flush <2>: TCP.AbstractSocket-accessing. - (line 24) -* flush <3>: I18N.Locale class-instance creation. - (line 10) -* flush <4>: TCP.WriteBuffer-buffer handling. +* flush <2>: TCP.Socket-stream protocol. + (line 34) +* flush <3>: I18N.LcMessagesMoFileVersion0-flushing the cache. (line 6) -* flush <5>: TCP.SocketAddress class-initialization. - (line 20) -* flush <6>: I18N.LocaleData class-accessing. +* flush <4>: I18N.LocaleData class-accessing. (line 13) -* flush <7>: I18N.LcMessagesMoFileVersion0-flushing the cache. +* flush <5>: TCP.WriteBuffer-buffer handling. (line 6) -* flush <8>: ZLib.ZlibWriteStream-streaming. +* flush <6>: ZLib.ZlibWriteStream-streaming. + (line 20) +* flush <7>: TCP.AbstractSocket-accessing. + (line 24) +* flush <8>: I18N.Locale class-instance creation. + (line 10) +* flush: TCP.SocketAddress class-initialization. (line 20) -* flush: TCP.Socket-stream protocol. - (line 30) * flushBlock_: TCP.WriteBuffer-buffer handling. (line 9) * flushBuffer: ZLib.ZlibWriteStream-streaming. (line 24) * flushDictionary: ZLib.ZlibWriteStream-streaming. (line 27) -* font <1>: BLOX.BLabel-accessing. - (line 38) -* font <2>: BLOX.BDropDown-accessing. - (line 32) -* font <3>: BLOX.BEmbeddedText-accessing. - (line 6) -* font <4>: BLOX.BButton-accessing. - (line 27) -* font <5>: BLOX.BText-accessing. +* font <1>: BLOX.BEdit-accessing. (line 33) -* font <6>: BLOX.BTextAttributes-setting attributes. +* font <2>: BLOX.BEmbeddedText-accessing. + (line 6) +* font <3>: BLOX.BDropDown-accessing. + (line 32) +* font <4>: BLOX.BTextAttributes-setting attributes. (line 31) -* font <7>: BLOX.BEdit-accessing. +* font <5>: BLOX.BButton-accessing. + (line 27) +* font <6>: BLOX.BText-accessing. (line 33) -* font: BLOX.BList-accessing. +* font <7>: BLOX.BList-accessing. (line 79) -* font_ <1>: BLOX.BTextAttributes-setting attributes. +* font: BLOX.BLabel-accessing. + (line 38) +* font_ <1>: BLOX.BDropDownEdit-accessing. + (line 12) +* font_ <2>: BLOX.BDropDownList-accessing. + (line 14) +* font_ <3>: BLOX.BTextAttributes-setting attributes. (line 52) -* font_ <2>: BLOX.BText-accessing. +* font_ <4>: BLOX.BEdit-accessing. (line 56) -* font_ <3>: BLOX.BEdit-accessing. +* font_ <5>: BLOX.BEmbeddedText-accessing. + (line 29) +* font_ <6>: BLOX.BList-accessing. + (line 102) +* font_ <7>: BLOX.BLabel-accessing. + (line 61) +* font_ <8>: BLOX.BText-accessing. (line 56) -* font_ <4>: BLOX.BButton-accessing. - (line 50) -* font_ <5>: BLOX.BTextAttributes class-instance-creation shortcuts. +* font_ <9>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 36) -* font_ <6>: BLOX.BDropDownList-accessing. - (line 14) -* font_ <7>: BLOX.BDropDownEdit-accessing. - (line 12) -* font_ <8>: BLOX.BLabel-accessing. - (line 61) -* font_ <9>: BLOX.BList-accessing. - (line 102) -* font_ <10>: BLOX.BEmbeddedText-accessing. - (line 29) +* font_ <10>: BLOX.BButton-accessing. + (line 50) * font_: BLOX.BDropDown-accessing. (line 58) * fontHeight_: BLOX.Blox-widget protocol. @@ -3816,52 +3822,52 @@ (line 125) * foregroundColor <2>: BLOX.BLabel-accessing. (line 84) -* foregroundColor <3>: BLOX.BTextAttributes-setting attributes. - (line 73) -* foregroundColor <4>: BLOX.BMenuObject-accessing. +* foregroundColor <3>: BLOX.BMenuObject-accessing. (line 53) -* foregroundColor <5>: BLOX.BEdit-accessing. +* foregroundColor <4>: BLOX.BEdit-accessing. (line 79) -* foregroundColor <6>: BLOX.BImage-accessing. - (line 46) -* foregroundColor <7>: BLOX.BButton-accessing. +* foregroundColor <5>: BLOX.BText-accessing. + (line 79) +* foregroundColor <6>: BLOX.BButton-accessing. (line 73) -* foregroundColor <8>: BLOX.BCanvas-accessing. - (line 18) -* foregroundColor <9>: BLOX.BProgress-accessing. +* foregroundColor <7>: BLOX.BProgress-accessing. (line 22) -* foregroundColor <10>: BLOX.BText-accessing. - (line 79) -* foregroundColor: BLOX.BDropDown-accessing. +* foregroundColor <8>: BLOX.BDropDown-accessing. (line 84) +* foregroundColor <9>: BLOX.BImage-accessing. + (line 46) +* foregroundColor <10>: BLOX.BCanvas-accessing. + (line 18) +* foregroundColor: BLOX.BTextAttributes-setting attributes. + (line 73) * foregroundColor_ <1>: BLOX.BCanvas-accessing. (line 24) -* foregroundColor_ <2>: BLOX.BLabel-accessing. - (line 90) -* foregroundColor_ <3>: BLOX.BTextAttributes-setting attributes. +* foregroundColor_ <2>: BLOX.BTextAttributes-setting attributes. (line 80) -* foregroundColor_ <4>: BLOX.BList-accessing. - (line 131) -* foregroundColor_ <5>: BLOX.BTextAttributes class-instance-creation shortcuts. +* foregroundColor_ <3>: BLOX.BTextAttributes class-instance-creation shortcuts. (line 57) -* foregroundColor_ <6>: BLOX.BImage-accessing. +* foregroundColor_ <4>: BLOX.BDropDownList-accessing. + (line 37) +* foregroundColor_ <5>: BLOX.BImage-accessing. (line 52) -* foregroundColor_ <7>: BLOX.BButton-accessing. +* foregroundColor_ <6>: BLOX.BProgress-accessing. + (line 27) +* foregroundColor_ <7>: BLOX.BDropDownEdit-accessing. + (line 35) +* foregroundColor_ <8>: BLOX.BButton-accessing. (line 79) -* foregroundColor_ <8>: BLOX.BEdit-accessing. - (line 85) * foregroundColor_ <9>: BLOX.BText-accessing. (line 85) -* foregroundColor_ <10>: BLOX.BDropDownList-accessing. - (line 37) -* foregroundColor_ <11>: BLOX.BMenuObject-accessing. +* foregroundColor_ <10>: BLOX.BLabel-accessing. + (line 90) +* foregroundColor_ <11>: BLOX.BList-accessing. + (line 131) +* foregroundColor_ <12>: BLOX.BMenuObject-accessing. (line 59) -* foregroundColor_ <12>: BLOX.BDropDownEdit-accessing. - (line 35) -* foregroundColor_ <13>: BLOX.BProgress-accessing. - (line 27) -* foregroundColor_: BLOX.BDropDown-accessing. +* foregroundColor_ <13>: BLOX.BDropDown-accessing. (line 93) +* foregroundColor_: BLOX.BEdit-accessing. + (line 85) * from: BLOX.BArc-accessing. (line 23) * from_: BLOX.BArc-accessing. (line 26) * from_to_: BLOX.BArc-accessing. (line 29) @@ -3871,20 +3877,20 @@ (line 11) * fromDSN_: DBI.ConnectionInfo class-instance creation. (line 6) -* fromSockAddr_port_ <1>: TCP.IPAddress class-instance creation. - (line 16) -* fromSockAddr_port_: TCP.SocketAddress class-abstract. +* fromSockAddr_port_ <1>: TCP.SocketAddress class-abstract. (line 6) -* fromString_ <1>: I18N.LocaleData class-accessing. +* fromSockAddr_port_: TCP.IPAddress class-instance creation. (line 16) -* fromString_ <2>: I18N.LocaleConventions class-accessing. +* fromString_ <1>: I18N.LocaleConventions class-accessing. (line 13) -* fromString_ <3>: I18N.Locale class-instance creation. - (line 14) -* fromString_ <4>: I18N.EncodedString class-instance creation. +* fromString_ <2>: I18N.EncodedString class-instance creation. (line 6) -* fromString_ <5>: TCP.IPAddress class-instance creation. +* fromString_ <3>: TCP.IPAddress class-instance creation. (line 21) +* fromString_ <4>: I18N.LocaleData class-accessing. + (line 16) +* fromString_ <5>: I18N.Locale class-instance creation. + (line 14) * fromString_: I18N.EncodedStringFactory-instance creation. (line 12) * fromString_encoding_: I18N.EncodedString class-instance creation. @@ -3899,9 +3905,9 @@ (line 18) * getPeerName: TCP.SocketImpl-socket operations. (line 10) -* getPeerName_addr_addrLen_ <1>: TCP.AbstractSocketImpl class-C call-outs. +* getPeerName_addr_addrLen_ <1>: TCP.AbstractSocketImpl-C call-outs. (line 18) -* getPeerName_addr_addrLen_: TCP.AbstractSocketImpl-C call-outs. +* getPeerName_addr_addrLen_: TCP.AbstractSocketImpl class-C call-outs. (line 18) * getSelection: BLOX.BText-accessing. (line 91) @@ -3938,18 +3944,18 @@ (line 120) * height_: BLOX.BWindow-widget protocol. (line 16) -* heightAbsolute <1>: BLOX.BWindow-widget protocol. - (line 19) -* heightAbsolute: BLOX.BWidget-geometry management. +* heightAbsolute <1>: BLOX.BWidget-geometry management. (line 127) -* heightChild_ <1>: BLOX.BText-geometry management. +* heightAbsolute: BLOX.BWindow-widget protocol. + (line 19) +* heightChild_ <1>: BLOX.BCanvas-geometry management. + (line 39) +* heightChild_ <2>: BLOX.BText-geometry management. (line 34) -* heightChild_ <2>: BLOX.BWidget-geometry management. - (line 131) * heightChild_ <3>: BLOX.BPopupWindow-geometry management. (line 42) -* heightChild_: BLOX.BCanvas-geometry management. - (line 39) +* heightChild_: BLOX.BWidget-geometry management. + (line 131) * heightOffset: BLOX.BWidget-geometry management. (line 141) * heightOffset_ <1>: BLOX.BWidget-geometry management. @@ -3960,30 +3966,30 @@ (line 154) * highlight_: BLOX.BList-widget protocol. (line 18) -* highlightBackground <1>: BLOX.BList-accessing. - (line 137) -* highlightBackground: BLOX.BDropDown-accessing. +* highlightBackground <1>: BLOX.BDropDown-accessing. (line 102) -* highlightBackground_ <1>: BLOX.BDropDownList-accessing. +* highlightBackground: BLOX.BList-accessing. + (line 137) +* highlightBackground_ <1>: BLOX.BDropDownEdit-accessing. + (line 41) +* highlightBackground_ <2>: BLOX.BDropDown-accessing. + (line 108) +* highlightBackground_ <3>: BLOX.BDropDownList-accessing. (line 45) -* highlightBackground_ <2>: BLOX.BList-accessing. +* highlightBackground_: BLOX.BList-accessing. (line 143) -* highlightBackground_ <3>: BLOX.BDropDown-accessing. - (line 108) -* highlightBackground_: BLOX.BDropDownEdit-accessing. - (line 41) -* highlightForeground <1>: BLOX.BList-accessing. - (line 149) -* highlightForeground: BLOX.BDropDown-accessing. +* highlightForeground <1>: BLOX.BDropDown-accessing. (line 114) -* highlightForeground_ <1>: BLOX.BDropDown-accessing. +* highlightForeground: BLOX.BList-accessing. + (line 149) +* highlightForeground_ <1>: BLOX.BDropDownList-accessing. + (line 52) +* highlightForeground_ <2>: BLOX.BDropDown-accessing. (line 120) -* highlightForeground_ <2>: BLOX.BList-accessing. - (line 155) * highlightForeground_ <3>: BLOX.BDropDownEdit-accessing. (line 47) -* highlightForeground_: BLOX.BDropDownList-accessing. - (line 52) +* highlightForeground_: BLOX.BList-accessing. + (line 155) * horizontal: BLOX.BViewport-scrollbars. (line 6) * horizontal_: BLOX.BViewport-scrollbars. @@ -3994,10 +4000,10 @@ (line 18) * host: TCP.IPAddress-accessing. (line 14) -* i <1>: Complex-creation/coercion. - (line 12) -* i: Complex class-instance creation. +* i <1>: Complex class-instance creation. (line 6) +* i: Complex-creation/coercion. + (line 12) * iconify: BLOX.BWindow-widget protocol. (line 26) * id: I18N.LocaleData-accessing. @@ -4016,52 +4022,52 @@ (line 44) * imaginary: Complex-creation/coercion. (line 15) -* index <1>: BLOX.BList-accessing. - (line 161) -* index <2>: BLOX.BDropDownList-list box accessing. +* index <1>: BLOX.BDropDownList-list box accessing. (line 6) +* index <2>: BLOX.BList-accessing. + (line 161) * index: DBI.ColumnInfo-accessing. (line 6) * index_: BLOX.BDropDown-list box accessing. (line 63) -* indexAt_ <1>: BLOX.BText-position & lines. - (line 35) -* indexAt_: BLOX.BList-accessing. +* indexAt_ <1>: BLOX.BList-accessing. (line 168) +* indexAt_: BLOX.BText-position & lines. + (line 35) * info: BLOX.BImage class-icons. (line 9) -* initialize <1>: TCP.IPAddress class-initialization. - (line 18) -* initialize <2>: TCP.DatagramSocket class-initialization. - (line 6) -* initialize <3>: TCP.Socket class-well known ports. +* initialize <1>: TCP.Socket class-well known ports. (line 17) -* initialize <4>: BLOX.BLabel class-initialization. +* initialize <2>: I18N.EncodedStream class-initializing. (line 6) -* initialize <5>: I18N.LocaleData class-database. - (line 16) -* initialize <6>: Complex class-instance creation. +* initialize <3>: Complex class-instance creation. (line 9) -* initialize <7>: I18N.EncodedStream class-initializing. +* initialize <4>: TCP.IPAddress class-initialization. + (line 18) +* initialize <5>: I18N.LcMessagesMoFileVersion0 class-plurals. (line 6) -* initialize <8>: I18N.LcMessagesMoFileVersion0 class-plurals. +* initialize <6>: TCP.DatagramSocket class-initialization. (line 6) -* initialize: I18N.RunTimeExpression class-initializing. +* initialize <7>: I18N.LocaleData class-database. + (line 16) +* initialize <8>: BLOX.BLabel class-initialization. (line 6) -* initialize_ <1>: BLOX.BWidget-customization. - (line 20) -* initialize_ <2>: BLOX.BEventSet-initializing. +* initialize: I18N.RunTimeExpression class-initializing. (line 6) -* initialize_ <3>: BLOX.BBalloon-initializing. +* initialize_ <1>: BLOX.BEventSet-initializing. (line 6) -* initialize_: I18N.LocaleData-initialization. +* initialize_ <2>: BLOX.BWidget-customization. + (line 20) +* initialize_ <3>: I18N.LocaleData-initialization. (line 9) -* insertAtEnd_ <1>: BLOX.BText-inserting text. +* initialize_: BLOX.BBalloon-initializing. (line 6) -* insertAtEnd_ <2>: BLOX.BDropDownEdit-text accessing. +* insertAtEnd_ <1>: BLOX.BText-inserting text. (line 6) -* insertAtEnd_: BLOX.BEdit-widget protocol. +* insertAtEnd_ <2>: BLOX.BEdit-widget protocol. (line 13) +* insertAtEnd_: BLOX.BDropDownEdit-text accessing. + (line 6) * insertAtEnd_attribute_: BLOX.BText-attributes. (line 6) * insertImage_: BLOX.BText-images. (line 6) @@ -4085,28 +4091,28 @@ (line 6) * interface_: TCP.MulticastSocket-instance creation. (line 10) -* invokeCallback <1>: BLOX.BMenuObject-callback. - (line 22) -* invokeCallback <2>: BLOX.BDropDown-callbacks. +* invokeCallback <1>: BLOX.BDropDown-callbacks. (line 15) -* invokeCallback <3>: BLOX.BToggle-accessing. - (line 14) -* invokeCallback <4>: BLOX.BButton-accessing. +* invokeCallback <2>: BLOX.BList-widget protocol. + (line 21) +* invokeCallback <3>: BLOX.BButton-accessing. (line 85) -* invokeCallback <5>: BLOX.BButtonLike-accessing. +* invokeCallback <4>: BLOX.BButtonLike-accessing. (line 15) -* invokeCallback <6>: BLOX.BCheckMenuItem-accessing. - (line 6) -* invokeCallback <7>: BLOX.BList-widget protocol. - (line 21) -* invokeCallback <8>: BLOX.BWindow-accessing. - (line 20) -* invokeCallback <9>: BLOX.BDropDownList-callbacks. +* invokeCallback <5>: BLOX.BDropDownList-callbacks. (line 14) -* invokeCallback <10>: BLOX.BEdit-widget protocol. +* invokeCallback <6>: BLOX.BMenuObject-callback. + (line 22) +* invokeCallback <7>: BLOX.BEdit-widget protocol. (line 20) -* invokeCallback: BLOX.BText-inserting text. +* invokeCallback <8>: BLOX.BText-inserting text. (line 28) +* invokeCallback <9>: BLOX.BCheckMenuItem-accessing. + (line 6) +* invokeCallback <10>: BLOX.BWindow-accessing. + (line 20) +* invokeCallback: BLOX.BToggle-accessing. + (line 14) * invokeCallback_: BLOX.BDialog-widget protocol. (line 16) * ipAddMembership: TCP.DatagramSocketImpl-C constants. @@ -4115,10 +4121,10 @@ (line 9) * ipMulticastIf <1>: TCP.MulticastSocketImpl-multicasting. (line 6) -* ipMulticastIf <2>: TCP.UDPSocketImpl-multicasting. - (line 6) -* ipMulticastIf: TCP.DatagramSocketImpl-C constants. +* ipMulticastIf <2>: TCP.DatagramSocketImpl-C constants. (line 12) +* ipMulticastIf: TCP.UDPSocketImpl-multicasting. + (line 6) * ipMulticastIf_ <1>: TCP.UDPSocketImpl-multicasting. (line 10) * ipMulticastIf_: TCP.MulticastSocketImpl-multicasting. @@ -4145,24 +4151,24 @@ (line 17) * isEmpty: TCP.ReadBuffer-buffer handling. (line 21) -* isExternalStream <1>: TCP.AbstractSocket-testing. +* isExternalStream <1>: ZLib.ZlibStream-streaming. (line 6) -* isExternalStream: ZLib.ZlibStream-streaming. +* isExternalStream: TCP.AbstractSocket-testing. (line 6) -* isFull <1>: TCP.ReadBuffer-buffer handling. - (line 24) -* isFull: TCP.WriteBuffer-testing. +* isFull <1>: TCP.WriteBuffer-testing. (line 6) +* isFull: TCP.ReadBuffer-buffer handling. + (line 24) * isMapped: BLOX.BWindow-widget protocol. (line 31) * isMulticast: TCP.IPAddress-accessing. (line 19) * isOpen: TCP.AbstractSocket-accessing. (line 27) -* isPeerAlive <1>: TCP.Socket-stream protocol. - (line 33) -* isPeerAlive: TCP.AbstractSocket-accessing. +* isPeerAlive <1>: TCP.AbstractSocket-accessing. (line 31) +* isPeerAlive: TCP.Socket-stream protocol. + (line 37) * isPositionable: ZLib.RawInflateStream-positioning. (line 14) * isPosixLocale: I18N.LocaleData-accessing. @@ -4179,63 +4185,63 @@ (line 6) * isUnicode: I18N.EncodedString class-accessing. (line 6) -* isWindow <1>: BLOX.Blox-widget protocol. - (line 50) -* isWindow: BLOX.BWindow-widget protocol. +* isWindow <1>: BLOX.BWindow-widget protocol. (line 34) +* isWindow: BLOX.Blox-widget protocol. + (line 50) * itemHeight: BLOX.BDropDown-flexibility. (line 15) * items: BLOX.BCanvas-widget protocol. (line 36) * join: BLOX.BPolyline-accessing. (line 30) -* join_ <1>: TCP.MulticastSocket-instance creation. +* join_ <1>: TCP.UDPSocketImpl-multicasting. (line 14) * join_ <2>: BLOX.BPolyline-accessing. (line 37) * join_ <3>: TCP.MulticastSocketImpl-multicasting. (line 14) -* join_: TCP.UDPSocketImpl-multicasting. +* join_: TCP.MulticastSocket-instance creation. (line 14) * justify: BLOX.BEmbeddedText-accessing. (line 52) * justify_: BLOX.BEmbeddedText-accessing. (line 55) * keysAndValuesDo_: DBI.Row-accessing. (line 26) -* label <1>: BLOX.BButton-accessing. - (line 88) -* label <2>: BLOX.BList-accessing. - (line 178) -* label <3>: BLOX.BMenu-accessing. +* label <1>: BLOX.BMenu-accessing. (line 6) -* label <4>: BLOX.BLabel-accessing. - (line 96) -* label <5>: BLOX.BWindow-accessing. +* label <2>: BLOX.BButton-accessing. + (line 88) +* label <3>: BLOX.BWindow-accessing. (line 24) -* label: BLOX.BMenuItem-accessing. +* label <4>: BLOX.BMenuItem-accessing. (line 6) -* label_ <1>: BLOX.BButton-accessing. +* label <5>: BLOX.BLabel-accessing. (line 96) -* label_ <2>: BLOX.BList-accessing. +* label: BLOX.BList-accessing. + (line 178) +* label_ <1>: BLOX.BList-accessing. (line 181) +* label_ <2>: BLOX.BButton-accessing. + (line 96) * label_ <3>: BLOX.BLabel-accessing. (line 104) * label_ <4>: BLOX.BMenuItem-accessing. (line 14) -* label_ <5>: BLOX.BWindow-accessing. - (line 32) -* label_: BLOX.BMenu-accessing. +* label_ <5>: BLOX.BMenu-accessing. (line 14) -* labelAt_ <1>: BLOX.BList-accessing. - (line 184) -* labelAt_: BLOX.BDropDown-list box accessing. +* label_: BLOX.BWindow-accessing. + (line 32) +* labelAt_ <1>: BLOX.BDropDown-list box accessing. (line 67) +* labelAt_: BLOX.BList-accessing. + (line 184) * labels: BLOX.BList-accessing. (line 187) -* labelsDo_ <1>: BLOX.BDropDown-list box accessing. - (line 70) -* labelsDo_: BLOX.BList-accessing. +* labelsDo_ <1>: BLOX.BList-accessing. (line 190) +* labelsDo_: BLOX.BDropDown-list box accessing. + (line 70) * language: I18N.LocaleData-accessing. (line 16) * language_: I18N.LocaleData class-accessing. @@ -4244,21 +4250,21 @@ (line 23) * language_territory_charset_: I18N.LocaleData class-accessing. (line 26) -* languageDirectory <1>: I18N.LocaleData-accessing. - (line 19) -* languageDirectory: I18N.LcMessages-accessing. +* languageDirectory <1>: I18N.LcMessages-accessing. (line 6) -* languageDirectory_ <1>: I18N.LcMessages-accessing. - (line 9) -* languageDirectory_: I18N.LocaleData-accessing. +* languageDirectory: I18N.LocaleData-accessing. + (line 19) +* languageDirectory_ <1>: I18N.LocaleData-accessing. (line 23) +* languageDirectory_: I18N.LcMessages-accessing. + (line 9) * languages: I18N.LocaleData class-database. (line 19) -* leave_ <1>: TCP.MulticastSocket-instance creation. +* leave_ <1>: TCP.UDPSocketImpl-multicasting. (line 17) -* leave_ <2>: TCP.MulticastSocketImpl-multicasting. +* leave_ <2>: TCP.MulticastSocket-instance creation. (line 17) -* leave_: TCP.UDPSocketImpl-multicasting. +* leave_: TCP.MulticastSocketImpl-multicasting. (line 17) * left_top_right_bottom_: BLOX.BWidget-geometry management. (line 163) @@ -4266,9 +4272,9 @@ (line 9) * lhs: I18N.RTEBinaryNode-compiling. (line 6) -* lhs_op_rhs_ <1>: I18N.RTEBinaryNode class-compiling. +* lhs_op_rhs_ <1>: I18N.RTEBinaryNode-computing. (line 6) -* lhs_op_rhs_: I18N.RTEBinaryNode-computing. +* lhs_op_rhs_: I18N.RTEBinaryNode class-compiling. (line 6) * lineAt_: BLOX.BText-position & lines. (line 40) @@ -4286,9 +4292,9 @@ (line 20) * listen_: TCP.AbstractSocketImpl-socket operations. (line 55) -* listen_log_ <1>: TCP.AbstractSocketImpl class-C call-outs. +* listen_log_ <1>: TCP.AbstractSocketImpl-C call-outs. (line 24) -* listen_log_: TCP.AbstractSocketImpl-C call-outs. +* listen_log_: TCP.AbstractSocketImpl class-C call-outs. (line 24) * listSelectAt_: BLOX.BDropDown-flexibility. (line 24) @@ -4300,10 +4306,10 @@ (line 6) * local_port_: TCP.DatagramSocket class-instance creation. (line 6) -* localAddress <1>: TCP.AbstractSocket-accessing. - (line 35) -* localAddress: TCP.AbstractSocketImpl-accessing. +* localAddress <1>: TCP.AbstractSocketImpl-accessing. (line 10) +* localAddress: TCP.AbstractSocket-accessing. + (line 35) * localHostName: TCP.SocketAddress class-accessing. (line 46) * localPort <1>: TCP.AbstractSocketImpl-accessing. @@ -4471,11 +4477,11 @@ * next <7>: Debugger-stepping commands. (line 16) * next: TCP.Socket-stream protocol. - (line 37) -* next_: TCP.Socket-stream protocol. (line 41) -* next_putAll_startingAt_ <1>: TCP.Socket-stream protocol. +* next_: TCP.Socket-stream protocol. (line 45) +* next_putAll_startingAt_ <1>: TCP.Socket-stream protocol. + (line 49) * next_putAll_startingAt_ <2>: ZLib.ZlibWriteStream-streaming. (line 31) * next_putAll_startingAt_: TCP.AbstractSocket-stream protocol. @@ -4483,7 +4489,7 @@ * nextFrom_port_: TCP.DatagramSocket-direct operations. (line 6) * nextHunk <1>: TCP.Socket-stream protocol. - (line 50) + (line 54) * nextHunk: ZLib.ZlibReadStream-streaming. (line 12) * nextInput: I18N.Encoder-stream operations. @@ -4491,7 +4497,7 @@ * nextPut_ <1>: BLOX.BText-inserting text. (line 31) * nextPut_ <2>: TCP.Socket-stream protocol. - (line 54) + (line 58) * nextPut_ <3>: TCP.DatagramSocket-accessing. (line 18) * nextPut_ <4>: BLOX.BEdit-widget protocol. @@ -4657,13 +4663,13 @@ * peek <3>: TCP.DatagramSocketImpl-socket operations. (line 12) * peek: TCP.Socket-stream protocol. - (line 59) + (line 63) * peek_ <1>: TCP.DatagramSocketImpl-socket operations. (line 15) * peek_: TCP.DatagramSocket-accessing. (line 24) * peekFor_ <1>: TCP.Socket-stream protocol. - (line 64) + (line 68) * peekFor_: ZLib.ZlibReadStream-streaming. (line 21) * peekInput: I18N.Encoder-stream operations. @@ -4856,7 +4862,7 @@ * readBufferSize_ <1>: TCP.Socket class-accessing. (line 15) * readBufferSize_: TCP.Socket-stream protocol. - (line 69) + (line 73) * readStream: ZLib.ZlibWriteStream-streaming. (line 46) * real: Complex-creation/coercion. @@ -5410,7 +5416,7 @@ * writeBufferSize_ <1>: TCP.Socket class-accessing. (line 21) * writeBufferSize_: TCP.Socket-stream protocol. - (line 73) + (line 77) * x <1>: BLOX.BWindow-widget protocol. (line 98) * x: BLOX.BWidget-geometry management. diff -rNu smalltalk-3.0.3/doc/gst-load.1 smalltalk-3.0.4/doc/gst-load.1 --- smalltalk-3.0.3/doc/gst-load.1 2008-05-14 12:18:12.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-load.1 2008-08-09 15:31:52.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH GST-LOAD "1" "May 2008" "gst-load version 3.0.3" "User Commands" +.TH GST-LOAD "1" "August 2008" "gst-load version 3.0.4" "User Commands" .SH NAME gst-load \- test and load packages into a GNU Smalltalk image .SH DESCRIPTION diff -rNu smalltalk-3.0.3/doc/gst-package.1 smalltalk-3.0.4/doc/gst-package.1 --- smalltalk-3.0.3/doc/gst-package.1 2008-05-14 12:18:12.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-package.1 2008-08-09 15:31:53.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH GST-PACKAGE "1" "May 2008" "gst-package version 3.0.3" "User Commands" +.TH GST-PACKAGE "1" "August 2008" "gst-package version 3.0.4" "User Commands" .SH NAME gst-package \- create and install GNU Smalltalk .star package files .SH DESCRIPTION diff -rNu smalltalk-3.0.3/doc/gst-sunit.1 smalltalk-3.0.4/doc/gst-sunit.1 --- smalltalk-3.0.3/doc/gst-sunit.1 2008-05-14 12:18:13.000000000 +0200 +++ smalltalk-3.0.4/doc/gst-sunit.1 2008-08-09 15:31:54.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH GST-SUNIT "1" "May 2008" "gst-sunit version 3.0.3" "User Commands" +.TH GST-SUNIT "1" "August 2008" "gst-sunit version 3.0.4" "User Commands" .SH NAME gst-sunit \- unit testing tool for GNU Smalltalk .SH DESCRIPTION diff -rNu smalltalk-3.0.3/doc/gst.1 smalltalk-3.0.4/doc/gst.1 --- smalltalk-3.0.3/doc/gst.1 2008-05-14 12:18:11.000000000 +0200 +++ smalltalk-3.0.4/doc/gst.1 2008-08-09 15:31:51.000000000 +0200 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH SMALLTALK "1" "May 2008" "Smalltalk version 3.0.3" "User Commands" +.TH SMALLTALK "1" "August 2008" "Smalltalk version 3.0.4" "User Commands" .SH NAME Smalltalk \- the GNU Smalltalk virtual machine .SH DESCRIPTION diff -rNu smalltalk-3.0.3/doc/stamp-1 smalltalk-3.0.4/doc/stamp-1 --- smalltalk-3.0.3/doc/stamp-1 2008-05-14 12:35:51.000000000 +0200 +++ smalltalk-3.0.4/doc/stamp-1 2008-08-09 15:30:58.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 14 May 2008 -@set UPDATED-MONTH May 2008 -@set EDITION 3.0.3 -@set VERSION 3.0.3 +@set UPDATED 9 August 2008 +@set UPDATED-MONTH August 2008 +@set EDITION 3.0.4 +@set VERSION 3.0.4 diff -rNu smalltalk-3.0.3/doc/stamp-2 smalltalk-3.0.4/doc/stamp-2 --- smalltalk-3.0.3/doc/stamp-2 2008-05-14 12:25:12.000000000 +0200 +++ smalltalk-3.0.4/doc/stamp-2 2008-08-09 15:42:45.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 14 May 2008 -@set UPDATED-MONTH May 2008 -@set EDITION 3.0.3 -@set VERSION 3.0.3 +@set UPDATED 9 August 2008 +@set UPDATED-MONTH August 2008 +@set EDITION 3.0.4 +@set VERSION 3.0.4 diff -rNu smalltalk-3.0.3/doc/stamp-vti smalltalk-3.0.4/doc/stamp-vti --- smalltalk-3.0.3/doc/stamp-vti 2008-05-14 12:17:47.000000000 +0200 +++ smalltalk-3.0.4/doc/stamp-vti 2008-08-09 15:30:57.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 14 May 2008 -@set UPDATED-MONTH May 2008 -@set EDITION 3.0.3 -@set VERSION 3.0.3 +@set UPDATED 9 August 2008 +@set UPDATED-MONTH August 2008 +@set EDITION 3.0.4 +@set VERSION 3.0.4 diff -rNu smalltalk-3.0.3/doc/tcp.texi smalltalk-3.0.4/doc/tcp.texi --- smalltalk-3.0.3/doc/tcp.texi 2008-05-14 12:18:04.000000000 +0200 +++ smalltalk-3.0.4/doc/tcp.texi 2008-08-09 15:31:11.000000000 +0200 @@ -2269,6 +2269,12 @@ Answer whether more data is available on the socket +@meindex availableBytes +@item availableBytes +Answer how many bytes are available in the socket's read buffer +or from the operating system. + + @meindex bufferContents @item bufferContents Answer the current contents of the read buffer diff -rNu smalltalk-3.0.3/doc/vers-base.texi smalltalk-3.0.4/doc/vers-base.texi --- smalltalk-3.0.3/doc/vers-base.texi 2008-05-14 12:17:48.000000000 +0200 +++ smalltalk-3.0.4/doc/vers-base.texi 2008-08-09 15:30:58.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 14 May 2008 -@set UPDATED-MONTH May 2008 -@set EDITION 3.0.3 -@set VERSION 3.0.3 +@set UPDATED 9 August 2008 +@set UPDATED-MONTH August 2008 +@set EDITION 3.0.4 +@set VERSION 3.0.4 diff -rNu smalltalk-3.0.3/doc/vers-gst.texi smalltalk-3.0.4/doc/vers-gst.texi --- smalltalk-3.0.3/doc/vers-gst.texi 2008-05-14 12:17:47.000000000 +0200 +++ smalltalk-3.0.4/doc/vers-gst.texi 2008-08-09 15:30:57.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 14 May 2008 -@set UPDATED-MONTH May 2008 -@set EDITION 3.0.3 -@set VERSION 3.0.3 +@set UPDATED 9 August 2008 +@set UPDATED-MONTH August 2008 +@set EDITION 3.0.4 +@set VERSION 3.0.4 diff -rNu smalltalk-3.0.3/doc/vers-libs.texi smalltalk-3.0.4/doc/vers-libs.texi --- smalltalk-3.0.3/doc/vers-libs.texi 2008-05-14 12:18:01.000000000 +0200 +++ smalltalk-3.0.4/doc/vers-libs.texi 2008-08-09 15:31:03.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 14 May 2008 -@set UPDATED-MONTH May 2008 -@set EDITION 3.0.3 -@set VERSION 3.0.3 +@set UPDATED 9 August 2008 +@set UPDATED-MONTH August 2008 +@set EDITION 3.0.4 +@set VERSION 3.0.4 diff -rNu smalltalk-3.0.3/gst-tool.c smalltalk-3.0.4/gst-tool.c --- smalltalk-3.0.3/gst-tool.c 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/gst-tool.c 2008-08-09 15:09:45.000000000 +0200 @@ -63,7 +63,7 @@ #include #include -const char *program_name; +char *program_name; const char *kernel_dir; const char *image_file; int flags = GST_NO_TTY; @@ -378,17 +378,26 @@ executable_name = argv[0]; /* Check if used in the build tree. */ - if (!strcmp (executable_name, "gst-tool" EXEEXT) - || !strcmp (executable_name, "gst-tool" ARGV_EXEEXT) - || !strcmp (executable_name, "lt-gst-tool" EXEEXT) - || !strcmp (executable_name, "lt-gst-tool" ARGV_EXEEXT)) + if (!strcasecmp (executable_name, "gst-tool" EXEEXT) + || !strcasecmp (executable_name, "gst-tool" ARGV_EXEEXT) + || !strcasecmp (executable_name, "lt-gst-tool" EXEEXT) + || !strcasecmp (executable_name, "lt-gst-tool" ARGV_EXEEXT)) { - argv++, argc--; - program_name = argv[0]; + program_name = strdup (argv[1]); flags |= GST_IGNORE_USER_FILES; + argv++, argc--; } else - program_name = executable_name; + { + int n = strlen (executable_name); + program_name = strdup (executable_name); + + /* Strip the executable extension if needed. */ + if (EXEEXT[0] + && n > strlen (EXEEXT) + && !strcasecmp (program_name + n - strlen (EXEEXT), EXEEXT)) + program_name[n - strlen (EXEEXT)] = 0; + } for (i = 0; ; i++) if (!tools[i].name) diff -rNu smalltalk-3.0.3/kernel/AnsiExcept.st smalltalk-3.0.4/kernel/AnsiExcept.st --- smalltalk-3.0.3/kernel/AnsiExcept.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/AnsiExcept.st 2008-08-09 15:09:45.000000000 +0200 @@ -212,7 +212,7 @@ "Raise the exceptional event represented by the receiver" - self exception instantiateNextHandler: self. + self exception instantiateNextHandler: self from: thisContext. ^self activateHandler: self isResumable ] diff -rNu smalltalk-3.0.3/kernel/ArrayColl.st smalltalk-3.0.4/kernel/ArrayColl.st --- smalltalk-3.0.3/kernel/ArrayColl.st 2008-04-10 11:10:56.000000000 +0200 +++ smalltalk-3.0.4/kernel/ArrayColl.st 2008-08-09 15:09:45.000000000 +0200 @@ -272,18 +272,6 @@ yourself ] - gather: aBlock [ - "Answer a new instance of a Collection containing all the results - of evaluating aBlock, joined together. aBlock should return - collections. The result is the same kind of the receiver, - independent of the type of collection returned by aBlock." - - - | newCollection | - newCollection := self copyEmptyForCollect: 0. - ^newCollection class join: (self collect: aBlock) - ] - select: aBlock [ "Answer a new instance of an ArrayedCollection containing all the elements in the receiver which, when passed to aBlock, answer true" diff -rNu smalltalk-3.0.3/kernel/CObject.st smalltalk-3.0.4/kernel/CObject.st --- smalltalk-3.0.3/kernel/CObject.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/CObject.st 2008-08-09 15:09:45.000000000 +0200 @@ -1364,7 +1364,7 @@ self at: 0 - put: aValue asCharacter + put: (Character value: aValue) type: super cObjStoredType ] ] diff -rNu smalltalk-3.0.3/kernel/Collection.st smalltalk-3.0.4/kernel/Collection.st --- smalltalk-3.0.3/kernel/Collection.st 2008-04-10 11:10:56.000000000 +0200 +++ smalltalk-3.0.4/kernel/Collection.st 2008-08-09 15:09:45.000000000 +0200 @@ -279,6 +279,21 @@ self do: [:each | ^each] ] + join [ + "Answer a new collection like my first element, with all the + elements (in order) of all my elements, which should be + collections. + + I use my first element instead of myself as a prototype because + my elements are more likely to share the desired properties than + I am, such as in: + + #('hello, ' 'world') join => 'hello, world'" + + + ^self isEmpty ifTrue: [#()] ifFalse: [self anyOne species join: self] + ] + beConsistent [ "This method is private, but it is quite interesting so it is documented. It ensures that a collection is in a consistent @@ -380,14 +395,11 @@ gather: aBlock [ "Answer a new instance of a Collection containing all the results of evaluating aBlock, joined together. aBlock should return - collections. The result is the same kind of the receiver, - independent of the type of collection returned by aBlock." + collections. The result is the same kind as the first collection, + returned by aBlock (as for #join)." - | newCollection | - newCollection := self copyEmptyForCollect. - self do: [:element | newCollection addAll: (aBlock value: element)]. - ^newCollection + ^(self collect: aBlock) join ] allSatisfy: aBlock [ @@ -722,4 +734,3 @@ self == Object finalizableObjects ifTrue: [anObject key finalize] ] ] - diff -rNu smalltalk-3.0.3/kernel/CompildCode.st smalltalk-3.0.4/kernel/CompildCode.st --- smalltalk-3.0.3/kernel/CompildCode.st 2008-04-10 11:10:56.000000000 +0200 +++ smalltalk-3.0.4/kernel/CompildCode.st 2008-08-09 15:09:45.000000000 +0200 @@ -465,7 +465,7 @@ ^map ] - jumpDestinationAt: anIndex [ + jumpDestinationAt: anIndex forward: aBoolean [ "Answer where the jump at bytecode index `anIndex' lands" @@ -480,7 +480,7 @@ ofs := ofs + 2. byte = 55] whileTrue. - ^byte = 40 ifTrue: [ofs - result] ifFalse: [ofs + result] + ^aBoolean ifFalse: [ofs - result] ifTrue: [ofs + result] ] reads: instVarIndex [ @@ -719,7 +719,7 @@ dispatchJump: byte at: anIndex to: anObject with: param [ | destination | - destination := self jumpDestinationAt: anIndex. + destination := self jumpDestinationAt: anIndex forward: byte > 40. byte < 42 ifTrue: [^anObject jumpTo: destination with: param]. byte = 42 ifTrue: [^anObject popJumpIfTrueTo: destination with: param]. byte = 43 ifTrue: [^anObject popJumpIfFalseTo: destination with: param] diff -rNu smalltalk-3.0.3/kernel/ExcHandling.st smalltalk-3.0.4/kernel/ExcHandling.st --- smalltalk-3.0.3/kernel/ExcHandling.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/ExcHandling.st 2008-08-09 15:09:45.000000000 +0200 @@ -229,7 +229,7 @@ signal := (signalClass new) initArguments: #(); initException: self. - self instantiateNextHandler: signal. + self instantiateNextHandler: signal from: thisContext. ^signal activateHandler: false ] @@ -243,7 +243,7 @@ signal := (signalClass new) initArguments: {arg}; initException: self. - self instantiateNextHandler: signal. + self instantiateNextHandler: signal from: thisContext. ^signal activateHandler: false ] @@ -260,7 +260,7 @@ {arg. arg2}; initException: self. - self instantiateNextHandler: signal. + self instantiateNextHandler: signal from: thisContext. ^signal activateHandler: false ] @@ -275,7 +275,7 @@ signal := (signalClass new) initArguments: args; initException: self. - self instantiateNextHandler: signal. + self instantiateNextHandler: signal from: thisContext. ^signal activateHandler: false ] @@ -329,20 +329,19 @@ depth := anInteger ] - instantiateNextHandler: aSignal [ + instantiateNextHandler: aSignal from: aContext [ "Private - Tell aSignal what it needs on the next handler for the receiver. If none is found, look for an handler for our parent, until one is found or ExAll if reached and there is no handler. In this case, answer the default handler for anException." - thisContext scanBacktraceForAttribute: #exceptionHandlerSearch:reset: + aContext parentContext scanBacktraceForAttribute: #exceptionHandlerSearch:reset: do: [:context :attr | | status | status := (attr arguments at: 1) value: context value: aSignal. - status == #found ifTrue: [^self]. - status == #skip ifTrue: [aSignal isNested: true]]. + status == #found ifTrue: [^self]]. aSignal onDoBlock: nil handlerBlock: self actualDefaultHandler @@ -568,7 +567,9 @@ | signal | - self exception instantiateNextHandler: (signal := self copy). + signal := self copy. + signal isNested: true. + self exception instantiateNextHandler: signal from: self context. ^signal activateHandler: true ] @@ -580,7 +581,9 @@ | signal | - self exception instantiateNextHandler: (signal := self copy). + signal := self copy. + signal isNested: true. + self exception instantiateNextHandler: signal from: self context. ^self return: (signal activateHandler: true) ] @@ -621,7 +624,8 @@ Kernel.CoreException resetAllHandlers. - replacementException exception instantiateNextHandler: replacementException. + replacementException exception + instantiateNextHandler: replacementException from: thisContext. ^replacementException return: (replacementException activateHandler: true) ] diff -rNu smalltalk-3.0.3/kernel/File.st smalltalk-3.0.4/kernel/File.st --- smalltalk-3.0.3/kernel/File.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/File.st 2008-08-09 15:09:46.000000000 +0200 @@ -155,14 +155,14 @@ path := OrderedCollection new. isAbsolute ifFalse: - [path addAll: (Directory working substrings: Directory pathSeparator)]. + [path addAll: (Directory working subStrings: Directory pathSeparator)]. "A Windows path may contain both / and \ separators. Clean it up to allow easy parsing" canonical := Directory pathSeparator = $/ ifTrue: [aString] ifFalse: [aString copyReplacing: $/ withObject: Directory pathSeparator]. - (canonical substrings: Directory pathSeparator) do: + (canonical subStrings: Directory pathSeparator) do: [:each | each = '.' ifFalse: @@ -174,12 +174,18 @@ into: [:old :each | old , Directory pathSeparatorString , each]. "Remove initial / from /C:/" - ^(isWindows and: + (isWindows and: [result size >= 4 and: [(result at: 1) isPathSeparator and: [(result at: 3) = $: and: [(result at: 4) isPathSeparator]]]]) - ifTrue: [result copyFrom: 2] - ifFalse: [result] + ifTrue: [^result copyFrom: 2]. + + "Restore UNC paths." + (isWindows and: [(aString at: 1) isPathSeparator and: [ + (aString at: 2) isPathSeparator]]) + ifTrue: [^'\', result]. + + ^result ] File class >> pathFrom: srcName to: destName [ @@ -192,7 +198,7 @@ File class >> computePathFrom: srcName to: destName [ - | src dest srcCanon destCanon path isUnix | + | src dest srcCanon destCanon srcUNC destUNC path isUnix | "A Windows path may contain both / and \ separators. Clean it up to allow easy parsing" isUnix := Directory pathSeparator = $/. @@ -205,17 +211,27 @@ src := srcCanon subStrings: Directory pathSeparator. dest := destCanon subStrings: Directory pathSeparator. + src := src asOrderedCollection. - src removeLast. dest := dest asOrderedCollection. + + src removeLast. dest isEmpty ifTrue: [dest addLast: '']. - path := (src notEmpty and: [src first ~= dest first]) - ifTrue: [ + + "\abc\def and \\abc\def are different!" + srcUNC := isUnix not and: [ srcCanon startsWith: '\\' ]. + destUNC := isUnix not and: [ destCanon startsWith: '\\' ]. + + path := (src isEmpty or: [src first = dest first and: [srcUNC = destUNC]]) + ifFalse: [ + srcUNC ifTrue: [ src addFirst: '' ]. + destUNC ifTrue: [ dest addFirst: '' ]. + "Don't prepend a \ if the destination path has a disk letter." - (isUnix or: [ (dest first at: 2 ifAbsent: [ nil ]) ~= $: ]) + (isUnix or: [ (dest first at: 2 ifAbsent: [ nil ]) ~= $: ]) ifTrue: [OrderedCollection with: ''] ifFalse: [OrderedCollection new]] - ifFalse: + ifTrue: [[src isEmpty or: [dest size = 1 or: [src first ~= dest first]]] whileFalse: [src removeFirst. diff -rNu smalltalk-3.0.3/kernel/MappedColl.st smalltalk-3.0.4/kernel/MappedColl.st --- smalltalk-3.0.3/kernel/MappedColl.st 2008-04-10 11:10:56.000000000 +0200 +++ smalltalk-3.0.4/kernel/MappedColl.st 2008-07-25 17:10:33.000000000 +0200 @@ -164,7 +164,7 @@ "Evaluate aBlock on the keys that can be used to access this collection." - map do: aBlock + map keysDo: aBlock ] collect: aBlock [ diff -rNu smalltalk-3.0.3/kernel/OrderColl.st smalltalk-3.0.4/kernel/OrderColl.st --- smalltalk-3.0.3/kernel/OrderColl.st 2008-04-10 11:10:56.000000000 +0200 +++ smalltalk-3.0.4/kernel/OrderColl.st 2008-07-25 17:10:33.000000000 +0200 @@ -56,6 +56,26 @@ ^self new: 16 ] + first [ + "Answer the first item of the receiver" + + + self beConsistent. + ^lastIndex >= firstIndex + ifTrue: [self basicAt: firstIndex] + ifFalse: [SystemExceptions.IndexOutOfRange signalOn: self withIndex: 1] + ] + + last [ + "Answer the last item of the receiver" + + + self beConsistent. + ^lastIndex >= firstIndex + ifTrue: [self basicAt: lastIndex] + ifFalse: [SystemExceptions.IndexOutOfRange signalOn: self withIndex: 0] + ] + at: anIndex [ "Answer the anIndex-th item of the receiver" @@ -63,9 +83,9 @@ | index | self beConsistent. index := anIndex + firstIndex - 1. - (index >= firstIndex and: [index <= lastIndex]) - ifTrue: [^self basicAt: index] - ifFalse: [^SystemExceptions.IndexOutOfRange signalOn: self withIndex: anIndex] + ^(index >= firstIndex and: [index <= lastIndex]) + ifTrue: [self basicAt: index] + ifFalse: [SystemExceptions.IndexOutOfRange signalOn: self withIndex: anIndex] ] at: anIndex put: anObject [ diff -rNu smalltalk-3.0.3/kernel/Semaphore.st smalltalk-3.0.4/kernel/Semaphore.st --- smalltalk-3.0.3/kernel/Semaphore.st 2008-04-10 11:10:57.000000000 +0200 +++ smalltalk-3.0.4/kernel/Semaphore.st 2008-08-04 13:52:10.000000000 +0200 @@ -65,6 +65,7 @@ | caught | + caught := false. ^[ [ "The VM will not preempt the process between the two statements. diff -rNu smalltalk-3.0.3/kernel/SeqCollect.st smalltalk-3.0.4/kernel/SeqCollect.st --- smalltalk-3.0.3/kernel/SeqCollect.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/SeqCollect.st 2008-08-09 15:09:46.000000000 +0200 @@ -529,6 +529,9 @@ i := start - 1. stop - i = replacementCollection size ifFalse: [^SystemExceptions.InvalidSize signalOn: replacementCollection size]. + replacementCollection isSequenceable ifTrue: [ + ^self replaceFrom: start to: stop with: replacementCollection startingAt: 1 ]. + replacementCollection do: [:each | self at: (i := i + 1) put: each] ] @@ -737,21 +740,6 @@ ^result ] - join [ - "Answer a new collection like my first element, with all the - elements (in order) of all my elements, which should be - collections. - - I use my first element instead of myself as a prototype because - my elements are more likely to share the desired properties than - I am, such as in: - - #('hello, ' 'world') join => 'hello, world'" - - - ^self isEmpty ifTrue: [#()] ifFalse: [self first species join: self] - ] - join: sepCollection [ "Answer a new collection like my first element, with all the elements (in order) of all my elements (which should be @@ -787,7 +775,7 @@ "Answer an unspecified element of the collection." - ^self at: 1 + ^self first ] do: aBlock [ diff -rNu smalltalk-3.0.3/kernel/Stream.st smalltalk-3.0.4/kernel/Stream.st --- smalltalk-3.0.3/kernel/Stream.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/Stream.st 2008-08-09 15:09:46.000000000 +0200 @@ -66,8 +66,8 @@ [i < anInteger] whileTrue: [item := self next. data at: (i := i + 1) put: item]] - on: EndOfStream - do: [:ex | SystemExceptions.NotEnoughElements signalOn: anInteger - i]. + on: SystemExceptions.EndOfStream + do: [:ex | SystemExceptions.NotEnoughElements signalOn: anInteger - i]. ^data ] @@ -288,16 +288,22 @@ receiver is streaming on Characters)." - [[self atEnd] whileFalse: [aBlock value: self nextLine]] on: EndOfStream - do: [:ex | ex return] + "FIXME: this is not very safe if the block uses the stream too. + But maybe we can assume it doesn't?" + [[self atEnd] whileFalse: [aBlock value: self nextLine]] + on: SystemExceptions.EndOfStream + do: [:ex | ex stream == self ifTrue: [ex return] ifFalse: [ex resume]] ] do: aBlock [ "Evaluate aBlock once for every object in the receiver" - [[self atEnd] whileFalse: [aBlock value: self next]] on: EndOfStream - do: [:ex | ex return] + "FIXME: this is not very safe if the block uses the stream too. + But maybe we can assume it doesn't?" + [[self atEnd] whileFalse: [aBlock value: self next]] + on: SystemExceptions.EndOfStream + do: [:ex | ex stream == self ifTrue: [ex return] ifFalse: [ex resume]] ] species [ diff -rNu smalltalk-3.0.3/kernel/StreamOps.st smalltalk-3.0.4/kernel/StreamOps.st --- smalltalk-3.0.3/kernel/StreamOps.st 2008-04-10 11:10:57.000000000 +0200 +++ smalltalk-3.0.4/kernel/StreamOps.st 2008-08-09 15:09:46.000000000 +0200 @@ -46,23 +46,21 @@ ^(self basicNew) streams: {stream1}; - startPos: 0 + yourself ] ConcatenatedStream class >> with: stream1 with: stream2 [ ^(self basicNew) - streams: - {stream1. - stream2}; - startPos: 0 + streams: {stream1. stream2}; + yourself ] ConcatenatedStream class >> withAll: array [ ^(self basicNew) streams: array; - startPos: 0 + yourself ] , aStream [ @@ -77,15 +75,21 @@ streams := streams copy ] - atEnd [ + stream [ - [streams first atEnd] whileTrue: - [streams size = 1 ifTrue: [^true]. + | s | + [(s := streams first) atEnd] whileTrue: + [streams size = 1 ifTrue: [^nil]. lastStart := startPos. startPos := startPos + curPos. curPos := 0. last := streams removeFirst]. - ^false + ^s + ] + + atEnd [ + + ^self stream isNil ] name [ @@ -96,8 +100,10 @@ next [ - self atEnd ifFalse: [curPos := curPos + 1]. - ^streams first next + | s | + ^(s := self stream) isNil + ifTrue: [self pastEnd] + ifFalse: [curPos := curPos + 1. s next] ] pastEnd [ @@ -107,35 +113,37 @@ peekFor: aCharacter [ - | result | - self atEnd + | s result | + (s := self stream) isNil ifTrue: [self pastEnd. ^false]. - result := streams first peekFor: aCharacter. + result := s peekFor: aCharacter. result ifTrue: [curPos := curPos + 1]. ^result ] peek [ - self atEnd ifTrue: [^self pastEnd]. - ^streams first peek + | s | + (s := self stream) isNil ifTrue: [^self pastEnd]. + ^s peek ] position [ - self atEnd. + self stream. ^startPos + curPos ] position: anInteger [ - self atEnd + | s | + (s := self stream) isNil ifTrue: [self pastEnd. ^self]. - streams first position: anInteger - startPos. + s position: anInteger - startPos. curPos := anInteger - startPos ] @@ -144,15 +152,11 @@ | adjust stream | - self atEnd. + stream := self stream. end + 1 = start ifTrue: [^'']. - end <= startPos - ifTrue: - [stream := last. - adjust := lastStart] - ifFalse: - [stream := streams first. - adjust := startPos]. + adjust := end <= startPos + ifTrue: [stream := last. lastStart] + ifFalse: [startPos]. ^stream copyFrom: (start - adjust max: 0) to: end - adjust ] @@ -161,24 +165,14 @@ | adjust stream | - self atEnd. + stream := self stream. end + 1 = start ifTrue: [^'']. - end <= startPos - ifTrue: - [stream := last. - adjust := lastStart] - ifFalse: - [stream := streams first. - adjust := startPos]. + adjust := end <= startPos + ifTrue: [stream := last. lastStart] + ifFalse: [adjust := startPos]. ^stream segmentFrom: (start - adjust max: 0) to: end - adjust ] - startPos: anInteger [ - - startPos := anInteger. - curPos := 0 - ] - addStream: stream [ streams addLast: stream @@ -186,7 +180,8 @@ streams: arrayOfStreams [ - streams := arrayOfStreams asOrderedCollection + streams := arrayOfStreams asOrderedCollection. + startPos := curPos := 0 ] ] diff -rNu smalltalk-3.0.3/kernel/URL.st smalltalk-3.0.4/kernel/URL.st --- smalltalk-3.0.3/kernel/URL.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/URL.st 2008-08-09 15:09:46.000000000 +0200 @@ -100,27 +100,16 @@ "Parse the given URL and answer an URL object based on it." "URL fromString: 'http://www/dir/file.html'." - "URL fromString: 'http://www:10080/dir/file.html'." - "URL fromString: 'http://www:10080/dir/file.html?x=100'." - "URL fromString: 'http://www:10080/dir/file.html#section'." - "URL fromString: 'ftp://ftp/pub/smalltalk'." - "URL fromString: 'ftp://ftp:21/pub/smalltalk'." - "URL fromString: 'ftp://user@ftp:21/pub/smalltalk'." - "URL fromString: 'ftp://user@ftp/pub/smalltalk'." - "URL fromString: 'ftp://user:passwd@ftp:21/pub/smalltalk'." - "URL fromString: 'news:fj.lang.smalltalk'." - "URL fromString: '/dir/file.html'." - "URL fromString: 'file.html'." @@ -200,25 +189,15 @@ URL class >> fromURLString: aString [ "URL fromString: 'http://www/dir/file.html'." - "URL fromString: 'http://www:10080/dir/file.html'." - "URL fromString: 'ftp://ftp/pub/smalltalk'." - "URL fromString: 'ftp://ftp:21/pub/smalltalk'." - "URL fromString: 'ftp://user@ftp:21/pub/smalltalk'." - "URL fromString: 'ftp://user@ftp/pub/smalltalk'." - "URL fromString: 'ftp://user:passwd@ftp:21/pub/smalltalk'." - "URL fromString: 'news:fj.lang.smalltalk'." - "URL fromString: '/dir/file.html'." - "URL fromString: '//host/dir/file.html'." - "URL fromString: 'file.html'." @@ -601,7 +580,7 @@ GET request)." - hasPostData := true + hasPostData := aBoolean ] host [ @@ -797,6 +776,20 @@ nextPut: $#; nextPutAll: fragment] ] + + contents [ + + | s | + ^[ (s := self readStream) contents ] ensure: [ + s ifNotNil: [ s close ] ] + ] + + readStream [ + + | s | + ^NetClients.URIResolver openStreamOn: self ifFail: [ + SystemExceptions.FileError signal: 'could not open %1' % {self} ] + ] ] ] diff -rNu smalltalk-3.0.3/kernel/VFS.st smalltalk-3.0.4/kernel/VFS.st --- smalltalk-3.0.3/kernel/VFS.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/VFS.st 2008-08-09 15:09:46.000000000 +0200 @@ -1209,7 +1209,7 @@ "Create an item in the tree for directories, and add an association to the allFiles SortedCollection" - directory := (mode bitAnd: 61440) = 16384 + directory := (mode bitAnd: 8r170000) = 8r40000 ifTrue: [current at: name put: LookupTable new] ifFalse: [current at: name put: nil]. data at: 1 put: directory. @@ -1220,7 +1220,7 @@ "Leave the LookupTables to be garbage collected, we are now interested in the file names only." topLevelFiles := directoryTree keys asArray. - allFiles + allFiles do: [:data | (data at: 1) isNil ifFalse: [data at: 1 put: (data at: 1) keys asArray]] ] @@ -1276,7 +1276,7 @@ mode isNumber ifTrue: [^mode]. mode isString ifTrue: [^self convertModeString: mode]. mode isCharacter ifTrue: [^self convertMode: mode == $d]. - ^mode ifTrue: [16877] ifFalse: [420] + ^mode ifTrue: [8r40755] ifFalse: [8r644] ] convertModeString: modeString [ @@ -1285,11 +1285,11 @@ | mode | mode := 0. - (modeString at: 1) = $l ifTrue: [mode := 40960]. - (modeString at: 1) = $d ifTrue: [mode := 16384]. - (modeString at: 4) asLowercase = $s ifTrue: [mode := mode + 2048]. - (modeString at: 7) asLowercase = $s ifTrue: [mode := mode + 1024]. - (modeString at: 10) asLowercase = $t ifTrue: [mode := mode + 512]. + (modeString at: 1) = $l ifTrue: [mode := 8r120000]. + (modeString at: 1) = $d ifTrue: [mode := 8r40000]. + (modeString at: 4) asLowercase = $s ifTrue: [mode := mode + 8r4000]. + (modeString at: 7) asLowercase = $s ifTrue: [mode := mode + 8r2000]. + (modeString at: 10) asLowercase = $t ifTrue: [mode := mode + 8r1000]. modeString from: 2 to: 10 @@ -1323,9 +1323,9 @@ directory := LookupTable new. allFiles at: (path copyFrom: 1 to: i - 1) put: - {0. + {directory. 0. self creationTime. - directory}. + self mode bitOr: 8r40111}. directory]]. last := i + 1]]. ^current @@ -1496,13 +1496,22 @@ self parent member: self mode: (mode bitAnd: 4095) ] + isSymbolicLink [ + "Answer whether a file with the name contained in the receiver does exist + and identifies a symbolic link." + + + size isNil ifTrue: [self refresh]. + ^(mode bitAnd: 8r170000) = 8r120000 + ] + isDirectory [ "Answer whether a file with the name contained in the receiver does exist and identifies a directory." size isNil ifTrue: [self refresh]. - ^(mode bitAnd: 61440) = 16384 + ^(mode bitAnd: 8r170000) = 8r40000 ] isReadable [ diff -rNu smalltalk-3.0.3/kernel/VFSZip.st smalltalk-3.0.4/kernel/VFSZip.st --- smalltalk-3.0.3/kernel/VFSZip.st 2008-05-14 12:02:32.000000000 +0200 +++ smalltalk-3.0.4/kernel/VFSZip.st 2008-08-09 15:09:46.000000000 +0200 @@ -334,6 +334,16 @@ offset := anInteger ] + + flush [ + + stream flush + ] + + close [ + + stream close + ] ] ] diff -rNu smalltalk-3.0.3/libffi/ChangeLog smalltalk-3.0.4/libffi/ChangeLog --- smalltalk-3.0.3/libffi/ChangeLog 2008-04-10 11:10:57.000000000 +0200 +++ smalltalk-3.0.4/libffi/ChangeLog 2008-07-31 08:59:12.000000000 +0200 @@ -1,3 +1,7 @@ +2008-07-21 Paolo Bonzini + + * src/x86/ffi.c (ffi_prep_closure_loc): Fix thinko. + 2008-01-24 David Edelsohn * configure: Regenerate. diff -rNu smalltalk-3.0.3/libffi/src/x86/ffi.c smalltalk-3.0.4/libffi/src/x86/ffi.c --- smalltalk-3.0.3/libffi/src/x86/ffi.c 2008-04-10 11:10:57.000000000 +0200 +++ smalltalk-3.0.4/libffi/src/x86/ffi.c 2008-07-31 08:59:12.000000000 +0200 @@ -349,14 +349,14 @@ { FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, - (void*)closure); + codeloc); } #ifdef X86_WIN32 else if (cif->abi == FFI_STDCALL) { FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0], &ffi_closure_STDCALL, - (void*)closure, cif->bytes); + codeloc, cif->bytes); } #endif else diff -rNu smalltalk-3.0.3/libgst/ChangeLog smalltalk-3.0.4/libgst/ChangeLog --- smalltalk-3.0.3/libgst/ChangeLog 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/libgst/ChangeLog 2008-08-09 15:09:47.000000000 +0200 @@ -1,3 +1,50 @@ +2008-08-06 Paolo Bonzini + + * events.c: Reset errno if _gst_sync_file_polling finds + POLLHUP, POLLERR or POLLNVAL. + * events.h: Document this. + +2008-08-01 Paolo Bonzini + + * sysdep.c: Use O_CLOEXEC if available instead of FD_CLOEXEC. + +2008-08-01 Paolo Bonzini + + * sysdep.c: Always set SIGCHLD handler, and invoke the file + interrupt handler from it. This makes sure that all children + are reaped. + +2008-08-01 Paolo Bonzini + + * sysdep.c: Fix off-by-one errors involving readlink(2). + +2008-07-28 Paolo Bonzini + + * gst-parse.c: Parse negative numbers as unary minus + number. + * lex.c: Add _gst_negate_yylval and simplify _gst_scan_number. + * lex.h: Declare _gst_negate_yylval. + +2008-07-14 Paolo Bonzini + + * libgst/opt.c: Enable jump superoperators. + +2008-07-14 Paolo Bonzini + + * libgst/interp-bc.inl: Replace FETCH with FETCH_VEC. + * libgst/vm.def: Use ADVANCE instead of PREFETCH also for jump + superoperators. Move "ip += 2" to ADVANCE. Remove argument + to FETCH (it was always dispatch_vec), add PREPARE_STACK to + jump bytecodes. + +2008-07-14 Paolo Bonzini + + * libgst/opt.c: Rewrite _gst_optimize_bytecodes to build a CFG + and reassemble the method at the end of the optimization. + +2008-05-30 Paolo Bonzini + + * libgst/callin.c: Fix %w in _gst_msg_sendf. + 2008-05-14 Paolo Bonzini * libgst/oop.c: Add ephemerons to buffer before marking their class diff -rNu smalltalk-3.0.3/libgst/callin.c smalltalk-3.0.4/libgst/callin.c --- smalltalk-3.0.3/libgst/callin.c 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/libgst/callin.c 2008-08-09 15:09:47.000000000 +0200 @@ -279,7 +279,11 @@ break; case 'w': - args[++i] = char_new ((char) va_arg (ap, wchar_t)); +#if SIZEOF_WCHAR_T <= SIZEOF_INT + args[++i] = char_new ((wchar_t) va_arg (ap, int)); +#else + args[++i] = char_new ((wchar_t) va_arg (ap, wchar_t)); +#endif INC_ADD_OOP (args[i]); break; diff -rNu smalltalk-3.0.3/libgst/events.c smalltalk-3.0.4/libgst/events.c --- smalltalk-3.0.3/libgst/events.c 2008-05-13 10:47:58.000000000 +0200 +++ smalltalk-3.0.4/libgst/events.c 2008-08-09 15:09:47.000000000 +0200 @@ -182,11 +182,17 @@ } while ((result == -1) && (errno == EINTR)); + if (result == -1) + return -1; + if (pfd.revents & pfd.events) return 1; else if (pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) - return -1; + { + errno = 0; + return -1; + } else return 0; diff -rNu smalltalk-3.0.3/libgst/events.h smalltalk-3.0.4/libgst/events.h --- smalltalk-3.0.3/libgst/events.h 2008-05-13 10:47:59.000000000 +0200 +++ smalltalk-3.0.4/libgst/events.h 2008-08-06 15:52:47.000000000 +0200 @@ -85,8 +85,9 @@ /* Check whether I/O is possible on the FD file descriptor; COND is 0 to check for pending input, 1 to check for the possibility of doing non-blocking output, 2 to check for pending exceptional situations - (such as out-of-band data). Answer -1 if there is an error, 0 if - I/O is impossible, 1 if possible. */ + (such as out-of-band data). Answer -1 if there is an error (including + POLLHUP -- in that case errno is left to 0), 0 if I/O is impossible, + 1 if possible. */ extern int _gst_sync_file_polling (int fd, int cond) ATTRIBUTE_HIDDEN; @@ -94,10 +95,10 @@ /* Check whether I/O is possible on the FD file descriptor; COND is 0 to check for pending input, 1 to check for the possibility of doing non-blocking output, 2 to check for pending exceptional situations - (such as out-of-band data). Answer -1 if there is an error, 0 if - I/O is impossible, 1 if possible. If 0 is answered, the virtual - machine arranges things so that when the given condition is true - SEMAPHOREOOP is signaled. + (such as out-of-band data). Answer -1 if there is an error (including + POLLHUP -- in that case errno is left to 0), 0 if I/O is impossible, + 1 if possible. If 0 is answered, the virtual machine arranges things + so that when the given condition is true SEMAPHOREOOP is signaled. Note: due to lack of support from many kernels, waiting for a semaphore to be signaled when *output* is possible is risky and diff -rNu smalltalk-3.0.3/libgst/gst-parse.c smalltalk-3.0.4/libgst/gst-parse.c --- smalltalk-3.0.3/libgst/gst-parse.c 2008-05-13 10:47:58.000000000 +0200 +++ smalltalk-3.0.4/libgst/gst-parse.c 2008-08-09 15:09:47.000000000 +0200 @@ -654,6 +654,7 @@ switch (t1) { case '>': + case '-': case BINOP: case KEYWORD: #if 0 @@ -1130,7 +1131,7 @@ binary_pattern: binop IDENTIFIER keyword_pattern: keyword_pattern KEYWORD IDENTIFIER | KEYWORD IDENTIFIER - binop : BINOP | '<' | '>' | '|' */ + binop : BINOP | '<' | '>' | '-' | '|' */ static tree_node parse_message_pattern (gst_parser *p) @@ -1149,6 +1150,7 @@ case BINOP: case '<': case '>': + case '-': case '|': lex (p); arg = parse_variable (p); @@ -1317,7 +1319,7 @@ { if (token (p, 0) != IDENTIFIER) { - node = parse_primary(p); + node = parse_primary (p); break; } else @@ -1391,6 +1393,7 @@ case SCALED_DECIMAL_LITERAL: case CHAR_LITERAL: case '#': + case '-': node = parse_literal (p, false); break; @@ -1462,9 +1465,35 @@ { tree_node node; int ival; + int tok = token (p, 0); - switch (token (p, 0)) + switch (tok) { + case '-': + lex (p); + tok = token (p, 0); + switch (tok) + { + case INTEGER_LITERAL: + case LARGE_INTEGER_LITERAL: + case FLOATD_LITERAL: + case FLOATE_LITERAL: + case FLOATQ_LITERAL: + case SCALED_DECIMAL_LITERAL: + if (_gst_negate_yylval (tok, val (p, 0))) + return parse_literal (p, array); + else + { + _gst_errorf ("parse error, expected positive numeric literal"); + recover_error (p); + } + + default: + expected (p, INTEGER_LITERAL, FLOATD_LITERAL, SCALED_DECIMAL_LITERAL, + -1); + } + break; + case '(': assert (array); node = parse_array_literal (p); @@ -1795,6 +1824,7 @@ case BINOP: case '<': + case '-': case '|': if ((kind & EXPR_BINOP) == 0) return node; @@ -1841,6 +1871,7 @@ case '>': case BINOP: case '<': + case '-': case '|': node = parse_binary_expression (p, NULL, EXPR_CASCADED); break; @@ -1888,7 +1919,7 @@ char *sel; tree_node arg; assert (token (p, 0) == BINOP || token (p, 0) == '|' || token (p, 0) == '<' - || token (p, 0) == '>'); + || token (p, 0) == '-' || token (p, 0) == '>'); sel = val(p, 0)->sval; lex (p); arg = parse_expression (p, kind & ~EXPR_KEYWORD & ~EXPR_BINOP); diff -rNu smalltalk-3.0.3/libgst/interp-bc.inl smalltalk-3.0.4/libgst/interp-bc.inl --- smalltalk-3.0.3/libgst/interp-bc.inl 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/libgst/interp-bc.inl 2008-08-09 15:09:47.000000000 +0200 @@ -578,7 +578,7 @@ if UNCOMMON (time_to_preempt) set_preemption_timer (); - FETCH (normal_byte_codes); + FETCH_VEC (normal_byte_codes); /* Some more routines we need... */ lookahead_failed_true: diff -rNu smalltalk-3.0.3/libgst/lex.c smalltalk-3.0.4/libgst/lex.c --- smalltalk-3.0.3/libgst/lex.c 2008-05-13 10:47:59.000000000 +0200 +++ smalltalk-3.0.4/libgst/lex.c 2008-07-29 11:27:37.000000000 +0200 @@ -643,18 +643,12 @@ else { _gst_unread_char (ic); - - /* We come here also for a negative number, which we handle - specially. */ - if (maybe_number && c == '-' && is_digit (ic)) - return (scan_number ('-', lvalp)); - buf[1] = 0; } lvalp->sval = xstrdup (buf); - if ((buf[0] == '|' || buf[0] == '<' || buf[0] == '>') + if ((buf[0] == '|' || buf[0] == '<' || buf[0] == '>' || buf[0] == '-') && buf[1] == '\0') return (buf[0]); @@ -790,44 +784,31 @@ OOP numOOP; int base, exponent, ic; long double num, floatExponent; - mst_Boolean mantissaParsed = false, isNegative = false, - largeInteger = false; + mst_Boolean isNegative = false, largeInteger = false; int float_type = 0; base = 10; exponent = 0; ic = c; - if (ic != '-') + assert (ic != '-'); + num = scan_digits (ic, false, 10, &largeInteger); + ic = _gst_next_char (); + if (ic == 'r') { - num = scan_digits (ic, isNegative, 10, &largeInteger); - ic = _gst_next_char (); - if (ic == 'r') - { - char *p = obstack_finish (_gst_compilation_obstack); - obstack_free (_gst_compilation_obstack, p); + char *p = obstack_finish (_gst_compilation_obstack); + obstack_free (_gst_compilation_obstack, p); - base = (int) num; - if (base > 36 || largeInteger) - { - _gst_errorf ("Numeric base too large %d", base); - _gst_had_error = true; - } - ic = _gst_next_char (); - } - else - mantissaParsed = true; - } + base = (int) num; + if (base > 36 || largeInteger) + { + _gst_errorf ("Numeric base too large %d", base); + _gst_had_error = true; + } + ic = _gst_next_char (); - /* - * here we've either - * a) parsed base, an 'r' and are sitting on the following character - * b) parsed the integer part of the mantissa, and are sitting on the char - * following it, or - * c) parsed nothing and are sitting on a - sign. - */ - if (!mantissaParsed) - { + /* Having to support things like 16r-123 is a pity :-) because we + actually incorrectly accept -16r-0. */ if (ic == '-') { isNegative = true; @@ -1335,3 +1316,71 @@ break; } } + +mst_Boolean +_gst_negate_yylval (int token, YYSTYPE *yylval) +{ + switch (token) + { + case INTEGER_LITERAL: + if (yylval->ival < 0) + return false; + yylval->ival = -yylval->ival; + break; + case FLOATD_LITERAL: + case FLOATE_LITERAL: + case FLOATQ_LITERAL: + if (yylval->fval < 0) + return false; + yylval->fval = -yylval->fval; + break; + + case SCALED_DECIMAL_LITERAL: + { + int sign; + _gst_msg_sendf (&sign, "%i %o sign", yylval->oval); + if (sign < 0) + return false; + + _gst_msg_sendf (&yylval->oval, "%o %o negated", yylval->oval); + INC_ADD_OOP (yylval->oval); + MAKE_OOP_READONLY (yylval->oval, true); + break; + } + + case LARGE_INTEGER_LITERAL: + { + byte_object bo = yylval->boval; + gst_uchar *digits = bo->body; + int size = bo->size; + int i; + + /* The input value must be positive. */ + if (digits[size - 1] >= 128) + return false; + + /* Do two's complement -- first invert, then increment with carry */ + for (i = 0; i < size; i++) + digits[i] ^= 255; + + for (i = 0; (++digits[i]) == 0; i++); + + /* Search where the number really ends -- discard trailing 111... + bytes but remember, the most significant bit of the last digit + must be 1! */ + for (; size > 0 && digits[size - 1] == 255; size--); + if (digits[size - 1] < 128) + size++; + + assert (size <= bo->size); + bo->size = size; + bo->class = _gst_large_negative_integer_class; + break; + } + + default: + abort (); + } + + return true; +} diff -rNu smalltalk-3.0.3/libgst/lex.h smalltalk-3.0.4/libgst/lex.h --- smalltalk-3.0.3/libgst/lex.h 2008-05-13 10:47:59.000000000 +0200 +++ smalltalk-3.0.4/libgst/lex.h 2008-07-29 11:27:37.000000000 +0200 @@ -100,4 +100,10 @@ PTR lval) ATTRIBUTE_HIDDEN; +/* Negate the semantic value YYLVAL, which must be a numeric token + of type TOKEN. Returns true if YYLVAL is positive, false if it + is negative. */ +extern mst_Boolean _gst_negate_yylval (int token, + YYSTYPE *yylval); + #endif /* GST_LEX_H */ diff -rNu smalltalk-3.0.3/libgst/match.h smalltalk-3.0.4/libgst/match.h --- smalltalk-3.0.3/libgst/match.h 2008-05-13 10:48:00.000000000 +0200 +++ smalltalk-3.0.4/libgst/match.h 2008-08-09 15:20:51.000000000 +0200 @@ -5172,13 +5172,13 @@ } \ else \ { \ - /* Don't optimize jumps that land on one which has extension \ - bytes. But if we jump to a return, we can safely optimize: \ - returns are never extended, and the interpreter ignores the \ - extension byte. */ \ + /* Don't optimize jumps that have extension bytes. But if we \ + jump to a return, we can safely optimize: returns are \ + never extended, and the interpreter ignores the extension \ + byte. TODO: check if this is still true. */ \ canOptimizeJump = (*IP0 != EXT_BYTE); \ - dest = IP0 + ofs; \ - current->byte = dest - bytecodes->base; \ + kind = IP[-2]; \ + dest_ip0 = dest = IP0 + ofs; \ canOptimizeJump |= IS_RETURN_BYTECODE (*dest); \ split = true; \ } \ @@ -5187,12 +5187,18 @@ MATCH_BYTECODES_THREAD_JUMPS_POP_JUMP_TRUE: \ MATCH_BYTECODES_THREAD_JUMPS_POP_JUMP_FALSE: \ { \ + if (ofs == 0) \ + { \ + dest[-2] = POP_STACK_TOP; \ + dest[-1] = 0; \ + } \ + \ /* Jumps to CONDITIONAL jumps must not be touched, either because \ they were unconditional or because they pop the stack top! */ \ - if (first_byte == bp) \ + else if (dest_ip0 == bp) \ { \ - dest = IP0 + ofs; \ - current->byte = dest - bytecodes->base; \ + kind = IP[-2]; \ + dest_ip0 = dest = IP0 + ofs; \ split = true; \ } \ } \ diff -rNu smalltalk-3.0.3/libgst/opt.c smalltalk-3.0.4/libgst/opt.c --- smalltalk-3.0.3/libgst/opt.c 2008-05-13 10:47:59.000000000 +0200 +++ smalltalk-3.0.4/libgst/opt.c 2008-08-09 15:09:48.000000000 +0200 @@ -95,29 +95,25 @@ itself. */ typedef struct block_boundary { - short byte; - short id; -} -block_boundary; + /* Bytecode at the end of the basic block, -1 if not a jump. */ + int kind; -/* This structure defines how to fix the jumps after the optimized - basic blocks are put together. Everything is done after the - peephole pass because this allows us to handle forward jumps and - backward jumps in the same way. - - When single blocks are optimized, the sorted block_boundaries are - examined one at a time. As we process blocks, we fill an array of - jump structures with offsets in the optimized bytecode. We fill a - single field at a time -- the id's sign in the block_boundary says - which field is to be filled, the absolute value gives which jump - structure is to be filled. In the end, block_boundaries whose id's - absolute value is the same are all paired. */ -typedef struct jump -{ - int from; /* where the jump bytecode lies */ - int dest; /* where the jump bytecode lands */ + /* Start of the basic block. */ + int start, end; + + /* Destination IP for the jump at the end of the basic block. */ + int dest; + + /* Destination basic block for the jump at the end of the basic block. */ + struct block_boundary *dest_bb; + + /* Size of the optimized basic block. */ + int opt_length; + + /* Offset of the basic block in the optimized method. */ + int final_byte; } -jump; +block_boundary; /* Basic block data structure, common to the JIT and the verifier. */ typedef struct basic_block_item { @@ -184,23 +180,29 @@ int bc2, int arg); -/* Scan the bytecodes between FROM and TO, performing a handful - of peephole optimizations. As they are overwritten with an - optimized version; then, superoperators are created with - optimize_superoperators and _gst_compile_bytecodes() is - used to append the final bytecodes to the stream of optimized - bytecodes. */ -static void optimize_basic_block (gst_uchar * from, - gst_uchar * to); - -/* Scan the peephole-optimized bytecodes between FROM and TO. */ -gst_uchar *optimize_superoperators (gst_uchar * from, - gst_uchar * to); +/* Scan the bytecodes between FROM and TO, performing a handful of + peephole optimizations and creating superoperators with + optimize_superoperators. The optimized bytecodes are written + starting at FROM. */ +static int optimize_basic_block (gst_uchar * from, + gst_uchar * to); + +/* Scan the peephole-optimized bytecodes between FROM and TO. Generate + superoperators and rewrite in-place starting at FROM. Return the + pointer just past the final byte written. */ +static gst_uchar *optimize_superoperators (gst_uchar * from, + gst_uchar * to); /* This compares two block_boundary structures according to their - bytecode position. */ + ending bytecode position. */ static int compare_blocks (const PTR a, const PTR b) ATTRIBUTE_PURE; +/* And this compares an int (A) with the starting bytecode of block B. */ +static int search_block (const PTR a, const PTR b) ATTRIBUTE_PURE; + +/* Computes the length of a jump at distance OFS. */ +static int compute_jump_length (int ofs) ATTRIBUTE_PURE; + /* This answers how the dirtyness of BLOCKOOP affects the block that encloses it. */ static inline int check_inner_block (OOP blockOOP); @@ -383,7 +385,39 @@ const block_boundary *ba = (const block_boundary *) a; const block_boundary *bb = (const block_boundary *) b; - return (ba->byte - bb->byte); + /* Sort by bytecode. */ + if (ba->end != bb->end) + return (ba->end - bb->end); + + /* Put first the element representing the jump. */ + else if (ba->kind != -1 && bb->kind == -1) + return -1; + else if (bb->kind != -1 && ba->kind == -1) + return 1; + + return 0; +} + +int +search_block (const PTR a, const PTR b) +{ + const int *ia = (const int *) a; + const block_boundary *bb = (const block_boundary *) b; + + return (*ia - bb->start); +} + +int +compute_jump_length (int ofs) +{ + if (ofs > -256 && ofs < 256) + return 2; + else if (ofs > -65536 && ofs < 65536) + return 4; + else if (ofs > -16777216 && ofs < 16777216) + return 6; + else + return 8; } bc_vector @@ -393,11 +427,10 @@ return (bytecodes); #else bc_vector old_bytecodes; - block_boundary *blocks, *current; - jump *jumps; - gst_uchar *bp; - gst_uchar *end, *first; - int num; + block_boundary *blocks, *block, *last; + gst_uchar *bp, *opt, *end, *first; + int i; + mst_Boolean changed; bp = bytecodes->base; end = bytecodes->ptr; @@ -406,16 +439,17 @@ /* 1) Split into basic blocks. This part cheats so that the final fixup also performs jump optimization. */ - for (current = blocks, num = 0; bp != end; bp += BYTECODE_SIZE) + for (last = blocks; bp != end; ) { gst_uchar *dest = bp; - gst_uchar *first_byte; + gst_uchar *dest_ip0; mst_Boolean canOptimizeJump, split; + int kind = 0; split = false; do { - first_byte = dest; + dest_ip0 = dest; canOptimizeJump = false; MATCH_BYTECODES (THREAD_JUMPS, dest, ( MAKE_DIRTY_BLOCK, @@ -465,25 +499,31 @@ } else { - /* Don't optimize jumps that land on one which has extension - bytes. But if we jump to a return, we can safely optimize: - returns are never extended, and the interpreter ignores the - extension byte. */ + /* Don't optimize jumps that have extension bytes. But if we + jump to a return, we can safely optimize: returns are + never extended, and the interpreter ignores the extension + byte. TODO: check if this is still true. */ canOptimizeJump = (*IP0 != EXT_BYTE); - dest = IP0 + ofs; - current->byte = dest - bytecodes->base; + kind = IP[-2]; + dest_ip0 = dest = IP0 + ofs; canOptimizeJump |= IS_RETURN_BYTECODE (*dest); split = true; } } POP_JUMP_TRUE, POP_JUMP_FALSE { + if (ofs == 0) + { + dest[-2] = POP_STACK_TOP; + dest[-1] = 0; + } + /* Jumps to CONDITIONAL jumps must not be touched, either because they were unconditional or because they pop the stack top! */ - if (first_byte == bp) + else if (dest_ip0 == bp) { - dest = IP0 + ofs; - current->byte = dest - bytecodes->base; + kind = IP[-2]; + dest_ip0 = dest = IP0 + ofs; split = true; } } @@ -503,85 +543,140 @@ )); } while (canOptimizeJump); - if (split) - { - current->id = ++num; - current++; - current->byte = bp - bytecodes->base; - current->id = -num; - current++; - } while (*bp == EXT_BYTE) bp += BYTECODE_SIZE; + bp += BYTECODE_SIZE; + + if (split) + { + assert (bp[-2] == kind); + assert (kind == JUMP || kind == JUMP_BACK + || kind == POP_JUMP_TRUE || kind == POP_JUMP_FALSE); + + last->dest = -1; + last->end = dest_ip0 - bytecodes->base; + last->kind = -1; + last++; + last->dest = dest_ip0 - bytecodes->base; + last->end = bp - bytecodes->base; + last->kind = kind; + last++; + } } - /* 2) Get the "real" block boundaries by sorting them according to - where they happen in the original bytecode. Note that a simple - bucket sort is not enough because multiple jumps could end on the - same bytecode, and the same bytecode could be both the start and - the destination of a jump! */ - qsort (blocks, current - blocks, sizeof (block_boundary), compare_blocks); - - /* 3) Optimize the single basic blocks, and reorganize into `jumps' - the data that was put in blocks */ - jumps = alloca (sizeof (jump) * num); + last->dest = -1; + last->end = bp - bytecodes->base; + last->kind = -1; + last++; - old_bytecodes = _gst_save_bytecode_array (); + /* 2) Get the "real" block boundaries by sorting them according to + where they happen in the original bytecode; then complete the + data that was put in BLOCKS by setting the start of the basic + block, removing the jump bytecode at the end... */ + qsort (blocks, last - blocks, sizeof (block_boundary), compare_blocks); - for (bp = bytecodes->base; blocks != current; blocks++) + i = 0; + for (block = blocks; block != last; block++) { - first = bp; - bp = bytecodes->base + blocks->byte; - optimize_basic_block (first, bp); - if (blocks->id > 0) - jumps[blocks->id - 1].dest = _gst_current_bytecode_length (); - - else - jumps[-blocks->id - 1].from = _gst_current_bytecode_length (); + block->start = i; + if (block->end == i) + continue; + + i = block->end; + bp = bytecodes->base + block->end; + if (bp[-2] == JUMP || bp[-2] == JUMP_BACK + || bp[-2] == POP_JUMP_TRUE || bp[-2] == POP_JUMP_FALSE) + { + do + block->end -= BYTECODE_SIZE, bp -= BYTECODE_SIZE; + while (block->end != block->start && bp[-2] == EXT_BYTE); + } } - optimize_basic_block (bp, end); - _gst_free_bytecodes (bytecodes); - bytecodes = _gst_get_bytecodes (); - - /* 4) Fix the jumps so that they correctly point to the start of the - same basic block */ - for (; num--; jumps++) + /* ... and computing the destination of the jump as a basic block */ + for (block = blocks; block != last; block++) + if (block->kind != -1) + block->dest_bb = bsearch (&block->dest, blocks, last - blocks, + sizeof (block_boundary), search_block); + + /* Optimize the single basic blocks. */ + i = 0; + for (bp = opt = bytecodes->base, block = blocks; block != last; block++) { - int ofs; - - bp = bytecodes->base + jumps->from; - ofs = jumps->dest - jumps->from - 2; - - /* Fill the bytes from the topmost one. */ - while (*bp == EXT_BYTE) - ofs -= 2, bp += BYTECODE_SIZE; + first = bytecodes->base + block->start; + bp = bytecodes->base + block->end; + block->opt_length = optimize_basic_block (first, bp); - if (ofs == 0 && (*bp & ~1) != JUMP) +#ifndef NO_SUPEROPERATORS + /* Make a superoperator with the last bytecode and the jump. */ + if (block->kind != -1 + && block->opt_length > 0 + && !(block->opt_length > 2 + && first[block->opt_length - 4] == EXT_BYTE)) { - /* Use pop stack top for conditionals which jump to - the following bytecode. */ - bp[0] = POP_STACK_TOP; - bp[1] = 0; + int test = search_superop_fixed_arg_1 (first[block->opt_length - 2], + first[block->opt_length - 1], + block->kind); + if (test != -1) + { + block->opt_length -= 2; + block->kind = test; + } } - else - { - if (ofs < 0) - ofs = -ofs; +#endif - do + block->final_byte = i; + i += block->opt_length; + } + + /* Compute the size of the jump bytecodes. */ + do + { + changed = false; + i = 0; + for (bp = bytecodes->base, block = blocks; block != last; block++) + { + int jump_length; + if (block->final_byte != i) { - bp[1] = ofs & 255; - bp -= BYTECODE_SIZE; - ofs >>= 8; + block->final_byte = i; + changed = true; } - while UNCOMMON (*bp == EXT_BYTE); + if (block->kind != -1) + jump_length = + compute_jump_length (block->dest_bb->final_byte + - (block->final_byte + block->opt_length)); + else + jump_length = 0; + i += block->opt_length + jump_length; } } + while (changed); - _gst_restore_bytecode_array (old_bytecodes); + /* Put together the whole method. */ + old_bytecodes = _gst_save_bytecode_array (); + for (block = blocks; block != last; block++) + { + _gst_compile_bytecodes (bytecodes->base + block->start, + bytecodes->base + block->start + block->opt_length); + if (block->kind != -1) + { + int jump_length = + compute_jump_length (block->dest_bb->final_byte + - (block->final_byte + block->opt_length)); + int ofs = block->dest_bb->final_byte + - (block->final_byte + block->opt_length + jump_length); + + if (ofs < 0) + ofs = -ofs; + _gst_compile_byte (block->kind, ofs); + } + } + _gst_free_bytecodes (bytecodes); + bytecodes = _gst_get_bytecodes (); + _gst_restore_bytecode_array (old_bytecodes); return (bytecodes); #endif } @@ -643,26 +738,25 @@ return -1; } -void -optimize_basic_block (gst_uchar * from, - gst_uchar * to) +int +optimize_basic_block (gst_uchar *from, + gst_uchar *to) { - /* Points to the optimized bytecodes that have been written. */ + /* Points to the optimized bytecodes as they are written. */ gst_uchar *opt = from; /* Points to the unoptimized bytecodes as they are read. */ gst_uchar *bp = from; if (from == to) - return; - - /* For simplicity, the optimizations on line number bytecodes - don't take into account the possibility that the line number - bytecode is extended (>256 lines in a method). This almost - never happens, so we don't bother. */ + return 0; do { + /* Perform peephole optimizations. For simplicity, the optimizations + on line number bytecodes don't take into account the possibility + that the line number bytecode is extended (>256 lines in + a method). This almost never happens, so we don't bother. */ switch (bp[0]) { case LINE_NUMBER_BYTECODE: @@ -745,6 +839,12 @@ } break; + case JUMP: + case JUMP_BACK: + case POP_JUMP_TRUE: + case POP_JUMP_FALSE: + abort (); + default: break; } @@ -758,7 +858,7 @@ #ifndef NO_SUPEROPERATORS opt = optimize_superoperators (from, opt); #endif - _gst_compile_bytecodes (from, opt); + return opt - from; } gst_uchar * diff -rNu smalltalk-3.0.3/libgst/sysdep.c smalltalk-3.0.4/libgst/sysdep.c --- smalltalk-3.0.3/libgst/sysdep.c 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/libgst/sysdep.c 2008-08-09 15:09:48.000000000 +0200 @@ -635,17 +635,16 @@ } } +static SigHandler sigio_handler = SIG_IGN; + void _gst_set_file_interrupt (int fd, SigHandler func) { - static SigHandler old_func; - if (func != old_func) + if (func != sigio_handler) { - old_func = func; + sigio_handler = func; - /* Trap SIGCHLD, it might reveal a POLLHUP event! */ - _gst_set_signal_handler (SIGCHLD, func); #ifdef SIGPOLL _gst_set_signal_handler (SIGPOLL, func); #else @@ -898,7 +897,7 @@ } buf = alloca (path_max); - n = readlink (rpath, buf, path_max); + n = readlink (rpath, buf, path_max - 1); if (n < 0) { int saved_errno = errno; @@ -1097,13 +1096,16 @@ enclosed in brackets, which we cannot use here. */ { char buf[6 + 10 + 5]; - char *location = alloca (path_max); + char *location = xmalloc (path_max + 1); ssize_t n; sprintf (buf, "/proc/%d/exe", getpid ()); n = readlink (buf, location, path_max); if (n > 0 && location[0] != '[') - return location; + { + location[n] == '\0'; + return location; + } if (executable_fd < 0) executable_fd = open (buf, O_RDONLY, 0); } @@ -1677,6 +1679,10 @@ oflags |= O_EXCL; } +#ifdef O_CLOEXEC + oflags |= O_CLOEXEC; +#endif + if (create) fd = open (filename, oflags | access | O_CREAT, 0666); else @@ -1685,7 +1691,7 @@ if (fd < 0) return -1; -#ifdef FD_CLOEXEC +#if defined FD_CLOEXEC && !defined O_CLOEXEC fcntl (fd, F_SETFD, fcntl (fd, F_GETFD, 0) | FD_CLOEXEC); #endif @@ -1826,19 +1832,25 @@ } -#ifdef HAVE_WAITPID static void sigchld_handler (int signum) { +#ifdef HAVE_WAITPID int pid, status, serrno; serrno = errno; do pid = waitpid (-1, &status, WNOHANG); while (pid > 0); errno = serrno; -} #endif + /* Pass it to the SIGIO handler, it might reveal a POLLHUP event. */ + if (sigio_handler != SIG_DFL && sigio_handler != SIG_IGN) + sigio_handler (signum); + + _gst_set_signal_handler (SIGCHLD, sigchld_handler); +} + void _gst_init_sysdep (void) { @@ -1849,10 +1861,7 @@ tzset (); _gst_set_signal_handler (SIGPIPE, SIG_IGN); - -#ifdef HAVE_WAITPID _gst_set_signal_handler (SIGCHLD, sigchld_handler); -#endif } void diff -rNu smalltalk-3.0.3/libgst/vm.def smalltalk-3.0.4/libgst/vm.def --- smalltalk-3.0.3/libgst/vm.def 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/libgst/vm.def 2008-08-09 15:09:48.000000000 +0200 @@ -148,12 +148,13 @@ } #endif -/* FETCH loads the whole queue and dispatches the next bytecode to its - execution routine. +/* FETCH loads the whole queue. + FETCH_VEC does the same, but uses the given vector to execute the next + bytecode. DISPATCH keeps the current queue and dispatches the next bytecode to its execution routine. - PREFETCH prepares to execute the next bytecode. - PREFETCH_VEC does the same, and uses the given vector to execute the next + PREFETCH prepares to execute the next bytecode, including advancing ip. + PREFETCH_VEC does the same, but uses the given vector to execute the next bytecode. NEXT_BC assumes that the next bytecode was prefetched, loads its argument and dispatches it to the current dispatch vector. @@ -164,44 +165,45 @@ GET_ARG holds a pointer to the (possibly prefetched) argument of the next bytecode. */ #ifdef PIPELINING -#define FETCH(v) goto *(t = (v)[*ip], b2 = ip[2], b4 = ip[4], \ - arg = ip[1], arg2 = ip[3], t2 = dispatch_vec[b2], \ - t) +#define FETCH goto *(t = dispatch_vec[*ip], b2 = ip[2], b4 = ip[4], \ + arg = ip[1], arg2 = ip[3], t2 = dispatch_vec[b2], t) +#define FETCH_VEC(v) goto *(t = (v)[*ip], b2 = ip[2], b4 = ip[4], \ + arg = ip[1], arg2 = ip[3], t2 = dispatch_vec[b2], t) #define PREFETCH (t = t2, t2 = dispatch_vec[b4], \ arg2 = ip[3], b2 = b4, b4 = ip[6], \ ip += 2) - -#define NEXT_BC goto *(arg = GET_ARG, t) - #define PREFETCH_VEC(v) (t = (v)[b2], t2 = dispatch_vec[b4], \ arg2 = ip[3], b2 = b4, b4 = ip[6], \ ip += 2) +#define NEXT_BC goto *(arg = GET_ARG, t) #define NEXT_BC_VEC(v) goto *(arg = GET_ARG, t) #define NEXT_BC_NO_ARG(v) goto *t #define GET_ARG arg2 #elif REG_AVAILABILITY >= 1 -#define FETCH(v) goto *(arg = GET_ARG, (v)[*ip]) +#define FETCH goto *(arg = GET_ARG, dispatch_vec[*ip]) +#define FETCH_VEC(v) goto *(arg = GET_ARG, (v)[*ip]) #define PREFETCH (ip += 2, prefetch = dispatch_vec[*ip]) -#define NEXT_BC goto *(arg = GET_ARG, prefetch) #define PREFETCH_VEC(v) (ip += 2, prefetch = (v)[*ip]) +#define NEXT_BC goto *(arg = GET_ARG, prefetch) #define NEXT_BC_VEC(v) goto *(arg = GET_ARG, prefetch) #define NEXT_BC_NO_ARG(v) goto *prefetch #define GET_ARG (ip[1]) #else -#define FETCH(v) goto *(arg = ip[1], (v)[*ip]) +#define FETCH NEXT_BC +#define FETCH_VEC(v) NEXT_BC_VEC(v) #define PREFETCH (ip += 2) -#define NEXT_BC goto *(arg = GET_ARG, dispatch_vec[*ip]) #define PREFETCH_VEC(v) (ip += 2) +#define NEXT_BC goto *(arg = GET_ARG, dispatch_vec[*ip]) #define NEXT_BC_VEC(v) goto *(arg = GET_ARG, (v)[*ip]) #define NEXT_BC_NO_ARG(v) goto *(v)[*ip] #define GET_ARG (ip[1]) #endif -#define DISPATCH(v) goto *(arg = GET_ARG, (v)[*ip]) +#define DISPATCH(v) goto *(arg = GET_ARG, (v)[*ip]) operation PREFETCH ( -- ) { PREFETCH; @@ -209,6 +211,7 @@ } operation ADVANCE ( -- ) { + ip += 2; LOCAL_COUNTER++; } @@ -256,7 +259,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation MINUS_SPECIAL ( op1 op2 -- op ) { @@ -290,7 +293,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[MINUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation LESS_THAN_SPECIAL ( op1 op2 -- op ) { @@ -299,7 +302,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[LESS_THAN_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation GREATER_THAN_SPECIAL ( op1 op2 -- op ) { @@ -308,7 +311,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[GREATER_THAN_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation LESS_EQUAL_SPECIAL ( op1 op2 -- op ) { @@ -317,7 +320,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[LESS_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation GREATER_EQUAL_SPECIAL ( op1 op2 -- op ) { @@ -326,7 +329,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[GREATER_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation EQUAL_SPECIAL ( op1 op2 -- op ) { @@ -335,7 +338,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation NOT_EQUAL_SPECIAL ( op1 op2 -- op ) { @@ -344,7 +347,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[NOT_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation TIMES_SPECIAL ( op1 op2 -- op ) { @@ -353,7 +356,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[TIMES_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation DIVIDE_SPECIAL ( op1 op2 -- op ) { @@ -377,7 +380,7 @@ SEND_MESSAGE (_gst_builtin_selectors[DIVIDE_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation REMAINDER_SPECIAL ( op1 op2 -- op ) { @@ -392,7 +395,7 @@ SEND_MESSAGE (_gst_builtin_selectors[REMAINDER_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation BIT_XOR_SPECIAL ( op1 op2 -- op ) { @@ -406,7 +409,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_XOR_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation BIT_SHIFT_SPECIAL ( op1 op2 -- op ) { @@ -439,7 +442,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_SHIFT_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation INTEGER_DIVIDE_SPECIAL ( op1 op2 -- op1 op2 ) { @@ -454,7 +457,7 @@ SEND_MESSAGE (_gst_builtin_selectors[INTEGER_DIVIDE_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation BIT_AND_SPECIAL ( op1 op2 -- op ) { @@ -468,7 +471,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_AND_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation BIT_OR_SPECIAL ( op1 op2 -- op ) { @@ -482,7 +485,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_OR_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation AT_SPECIAL ( rec idx -- val ) { @@ -493,7 +496,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_cache_class == (classOOP = OOP_CLASS (rec)) @@ -515,7 +518,7 @@ at_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; } operation AT_PUT_SPECIAL ( rec idx val -- res ) { @@ -526,7 +529,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_PUT_SPECIAL].symbol, 2); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_put_cache_class == (classOOP = OOP_CLASS (rec)) @@ -548,7 +551,7 @@ at_put_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; } operation SIZE_SPECIAL ( rec -- val ) { @@ -559,7 +562,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[SIZE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (size_cache_class == (classOOP = OOP_CLASS (rec)) @@ -581,7 +584,7 @@ size_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; } operation CLASS_SPECIAL ( rec -- val ) { @@ -592,7 +595,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[CLASS_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (class_cache_class == (classOOP = OOP_CLASS (rec)) @@ -614,7 +617,7 @@ class_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; } operation IS_NIL_SPECIAL ( rec -- val ) { @@ -636,7 +639,7 @@ SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation VALUE_COLON_SPECIAL ( rec blk_arg -- rec blk_arg ) { @@ -648,7 +651,7 @@ SEND_MESSAGE (_gst_builtin_selectors[VALUE_COLON_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation SAME_OBJECT_SPECIAL ( op1 op2 -- op ) { @@ -667,7 +670,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[JAVA_AS_INT_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation JAVA_AS_LONG_SPECIAL ( rec -- val ) { @@ -681,7 +684,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[JAVA_AS_LONG_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation SEND sel n ( -- ) { @@ -689,7 +692,7 @@ EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation SEND_SUPER sel n ( -- ) { @@ -700,7 +703,7 @@ EXPORT_REGS (); SEND_TO_SUPER (METHOD_LITERAL (sel), n, classOOP); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation SEND_IMMEDIATE n ( -- ) { @@ -709,7 +712,7 @@ EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation SEND_SUPER_IMMEDIATE n ( -- ) { @@ -721,7 +724,7 @@ EXPORT_REGS (); SEND_TO_SUPER (bs->symbol, bs->numArgs, classOOP); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } operation PUSH_TEMPORARY_VARIABLE n ( -- tos ) { @@ -753,7 +756,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); @@ -793,7 +796,7 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_COLON_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else SET_ASSOCIATION_VALUE (var, value); @@ -804,15 +807,15 @@ } operation JUMP_BACK n ( -- ) { - ip += 2; + PREPARE_STACK (); ip -= n; - FETCH (dispatch_vec); + FETCH; } operation JUMP n ( -- ) { - ip += 2; + PREPARE_STACK (); ip += n; - FETCH (dispatch_vec); + FETCH; } operation POP_JUMP_FALSE n ( tos -- ) { @@ -821,7 +824,7 @@ PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -830,7 +833,7 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } } @@ -840,7 +843,7 @@ PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_false_oop) { @@ -849,7 +852,7 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } } @@ -884,11 +887,13 @@ { SEND_MESSAGE (_gst_bad_return_error_symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); } - IMPORT_REGS (); - SET_STACKTOP (val); - FETCH (dispatch_vec); + else + { + IMPORT_REGS (); + SET_STACKTOP (val); + } + FETCH; } operation RETURN_CONTEXT_STACK_TOP ( val -- val ) { @@ -896,7 +901,7 @@ unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; } operation DUP_STACK_TOP ( tos -- tos tos2 ) { @@ -925,7 +930,7 @@ if (processOOP == activeProcessOOP) SET_EXCEPT_FLAG (true); } - FETCH (dispatch_vec); + FETCH; } operation LINE_NUMBER_BYTECODE ( -- ) { @@ -1703,7 +1708,7 @@ } 134 = bytecode bc134 { - PREFETCH (); + ADVANCE (); POP_STACK_TOP (); JUMP_BACK (arg); } diff -rNu smalltalk-3.0.3/libgst/vm.inl smalltalk-3.0.4/libgst/vm.inl --- smalltalk-3.0.3/libgst/vm.inl 2008-05-14 12:13:16.000000000 +0200 +++ smalltalk-3.0.4/libgst/vm.inl 2008-08-09 15:21:02.000000000 +0200 @@ -79,44 +79,45 @@ #endif #ifdef PIPELINING -#define FETCH(v) goto *(t = (v)[*ip], b2 = ip[2], b4 = ip[4], \ - arg = ip[1], arg2 = ip[3], t2 = dispatch_vec[b2], \ - t) +#define FETCH goto *(t = dispatch_vec[*ip], b2 = ip[2], b4 = ip[4], \ + arg = ip[1], arg2 = ip[3], t2 = dispatch_vec[b2], t) +#define FETCH_VEC(v) goto *(t = (v)[*ip], b2 = ip[2], b4 = ip[4], \ + arg = ip[1], arg2 = ip[3], t2 = dispatch_vec[b2], t) #define PREFETCH (t = t2, t2 = dispatch_vec[b4], \ arg2 = ip[3], b2 = b4, b4 = ip[6], \ ip += 2) - -#define NEXT_BC goto *(arg = GET_ARG, t) - #define PREFETCH_VEC(v) (t = (v)[b2], t2 = dispatch_vec[b4], \ arg2 = ip[3], b2 = b4, b4 = ip[6], \ ip += 2) +#define NEXT_BC goto *(arg = GET_ARG, t) #define NEXT_BC_VEC(v) goto *(arg = GET_ARG, t) #define NEXT_BC_NO_ARG(v) goto *t #define GET_ARG arg2 #elif REG_AVAILABILITY >= 1 -#define FETCH(v) goto *(arg = GET_ARG, (v)[*ip]) +#define FETCH goto *(arg = GET_ARG, dispatch_vec[*ip]) +#define FETCH_VEC(v) goto *(arg = GET_ARG, (v)[*ip]) #define PREFETCH (ip += 2, prefetch = dispatch_vec[*ip]) -#define NEXT_BC goto *(arg = GET_ARG, prefetch) #define PREFETCH_VEC(v) (ip += 2, prefetch = (v)[*ip]) +#define NEXT_BC goto *(arg = GET_ARG, prefetch) #define NEXT_BC_VEC(v) goto *(arg = GET_ARG, prefetch) #define NEXT_BC_NO_ARG(v) goto *prefetch #define GET_ARG (ip[1]) #else -#define FETCH(v) goto *(arg = ip[1], (v)[*ip]) +#define FETCH NEXT_BC +#define FETCH_VEC(v) NEXT_BC_VEC(v) #define PREFETCH (ip += 2) -#define NEXT_BC goto *(arg = GET_ARG, dispatch_vec[*ip]) #define PREFETCH_VEC(v) (ip += 2) +#define NEXT_BC goto *(arg = GET_ARG, dispatch_vec[*ip]) #define NEXT_BC_VEC(v) goto *(arg = GET_ARG, (v)[*ip]) #define NEXT_BC_NO_ARG(v) goto *(v)[*ip] #define GET_ARG (ip[1]) #endif -#define DISPATCH(v) goto *(arg = GET_ARG, (v)[*ip]) +#define DISPATCH(v) goto *(arg = GET_ARG, (v)[*ip]) static void *monitored_byte_codes[256] = { &&monitor_byte_codes, &&monitor_byte_codes, &&monitor_byte_codes, &&monitor_byte_codes, /* 0 */ @@ -395,11 +396,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 403 "vm.inl" +#line 404 "vm.inl" } while (0); /* PLUS_SPECIAL ( op1 op2 -- op ) */ @@ -410,7 +411,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 229 "vm.def" +#line 232 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -441,9 +442,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 447 "vm.inl" +#line 448 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -462,11 +463,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 470 "vm.inl" +#line 471 "vm.inl" } while (0); /* MINUS_SPECIAL ( op1 op2 -- op ) */ @@ -477,7 +478,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 263 "vm.def" +#line 266 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -508,9 +509,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[MINUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 514 "vm.inl" +#line 515 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -529,11 +530,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 537 "vm.inl" +#line 538 "vm.inl" } while (0); /* LESS_THAN_SPECIAL ( op1 op2 -- op ) */ @@ -544,15 +545,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 297 "vm.def" +#line 300 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, <); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[LESS_THAN_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 556 "vm.inl" +#line 557 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -571,11 +572,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 579 "vm.inl" +#line 580 "vm.inl" } while (0); /* GREATER_THAN_SPECIAL ( op1 op2 -- op ) */ @@ -586,15 +587,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 306 "vm.def" +#line 309 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, >); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[GREATER_THAN_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 598 "vm.inl" +#line 599 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -613,11 +614,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 621 "vm.inl" +#line 622 "vm.inl" } while (0); /* LESS_EQUAL_SPECIAL ( op1 op2 -- op ) */ @@ -628,15 +629,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 315 "vm.def" +#line 318 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, <=); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[LESS_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 640 "vm.inl" +#line 641 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -655,11 +656,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 663 "vm.inl" +#line 664 "vm.inl" } while (0); /* GREATER_EQUAL_SPECIAL ( op1 op2 -- op ) */ @@ -670,15 +671,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 324 "vm.def" +#line 327 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, >=); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[GREATER_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 682 "vm.inl" +#line 683 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -697,11 +698,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 705 "vm.inl" +#line 706 "vm.inl" } while (0); /* EQUAL_SPECIAL ( op1 op2 -- op ) */ @@ -712,15 +713,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 333 "vm.def" +#line 336 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, ==); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 724 "vm.inl" +#line 725 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -739,11 +740,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 747 "vm.inl" +#line 748 "vm.inl" } while (0); /* NOT_EQUAL_SPECIAL ( op1 op2 -- op ) */ @@ -754,15 +755,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 342 "vm.def" +#line 345 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, !=); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[NOT_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 766 "vm.inl" +#line 767 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -781,11 +782,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 789 "vm.inl" +#line 790 "vm.inl" } while (0); /* TIMES_SPECIAL ( op1 op2 -- op ) */ @@ -796,15 +797,15 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 351 "vm.def" +#line 354 "vm.def" INTERP_BASIC_OP (op, op1, op2, iarg1 = mul_with_check (iarg1, iarg2), farg1 * farg2); PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[TIMES_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 808 "vm.inl" +#line 809 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -823,11 +824,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 831 "vm.inl" +#line 832 "vm.inl" } while (0); /* DIVIDE_SPECIAL ( op1 op2 -- op ) */ @@ -838,7 +839,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 360 "vm.def" +#line 363 "vm.def" if COMMON (!ARE_INTS (op1, op2) && (IS_INT (op1) || OOP_CLASS(op1) == _gst_floatd_class) && (IS_INT (op2) || OOP_CLASS(op2) == _gst_floatd_class)) @@ -859,9 +860,9 @@ SEND_MESSAGE (_gst_builtin_selectors[DIVIDE_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 865 "vm.inl" +#line 866 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -880,11 +881,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 888 "vm.inl" +#line 889 "vm.inl" } while (0); /* REMAINDER_SPECIAL ( op1 op2 -- op ) */ @@ -895,7 +896,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 384 "vm.def" +#line 387 "vm.def" PREPARE_STACK (); EXPORT_REGS(); if (IS_INT (op1) && IS_INT (op2) @@ -907,9 +908,9 @@ SEND_MESSAGE (_gst_builtin_selectors[REMAINDER_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 913 "vm.inl" +#line 914 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -928,11 +929,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 936 "vm.inl" +#line 937 "vm.inl" } while (0); /* BIT_XOR_SPECIAL ( op1 op2 -- op ) */ @@ -943,7 +944,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 399 "vm.def" +#line 402 "vm.def" if COMMON (ARE_INTS (op1, op2)) { op = FROM_INT (TO_INT (op1) ^ TO_INT (op2)); @@ -954,9 +955,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_XOR_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 960 "vm.inl" +#line 961 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -975,11 +976,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 983 "vm.inl" +#line 984 "vm.inl" } while (0); /* BIT_SHIFT_SPECIAL ( op1 op2 -- op ) */ @@ -990,7 +991,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 413 "vm.def" +#line 416 "vm.def" if COMMON (IS_INT (op2) && IS_INT (op1)) { intptr_t iarg1, iarg2; @@ -1020,9 +1021,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_SHIFT_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1026 "vm.inl" +#line 1027 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -1041,11 +1042,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1049 "vm.inl" +#line 1050 "vm.inl" } while (0); /* INTEGER_DIVIDE_SPECIAL ( op1 op2 | -- op1 op2 | ) */ @@ -1055,7 +1056,7 @@ } while (0) #define op1 _stack1 #define op2 _stack0 -#line 446 "vm.def" +#line 449 "vm.def" PREPARE_STACK (); EXPORT_REGS(); if (IS_INT (op1) && IS_INT (op2) @@ -1067,9 +1068,9 @@ SEND_MESSAGE (_gst_builtin_selectors[INTEGER_DIVIDE_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1073 "vm.inl" +#line 1074 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -1085,11 +1086,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1093 "vm.inl" +#line 1094 "vm.inl" } while (0); /* BIT_AND_SPECIAL ( op1 op2 -- op ) */ @@ -1100,7 +1101,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 461 "vm.def" +#line 464 "vm.def" if COMMON (ARE_INTS (op1, op2)) { op = FROM_INT (TO_INT (op1) & TO_INT (op2)); @@ -1111,9 +1112,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_AND_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1117 "vm.inl" +#line 1118 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -1132,11 +1133,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1140 "vm.inl" +#line 1141 "vm.inl" } while (0); /* BIT_OR_SPECIAL ( op1 op2 -- op ) */ @@ -1147,7 +1148,7 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 475 "vm.def" +#line 478 "vm.def" if COMMON (ARE_INTS (op1, op2)) { op = FROM_INT (TO_INT (op1) | TO_INT (op2)); @@ -1158,9 +1159,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_OR_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1164 "vm.inl" +#line 1165 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -1179,11 +1180,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1187 "vm.inl" +#line 1188 "vm.inl" } while (0); /* AT_SPECIAL ( rec idx -- val ) */ @@ -1194,7 +1195,7 @@ #define rec _stack1 #define idx _stack0 #define val _stack1 -#line 489 "vm.def" +#line 492 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -1202,7 +1203,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_cache_class == (classOOP = OOP_CLASS (rec)) @@ -1224,9 +1225,9 @@ at_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 1230 "vm.inl" +#line 1231 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -1246,11 +1247,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1254 "vm.inl" +#line 1255 "vm.inl" } while (0); /* AT_PUT_SPECIAL ( rec idx val -- res ) */ @@ -1262,7 +1263,7 @@ #define idx _stack1 #define val _stack0 #define res _stack2 -#line 522 "vm.def" +#line 525 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -1270,7 +1271,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_PUT_SPECIAL].symbol, 2); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_put_cache_class == (classOOP = OOP_CLASS (rec)) @@ -1292,9 +1293,9 @@ at_put_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 1298 "vm.inl" +#line 1299 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -1313,11 +1314,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1321 "vm.inl" +#line 1322 "vm.inl" } while (0); /* SIZE_SPECIAL ( rec -- val ) */ @@ -1327,7 +1328,7 @@ } while (0) #define rec _stack0 #define val _stack0 -#line 555 "vm.def" +#line 558 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -1335,7 +1336,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[SIZE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (size_cache_class == (classOOP = OOP_CLASS (rec)) @@ -1357,9 +1358,9 @@ size_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 1363 "vm.inl" +#line 1364 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -1375,11 +1376,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1383 "vm.inl" +#line 1384 "vm.inl" } while (0); /* CLASS_SPECIAL ( rec -- val ) */ @@ -1389,7 +1390,7 @@ } while (0) #define rec _stack0 #define val _stack0 -#line 588 "vm.def" +#line 591 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -1397,7 +1398,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[CLASS_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (class_cache_class == (classOOP = OOP_CLASS (rec)) @@ -1419,9 +1420,9 @@ class_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 1425 "vm.inl" +#line 1426 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -1437,11 +1438,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1445 "vm.inl" +#line 1446 "vm.inl" } while (0); /* IS_NIL_SPECIAL ( rec -- val ) */ @@ -1449,11 +1450,11 @@ { #define rec _stack0 #define val _stack0 -#line 621 "vm.def" +#line 624 "vm.def" /* DO_JUMP_LOOKAHEAD (rec == _gst_nil_oop); */ val = rec == _gst_nil_oop ? _gst_true_oop : _gst_false_oop; -#line 1457 "vm.inl" +#line 1458 "vm.inl" #undef rec #undef val } @@ -1468,11 +1469,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1476 "vm.inl" +#line 1477 "vm.inl" } while (0); /* NOT_NIL_SPECIAL ( rec -- val ) */ @@ -1480,11 +1481,11 @@ { #define rec _stack0 #define val _stack0 -#line 626 "vm.def" +#line 629 "vm.def" /* DO_JUMP_LOOKAHEAD (rec != _gst_nil_oop); */ val = rec != _gst_nil_oop ? _gst_true_oop : _gst_false_oop; -#line 1488 "vm.inl" +#line 1489 "vm.inl" #undef rec #undef val } @@ -1499,11 +1500,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1507 "vm.inl" +#line 1508 "vm.inl" } while (0); /* VALUE_SPECIAL ( rec | -- rec | ) */ @@ -1512,7 +1513,7 @@ #define PREPARE_STACK() do { \ } while (0) #define rec _stack0 -#line 631 "vm.def" +#line 634 "vm.def" PREPARE_STACK (); EXPORT_REGS (); if (UNCOMMON (IS_INT (rec)) @@ -1521,9 +1522,9 @@ SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1527 "vm.inl" +#line 1528 "vm.inl" #undef PREPARE_STACK #undef rec } @@ -1538,11 +1539,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1546 "vm.inl" +#line 1547 "vm.inl" } while (0); /* VALUE_COLON_SPECIAL ( rec blk_arg | -- rec blk_arg | ) */ @@ -1552,7 +1553,7 @@ } while (0) #define rec _stack1 #define blk_arg _stack0 -#line 643 "vm.def" +#line 646 "vm.def" PREPARE_STACK (); EXPORT_REGS (); if (UNCOMMON (IS_INT (rec)) @@ -1561,9 +1562,9 @@ SEND_MESSAGE (_gst_builtin_selectors[VALUE_COLON_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1567 "vm.inl" +#line 1568 "vm.inl" #undef PREPARE_STACK #undef rec #undef blk_arg @@ -1579,11 +1580,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1587 "vm.inl" +#line 1588 "vm.inl" } while (0); /* SAME_OBJECT_SPECIAL ( op1 op2 -- op ) */ @@ -1592,11 +1593,11 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 655 "vm.def" +#line 658 "vm.def" /* DO_JUMP_LOOKAHEAD (op1 == op2); */ op = (op1 == op2) ? _gst_true_oop : _gst_false_oop; -#line 1600 "vm.inl" +#line 1601 "vm.inl" #undef op1 #undef op2 #undef op @@ -1613,11 +1614,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1621 "vm.inl" +#line 1622 "vm.inl" } while (0); /* JAVA_AS_INT_SPECIAL ( rec -- val ) */ @@ -1627,7 +1628,7 @@ } while (0) #define rec _stack0 #define val _stack0 -#line 660 "vm.def" +#line 663 "vm.def" if COMMON (IS_INT (rec) || is_c_int_32 (rec)) { val = rec; @@ -1638,9 +1639,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[JAVA_AS_INT_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1644 "vm.inl" +#line 1645 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -1656,11 +1657,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1664 "vm.inl" +#line 1665 "vm.inl" } while (0); /* JAVA_AS_LONG_SPECIAL ( rec -- val ) */ @@ -1670,7 +1671,7 @@ } while (0) #define rec _stack0 #define val _stack0 -#line 674 "vm.def" +#line 677 "vm.def" if COMMON (IS_INT (rec) || is_c_int_64 (rec)) { val = rec; @@ -1681,9 +1682,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[JAVA_AS_LONG_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1687 "vm.inl" +#line 1688 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -1697,21 +1698,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1705 "vm.inl" +#line 1706 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 1715 "vm.inl" +#line 1716 "vm.inl" } while (0); } @@ -1721,11 +1722,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1729 "vm.inl" +#line 1730 "vm.inl" } while (0); /* SEND ( -- ) */ @@ -1735,14 +1736,14 @@ int n = arg & 255; #define PREPARE_STACK() do { \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1746 "vm.inl" +#line 1747 "vm.inl" #undef PREPARE_STACK } while (0); @@ -1753,11 +1754,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1761 "vm.inl" +#line 1762 "vm.inl" } while (0); /* SEND_SUPER ( -- ) */ @@ -1767,7 +1768,7 @@ int n = arg & 255; #define PREPARE_STACK() do { \ } while (0) -#line 696 "vm.def" +#line 699 "vm.def" OOP classOOP; PREPARE_STACK (); classOOP = POP_OOP (); @@ -1775,9 +1776,9 @@ EXPORT_REGS (); SEND_TO_SUPER (METHOD_LITERAL (sel), n, classOOP); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1781 "vm.inl" +#line 1782 "vm.inl" #undef PREPARE_STACK } while (0); @@ -1788,11 +1789,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1796 "vm.inl" +#line 1797 "vm.inl" } while (0); /* SEND_IMMEDIATE ( -- ) */ @@ -1801,15 +1802,15 @@ int n = arg; #define PREPARE_STACK() do { \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1813 "vm.inl" +#line 1814 "vm.inl" #undef PREPARE_STACK } while (0); @@ -1820,11 +1821,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1828 "vm.inl" +#line 1829 "vm.inl" } while (0); /* SEND_SUPER_IMMEDIATE ( -- ) */ @@ -1833,7 +1834,7 @@ int n = arg; #define PREPARE_STACK() do { \ } while (0) -#line 716 "vm.def" +#line 719 "vm.def" OOP classOOP; const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); @@ -1842,9 +1843,9 @@ EXPORT_REGS (); SEND_TO_SUPER (bs->symbol, bs->numArgs, classOOP); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 1848 "vm.inl" +#line 1849 "vm.inl" #undef PREPARE_STACK } while (0); @@ -1856,11 +1857,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1864 "vm.inl" +#line 1865 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -1868,10 +1869,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 1875 "vm.inl" +#line 1876 "vm.inl" #undef tos } while (0); @@ -1884,11 +1885,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1892 "vm.inl" +#line 1893 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -1897,7 +1898,7 @@ int n = arg >> 8; int scopes = arg & 255; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -1911,7 +1912,7 @@ tos = context->contextStack[n]; -#line 1915 "vm.inl" +#line 1916 "vm.inl" #undef tos } while (0); @@ -1924,11 +1925,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1932 "vm.inl" +#line 1933 "vm.inl" } while (0); /* PUSH_LIT_VARIABLE ( -- tos ) */ @@ -1938,7 +1939,7 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _extra1 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -1948,12 +1949,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 1957 "vm.inl" +#line 1958 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -1967,11 +1968,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 1975 "vm.inl" +#line 1976 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -1979,10 +1980,10 @@ { int n = arg; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 1986 "vm.inl" +#line 1987 "vm.inl" #undef tos } while (0); @@ -1996,11 +1997,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2004 "vm.inl" +#line 2005 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -2008,10 +2009,10 @@ { int n = arg; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 2015 "vm.inl" +#line 2016 "vm.inl" #undef tos } while (0); @@ -2024,11 +2025,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2032 "vm.inl" +#line 2033 "vm.inl" } while (0); /* STORE_OUTER_TEMP ( tos | -- tos | ) */ @@ -2037,7 +2038,7 @@ int n = arg >> 8; int scopes = arg & 255; #define tos _stack0 -#line 771 "vm.def" +#line 774 "vm.def" OOP contextOOP; gst_block_context context; @@ -2051,7 +2052,7 @@ context->contextStack[n] = tos; -#line 2055 "vm.inl" +#line 2056 "vm.inl" #undef tos } while (0); @@ -2064,11 +2065,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2072 "vm.inl" +#line 2073 "vm.inl" } while (0); /* STORE_LIT_VARIABLE ( tos | -- tos | ) */ @@ -2078,7 +2079,7 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _stack0 -#line 786 "vm.def" +#line 789 "vm.def" OOP var = METHOD_LITERAL (n), value = tos; if (UNCOMMON (IS_INT (var)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (var), _gst_association_class))) @@ -2089,12 +2090,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_COLON_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else SET_ASSOCIATION_VALUE (var, value); -#line 2098 "vm.inl" +#line 2099 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -2108,11 +2109,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2116 "vm.inl" +#line 2117 "vm.inl" } while (0); /* STORE_RECEIVER_VARIABLE ( tos | -- tos | ) */ @@ -2120,10 +2121,10 @@ { int n = arg; #define tos _stack0 -#line 803 "vm.def" +#line 806 "vm.def" STORE_RECEIVER_VARIABLE (n, tos); -#line 2127 "vm.inl" +#line 2128 "vm.inl" #undef tos } while (0); @@ -2134,22 +2135,26 @@ /* ADVANCE ( -- ) */ do { -#line 212 "vm.def" +#line 214 "vm.def" + ip += 2; LOCAL_COUNTER++; -#line 2141 "vm.inl" +#line 2143 "vm.inl" } while (0); /* JUMP_BACK ( -- ) */ do { int n = arg; -#line 807 "vm.def" - ip += 2; +#define PREPARE_STACK() do { \ + } while (0) +#line 810 "vm.def" + PREPARE_STACK (); ip -= n; - FETCH (dispatch_vec); + FETCH; -#line 2153 "vm.inl" +#line 2157 "vm.inl" +#undef PREPARE_STACK } while (0); } @@ -2159,22 +2164,26 @@ /* ADVANCE ( -- ) */ do { -#line 212 "vm.def" +#line 214 "vm.def" + ip += 2; LOCAL_COUNTER++; -#line 2166 "vm.inl" +#line 2172 "vm.inl" } while (0); /* JUMP ( -- ) */ do { int n = arg; -#line 813 "vm.def" - ip += 2; +#define PREPARE_STACK() do { \ + } while (0) +#line 816 "vm.def" + PREPARE_STACK (); ip += n; - FETCH (dispatch_vec); + FETCH; -#line 2178 "vm.inl" +#line 2186 "vm.inl" +#undef PREPARE_STACK } while (0); } @@ -2186,11 +2195,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2194 "vm.inl" +#line 2203 "vm.inl" } while (0); /* POP_JUMP_TRUE ( tos -- ) */ @@ -2200,13 +2209,13 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _stack0 -#line 838 "vm.def" +#line 841 "vm.def" if UNCOMMON (tos == _gst_true_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_false_oop) { @@ -2215,10 +2224,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 2222 "vm.inl" +#line 2231 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -2233,11 +2242,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2241 "vm.inl" +#line 2250 "vm.inl" } while (0); /* POP_JUMP_FALSE ( tos -- ) */ @@ -2247,13 +2256,13 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _stack0 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -2262,10 +2271,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 2269 "vm.inl" +#line 2278 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -2279,11 +2288,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2287 "vm.inl" +#line 2296 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -2291,10 +2300,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 2298 "vm.inl" +#line 2307 "vm.inl" #undef tos } while (0); @@ -2307,11 +2316,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2315 "vm.inl" +#line 2324 "vm.inl" } while (0); /* PUSH_SPECIAL ( -- tos ) */ @@ -2319,10 +2328,10 @@ { int n = arg; #define tos _extra1 -#line 861 "vm.def" +#line 864 "vm.def" tos = _gst_nil_oop + (n - NIL_INDEX); -#line 2326 "vm.inl" +#line 2335 "vm.inl" #undef tos } while (0); @@ -2335,11 +2344,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2343 "vm.inl" +#line 2352 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -2347,10 +2356,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 2354 "vm.inl" +#line 2363 "vm.inl" #undef tos } while (0); @@ -2365,11 +2374,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2373 "vm.inl" +#line 2382 "vm.inl" } while (0); /* POP_INTO_NEW_STACKTOP ( obj | val -- obj | ) */ @@ -2378,10 +2387,10 @@ int n = arg; #define obj _stack1 #define val _stack0 -#line 869 "vm.def" +#line 872 "vm.def" STORE_INSTANCE_VARIABLE (obj, n, val); -#line 2385 "vm.inl" +#line 2394 "vm.inl" #undef obj #undef val } @@ -2396,20 +2405,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2404 "vm.inl" +#line 2413 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 2413 "vm.inl" +#line 2422 "vm.inl" #undef tos } while (0); @@ -2423,11 +2432,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2431 "vm.inl" +#line 2440 "vm.inl" } while (0); /* MAKE_DIRTY_BLOCK ( block -- closure ) */ @@ -2435,12 +2444,12 @@ { #define block _stack0 #define closure _stack0 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 2444 "vm.inl" +#line 2453 "vm.inl" #undef block #undef closure } @@ -2455,30 +2464,32 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2463 "vm.inl" +#line 2472 "vm.inl" } while (0); /* RETURN_METHOD_STACK_TOP ( val | -- val | ) */ do { #define val _stack0 -#line 882 "vm.def" +#line 885 "vm.def" EXPORT_REGS (); if UNCOMMON (!unwind_method ()) { SEND_MESSAGE (_gst_bad_return_error_symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); } - IMPORT_REGS (); - SET_STACKTOP (val); - FETCH (dispatch_vec); + else + { + IMPORT_REGS (); + SET_STACKTOP (val); + } + FETCH; -#line 2482 "vm.inl" +#line 2493 "vm.inl" #undef val } while (0); @@ -2491,25 +2502,25 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2499 "vm.inl" +#line 2510 "vm.inl" } while (0); /* RETURN_CONTEXT_STACK_TOP ( val | -- val | ) */ do { #define val _stack0 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 2513 "vm.inl" +#line 2524 "vm.inl" #undef val } while (0); @@ -2523,11 +2534,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2531 "vm.inl" +#line 2542 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -2535,10 +2546,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 2542 "vm.inl" +#line 2553 "vm.inl" #undef tos #undef tos2 } @@ -2553,18 +2564,18 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2561 "vm.inl" +#line 2572 "vm.inl" } while (0); /* EXIT_INTERPRETER ( val | -- val | ) */ do { #define val _stack0 -#line 907 "vm.def" +#line 912 "vm.def" /* This fixes a very rare condition, but it can happen: GC can happen because send_message_internal allocates a context while the interpreter is checking last_primitive to fill @@ -2586,9 +2597,9 @@ if (processOOP == activeProcessOOP) SET_EXCEPT_FLAG (true); } - FETCH (dispatch_vec); + FETCH; -#line 2592 "vm.inl" +#line 2603 "vm.inl" #undef val } while (0); @@ -2599,19 +2610,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2607 "vm.inl" +#line 2618 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 2615 "vm.inl" +#line 2626 "vm.inl" } while (0); } @@ -2621,12 +2632,12 @@ /* EXT_BYTE ( -- ) */ do { -#line 219 "vm.def" +#line 222 "vm.def" PREFETCH_VEC (normal_byte_codes); arg = (arg << 8) | GET_ARG; NEXT_BC_NO_ARG (normal_byte_codes); -#line 2630 "vm.inl" +#line 2641 "vm.inl" } while (0); } @@ -2637,21 +2648,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2645 "vm.inl" +#line 2656 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 2655 "vm.inl" +#line 2666 "vm.inl" #undef tos } while (0); @@ -2663,21 +2674,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2671 "vm.inl" +#line 2682 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2681 "vm.inl" +#line 2692 "vm.inl" } while (0); } @@ -2687,21 +2698,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2695 "vm.inl" +#line 2706 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2705 "vm.inl" +#line 2716 "vm.inl" } while (0); } @@ -2711,21 +2722,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2719 "vm.inl" +#line 2730 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2729 "vm.inl" +#line 2740 "vm.inl" } while (0); } @@ -2735,21 +2746,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2743 "vm.inl" +#line 2754 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2753 "vm.inl" +#line 2764 "vm.inl" } while (0); } @@ -2759,21 +2770,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2767 "vm.inl" +#line 2778 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2777 "vm.inl" +#line 2788 "vm.inl" } while (0); } @@ -2783,21 +2794,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2791 "vm.inl" +#line 2802 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2801 "vm.inl" +#line 2812 "vm.inl" } while (0); } @@ -2807,21 +2818,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2815 "vm.inl" +#line 2826 "vm.inl" } while (0); /* INVALID ( -- ) */ do { int arg = arg; -#line 225 "vm.def" +#line 228 "vm.def" _gst_errorf ("Invalid bytecode %d(%d) found!", ip[-1], arg); -#line 2825 "vm.inl" +#line 2836 "vm.inl" } while (0); } @@ -2831,11 +2842,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2839 "vm.inl" +#line 2850 "vm.inl" } while (0); /* SEND ( -- ) */ @@ -2845,14 +2856,14 @@ int n = 1; #define PREPARE_STACK() do { \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 2856 "vm.inl" +#line 2867 "vm.inl" #undef PREPARE_STACK } while (0); @@ -2863,11 +2874,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2871 "vm.inl" +#line 2882 "vm.inl" } while (0); /* SEND ( -- ) */ @@ -2877,14 +2888,14 @@ int n = 0; #define PREPARE_STACK() do { \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 2888 "vm.inl" +#line 2899 "vm.inl" #undef PREPARE_STACK } while (0); @@ -2896,21 +2907,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2904 "vm.inl" +#line 2915 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 2914 "vm.inl" +#line 2925 "vm.inl" #undef tos } while (0); @@ -2918,14 +2929,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 2929 "vm.inl" +#line 2940 "vm.inl" #undef val } while (0); @@ -2938,29 +2949,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2946 "vm.inl" +#line 2957 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 2954 "vm.inl" +#line 2965 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 2964 "vm.inl" +#line 2975 "vm.inl" #undef tos } while (0); @@ -2974,28 +2985,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 2982 "vm.inl" +#line 2993 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 2990 "vm.inl" +#line 3001 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 2999 "vm.inl" +#line 3010 "vm.inl" #undef tos } while (0); @@ -3008,19 +3019,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3016 "vm.inl" +#line 3027 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 3024 "vm.inl" +#line 3035 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -3028,10 +3039,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3035 "vm.inl" +#line 3046 "vm.inl" #undef tos } while (0); @@ -3044,11 +3055,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3052 "vm.inl" +#line 3063 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -3056,10 +3067,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 3063 "vm.inl" +#line 3074 "vm.inl" #undef tos } while (0); @@ -3068,12 +3079,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 3077 "vm.inl" +#line 3088 "vm.inl" #undef block #undef closure } @@ -3086,11 +3097,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3094 "vm.inl" +#line 3105 "vm.inl" } while (0); /* SEND ( -- ) */ @@ -3100,14 +3111,14 @@ int n = 2; #define PREPARE_STACK() do { \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3111 "vm.inl" +#line 3122 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3121,20 +3132,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3129 "vm.inl" +#line 3140 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 3138 "vm.inl" +#line 3149 "vm.inl" #undef tos } while (0); @@ -3143,10 +3154,10 @@ { #define tos _stack1 #define tos2 _stack0 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 3150 "vm.inl" +#line 3161 "vm.inl" #undef tos #undef tos2 } @@ -3160,11 +3171,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3168 "vm.inl" +#line 3179 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -3172,10 +3183,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3179 "vm.inl" +#line 3190 "vm.inl" #undef tos } while (0); @@ -3186,15 +3197,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3198 "vm.inl" +#line 3209 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3207,21 +3218,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3215 "vm.inl" +#line 3226 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 3225 "vm.inl" +#line 3236 "vm.inl" #undef tos } while (0); @@ -3233,14 +3244,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3244 "vm.inl" +#line 3255 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3253,11 +3264,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3261 "vm.inl" +#line 3272 "vm.inl" } while (0); /* PUSH_SPECIAL ( -- tos ) */ @@ -3265,10 +3276,10 @@ { int n = arg; #define tos _extra1 -#line 861 "vm.def" +#line 864 "vm.def" tos = _gst_nil_oop + (n - NIL_INDEX); -#line 3272 "vm.inl" +#line 3283 "vm.inl" #undef tos } while (0); @@ -3276,14 +3287,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 3287 "vm.inl" +#line 3298 "vm.inl" #undef val } while (0); @@ -3296,21 +3307,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3304 "vm.inl" +#line 3315 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 3314 "vm.inl" +#line 3325 "vm.inl" #undef tos } while (0); @@ -3321,15 +3332,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3333 "vm.inl" +#line 3344 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3342,11 +3353,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3350 "vm.inl" +#line 3361 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -3355,7 +3366,7 @@ int n = arg; int scopes = 1; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -3369,7 +3380,7 @@ tos = context->contextStack[n]; -#line 3373 "vm.inl" +#line 3384 "vm.inl" #undef tos } while (0); @@ -3383,11 +3394,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3391 "vm.inl" +#line 3402 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -3395,10 +3406,10 @@ { int n = arg; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 3402 "vm.inl" +#line 3413 "vm.inl" #undef tos } while (0); @@ -3406,9 +3417,9 @@ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 3412 "vm.inl" +#line 3423 "vm.inl" #undef tos } while (0); @@ -3421,21 +3432,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3429 "vm.inl" +#line 3440 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 3439 "vm.inl" +#line 3450 "vm.inl" #undef tos } while (0); @@ -3444,10 +3455,10 @@ { int n = arg; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3451 "vm.inl" +#line 3462 "vm.inl" #undef tos } while (0); @@ -3463,11 +3474,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3471 "vm.inl" +#line 3482 "vm.inl" } while (0); /* STORE_RECEIVER_VARIABLE ( tos | -- tos | ) */ @@ -3475,10 +3486,10 @@ { int n = arg; #define tos _stack0 -#line 803 "vm.def" +#line 806 "vm.def" STORE_RECEIVER_VARIABLE (n, tos); -#line 3482 "vm.inl" +#line 3493 "vm.inl" #undef tos } while (0); @@ -3486,10 +3497,10 @@ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 3493 "vm.inl" +#line 3504 "vm.inl" #undef tos } while (0); @@ -3497,14 +3508,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 3508 "vm.inl" +#line 3519 "vm.inl" #undef val } while (0); @@ -3519,11 +3530,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3527 "vm.inl" +#line 3538 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -3531,10 +3542,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 3538 "vm.inl" +#line 3549 "vm.inl" #undef tos } while (0); @@ -3547,7 +3558,7 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 229 "vm.def" +#line 232 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -3578,9 +3589,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3584 "vm.inl" +#line 3595 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -3596,19 +3607,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3604 "vm.inl" +#line 3615 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 3612 "vm.inl" +#line 3623 "vm.inl" } while (0); /* PUSH_LIT_VARIABLE ( -- tos ) */ @@ -3618,7 +3629,7 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _extra1 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -3628,12 +3639,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 3637 "vm.inl" +#line 3648 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -3647,11 +3658,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3655 "vm.inl" +#line 3666 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -3659,10 +3670,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3666 "vm.inl" +#line 3677 "vm.inl" #undef tos } while (0); @@ -3671,10 +3682,10 @@ { int n = arg; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3678 "vm.inl" +#line 3689 "vm.inl" #undef tos } while (0); @@ -3688,11 +3699,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3696 "vm.inl" +#line 3707 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -3700,10 +3711,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3707 "vm.inl" +#line 3718 "vm.inl" #undef tos } while (0); @@ -3715,14 +3726,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3726 "vm.inl" +#line 3737 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3735,19 +3746,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3743 "vm.inl" +#line 3754 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 3751 "vm.inl" +#line 3762 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -3755,10 +3766,10 @@ { int n = 1; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3762 "vm.inl" +#line 3773 "vm.inl" #undef tos } while (0); @@ -3772,11 +3783,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3780 "vm.inl" +#line 3791 "vm.inl" } while (0); /* IS_NIL_SPECIAL ( rec -- val ) */ @@ -3784,11 +3795,11 @@ { #define rec _stack0 #define val _stack0 -#line 621 "vm.def" +#line 624 "vm.def" /* DO_JUMP_LOOKAHEAD (rec == _gst_nil_oop); */ val = rec == _gst_nil_oop ? _gst_true_oop : _gst_false_oop; -#line 3792 "vm.inl" +#line 3803 "vm.inl" #undef rec #undef val } @@ -3801,13 +3812,13 @@ STACK_AT (0) = _stack0; \ } while (0) #define tos _stack0 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -3816,10 +3827,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 3823 "vm.inl" +#line 3834 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -3835,11 +3846,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3843 "vm.inl" +#line 3854 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -3847,10 +3858,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 3854 "vm.inl" +#line 3865 "vm.inl" #undef tos } while (0); @@ -3863,15 +3874,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 333 "vm.def" +#line 336 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, ==); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3875 "vm.inl" +#line 3886 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -3886,11 +3897,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3894 "vm.inl" +#line 3905 "vm.inl" } while (0); /* SEND ( -- ) */ @@ -3900,14 +3911,14 @@ int n = 3; #define PREPARE_STACK() do { \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3911 "vm.inl" +#line 3922 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3919,11 +3930,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3927 "vm.inl" +#line 3938 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -3931,10 +3942,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 3938 "vm.inl" +#line 3949 "vm.inl" #undef tos } while (0); @@ -3946,14 +3957,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 3957 "vm.inl" +#line 3968 "vm.inl" #undef PREPARE_STACK } while (0); @@ -3966,29 +3977,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 3974 "vm.inl" +#line 3985 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 3982 "vm.inl" +#line 3993 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 3992 "vm.inl" +#line 4003 "vm.inl" #undef tos } while (0); @@ -4000,14 +4011,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4011 "vm.inl" +#line 4022 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4020,11 +4031,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4028 "vm.inl" +#line 4039 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -4032,10 +4043,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 4039 "vm.inl" +#line 4050 "vm.inl" #undef tos } while (0); @@ -4043,14 +4054,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 4054 "vm.inl" +#line 4065 "vm.inl" #undef val } while (0); @@ -4063,11 +4074,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4071 "vm.inl" +#line 4082 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -4075,10 +4086,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 4082 "vm.inl" +#line 4093 "vm.inl" #undef tos } while (0); @@ -4089,15 +4100,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4101 "vm.inl" +#line 4112 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4112,11 +4123,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4120 "vm.inl" +#line 4131 "vm.inl" } while (0); /* SAME_OBJECT_SPECIAL ( op1 op2 -- op ) */ @@ -4125,11 +4136,11 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 655 "vm.def" +#line 658 "vm.def" /* DO_JUMP_LOOKAHEAD (op1 == op2); */ op = (op1 == op2) ? _gst_true_oop : _gst_false_oop; -#line 4133 "vm.inl" +#line 4144 "vm.inl" #undef op1 #undef op2 #undef op @@ -4144,13 +4155,13 @@ POP_N_OOPS (1); \ } while (0) #define tos _stack1 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -4159,10 +4170,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 4166 "vm.inl" +#line 4177 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -4176,11 +4187,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4184 "vm.inl" +#line 4195 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -4188,10 +4199,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 4195 "vm.inl" +#line 4206 "vm.inl" #undef tos } while (0); @@ -4203,14 +4214,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4214 "vm.inl" +#line 4225 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4224,28 +4235,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4232 "vm.inl" +#line 4243 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 4240 "vm.inl" +#line 4251 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 4249 "vm.inl" +#line 4260 "vm.inl" #undef tos } while (0); @@ -4253,10 +4264,10 @@ do { #define tos _stack0 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 4260 "vm.inl" +#line 4271 "vm.inl" #undef tos } while (0); @@ -4271,20 +4282,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4279 "vm.inl" +#line 4290 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 4288 "vm.inl" +#line 4299 "vm.inl" #undef tos } while (0); @@ -4293,10 +4304,10 @@ { #define tos _stack1 #define tos2 _stack0 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 4300 "vm.inl" +#line 4311 "vm.inl" #undef tos #undef tos2 } @@ -4304,9 +4315,9 @@ /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 4310 "vm.inl" +#line 4321 "vm.inl" } while (0); STACK_AT (0) = _stack0; @@ -4318,11 +4329,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4326 "vm.inl" +#line 4337 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -4330,10 +4341,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 4337 "vm.inl" +#line 4348 "vm.inl" #undef tos } while (0); @@ -4345,14 +4356,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4356 "vm.inl" +#line 4367 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4365,11 +4376,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4373 "vm.inl" +#line 4384 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -4377,10 +4388,10 @@ { int n = 1; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 4384 "vm.inl" +#line 4395 "vm.inl" #undef tos } while (0); @@ -4391,15 +4402,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4403 "vm.inl" +#line 4414 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4414,11 +4425,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4422 "vm.inl" +#line 4433 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -4426,10 +4437,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 4433 "vm.inl" +#line 4444 "vm.inl" #undef tos } while (0); @@ -4442,15 +4453,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 333 "vm.def" +#line 336 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, ==); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4454 "vm.inl" +#line 4465 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -4468,11 +4479,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4476 "vm.inl" +#line 4487 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -4480,10 +4491,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 4487 "vm.inl" +#line 4498 "vm.inl" #undef tos } while (0); @@ -4496,7 +4507,7 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 263 "vm.def" +#line 266 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -4527,9 +4538,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[MINUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4533 "vm.inl" +#line 4544 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -4547,11 +4558,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4555 "vm.inl" +#line 4566 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -4559,10 +4570,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 4566 "vm.inl" +#line 4577 "vm.inl" #undef tos #undef tos2 } @@ -4575,13 +4586,13 @@ PUSH_OOP (_extra1); \ } while (0) #define tos _extra1 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -4590,10 +4601,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 4597 "vm.inl" +#line 4608 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -4607,29 +4618,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4615 "vm.inl" +#line 4626 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 4624 "vm.inl" +#line 4635 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 4633 "vm.inl" +#line 4644 "vm.inl" } while (0); POP_N_OOPS (1); @@ -4641,11 +4652,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4649 "vm.inl" +#line 4660 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -4653,10 +4664,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 4660 "vm.inl" +#line 4671 "vm.inl" #undef tos } while (0); @@ -4667,15 +4678,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4679 "vm.inl" +#line 4690 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4688,11 +4699,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4696 "vm.inl" +#line 4707 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -4700,10 +4711,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 4707 "vm.inl" +#line 4718 "vm.inl" #undef tos } while (0); @@ -4715,7 +4726,7 @@ } while (0) #define rec _extra1 #define val _extra1 -#line 555 "vm.def" +#line 558 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -4723,7 +4734,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[SIZE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (size_cache_class == (classOOP = OOP_CLASS (rec)) @@ -4745,9 +4756,9 @@ size_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 4751 "vm.inl" +#line 4762 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -4762,21 +4773,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4770 "vm.inl" +#line 4781 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 4780 "vm.inl" +#line 4791 "vm.inl" #undef tos } while (0); @@ -4788,14 +4799,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4799 "vm.inl" +#line 4810 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4808,19 +4819,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4816 "vm.inl" +#line 4827 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 4824 "vm.inl" +#line 4835 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -4828,10 +4839,10 @@ { int n = 2; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 4835 "vm.inl" +#line 4846 "vm.inl" #undef tos } while (0); @@ -4845,20 +4856,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4853 "vm.inl" +#line 4864 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 4862 "vm.inl" +#line 4873 "vm.inl" #undef tos } while (0); @@ -4869,15 +4880,15 @@ #define PREPARE_STACK() do { \ POP_N_OOPS (1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4881 "vm.inl" +#line 4892 "vm.inl" #undef PREPARE_STACK } while (0); @@ -4890,11 +4901,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4898 "vm.inl" +#line 4909 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -4902,10 +4913,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 4909 "vm.inl" +#line 4920 "vm.inl" #undef tos } while (0); @@ -4914,10 +4925,10 @@ { int n = 1; #define tos _extra2 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 4921 "vm.inl" +#line 4932 "vm.inl" #undef tos } while (0); @@ -4931,7 +4942,7 @@ #define op1 _extra1 #define op2 _extra2 #define op _extra1 -#line 229 "vm.def" +#line 232 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -4962,9 +4973,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 4968 "vm.inl" +#line 4979 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -4980,19 +4991,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 4988 "vm.inl" +#line 4999 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 4996 "vm.inl" +#line 5007 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -5000,10 +5011,10 @@ { int n = 0; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 5007 "vm.inl" +#line 5018 "vm.inl" #undef tos } while (0); @@ -5016,11 +5027,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5024 "vm.inl" +#line 5035 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -5028,10 +5039,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 5035 "vm.inl" +#line 5046 "vm.inl" #undef tos } while (0); @@ -5042,15 +5053,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 5054 "vm.inl" +#line 5065 "vm.inl" #undef PREPARE_STACK } while (0); @@ -5065,11 +5076,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5073 "vm.inl" +#line 5084 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -5077,10 +5088,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 5084 "vm.inl" +#line 5095 "vm.inl" #undef tos } while (0); @@ -5093,7 +5104,7 @@ #define rec _stack0 #define idx _extra1 #define val _stack0 -#line 489 "vm.def" +#line 492 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -5101,7 +5112,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_cache_class == (classOOP = OOP_CLASS (rec)) @@ -5123,9 +5134,9 @@ at_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 5129 "vm.inl" +#line 5140 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -5141,19 +5152,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5149 "vm.inl" +#line 5160 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 5157 "vm.inl" +#line 5168 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -5161,10 +5172,10 @@ { int n = 1; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 5168 "vm.inl" +#line 5179 "vm.inl" #undef tos } while (0); @@ -5177,11 +5188,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5185 "vm.inl" +#line 5196 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -5189,10 +5200,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5196 "vm.inl" +#line 5207 "vm.inl" #undef tos } while (0); @@ -5201,10 +5212,10 @@ { int n = arg; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 5208 "vm.inl" +#line 5219 "vm.inl" #undef tos } while (0); @@ -5220,11 +5231,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5228 "vm.inl" +#line 5239 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -5232,10 +5243,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 5239 "vm.inl" +#line 5250 "vm.inl" #undef tos #undef tos2 } @@ -5248,13 +5259,13 @@ PUSH_OOP (_extra1); \ } while (0) #define tos _extra1 -#line 838 "vm.def" +#line 841 "vm.def" if UNCOMMON (tos == _gst_true_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_false_oop) { @@ -5263,10 +5274,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 5270 "vm.inl" +#line 5281 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -5281,11 +5292,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5289 "vm.inl" +#line 5300 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -5293,10 +5304,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5300 "vm.inl" +#line 5311 "vm.inl" #undef tos } while (0); @@ -5309,7 +5320,7 @@ #define rec _stack0 #define idx _extra1 #define val _stack0 -#line 489 "vm.def" +#line 492 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -5317,7 +5328,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_cache_class == (classOOP = OOP_CLASS (rec)) @@ -5339,9 +5350,9 @@ at_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 5345 "vm.inl" +#line 5356 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -5357,11 +5368,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5365 "vm.inl" +#line 5376 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -5369,10 +5380,10 @@ { int n = 2; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5376 "vm.inl" +#line 5387 "vm.inl" #undef tos } while (0); @@ -5383,15 +5394,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 5395 "vm.inl" +#line 5406 "vm.inl" #undef PREPARE_STACK } while (0); @@ -5404,11 +5415,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5412 "vm.inl" +#line 5423 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -5416,10 +5427,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 5423 "vm.inl" +#line 5434 "vm.inl" #undef tos } while (0); @@ -5430,15 +5441,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 5442 "vm.inl" +#line 5453 "vm.inl" #undef PREPARE_STACK } while (0); @@ -5452,11 +5463,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5460 "vm.inl" +#line 5471 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -5464,28 +5475,28 @@ { int n = 1; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 5471 "vm.inl" +#line 5482 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 5480 "vm.inl" +#line 5491 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 5489 "vm.inl" +#line 5500 "vm.inl" #undef tos } while (0); @@ -5498,11 +5509,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5506 "vm.inl" +#line 5517 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -5510,10 +5521,10 @@ { int n = 1; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5517 "vm.inl" +#line 5528 "vm.inl" #undef tos } while (0); @@ -5525,14 +5536,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 5536 "vm.inl" +#line 5547 "vm.inl" #undef PREPARE_STACK } while (0); @@ -5546,11 +5557,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5554 "vm.inl" +#line 5565 "vm.inl" } while (0); /* STORE_RECEIVER_VARIABLE ( tos | -- tos | ) */ @@ -5558,10 +5569,10 @@ { int n = arg; #define tos _stack0 -#line 803 "vm.def" +#line 806 "vm.def" STORE_RECEIVER_VARIABLE (n, tos); -#line 5565 "vm.inl" +#line 5576 "vm.inl" #undef tos } while (0); @@ -5569,9 +5580,9 @@ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 5575 "vm.inl" +#line 5586 "vm.inl" #undef tos } while (0); @@ -5585,11 +5596,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5593 "vm.inl" +#line 5604 "vm.inl" } while (0); /* STORE_OUTER_TEMP ( tos | -- tos | ) */ @@ -5598,7 +5609,7 @@ int n = arg; int scopes = 1; #define tos _stack0 -#line 771 "vm.def" +#line 774 "vm.def" OOP contextOOP; gst_block_context context; @@ -5612,7 +5623,7 @@ context->contextStack[n] = tos; -#line 5616 "vm.inl" +#line 5627 "vm.inl" #undef tos } while (0); @@ -5624,11 +5635,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5632 "vm.inl" +#line 5643 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -5636,10 +5647,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 5643 "vm.inl" +#line 5654 "vm.inl" #undef tos } while (0); @@ -5650,15 +5661,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 5662 "vm.inl" +#line 5673 "vm.inl" #undef PREPARE_STACK } while (0); @@ -5672,20 +5683,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5680 "vm.inl" +#line 5691 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 5689 "vm.inl" +#line 5700 "vm.inl" #undef tos } while (0); @@ -5694,10 +5705,10 @@ { int n = arg; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5701 "vm.inl" +#line 5712 "vm.inl" #undef tos } while (0); @@ -5710,11 +5721,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5718 "vm.inl" +#line 5729 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -5722,10 +5733,10 @@ { int n = arg; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 5729 "vm.inl" +#line 5740 "vm.inl" #undef tos } while (0); @@ -5733,14 +5744,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 5744 "vm.inl" +#line 5755 "vm.inl" #undef val } while (0); @@ -5754,28 +5765,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5762 "vm.inl" +#line 5773 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 5770 "vm.inl" +#line 5781 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 5779 "vm.inl" +#line 5790 "vm.inl" #undef tos } while (0); @@ -5784,10 +5795,10 @@ { int n = 1; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5791 "vm.inl" +#line 5802 "vm.inl" #undef tos } while (0); @@ -5801,28 +5812,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5809 "vm.inl" +#line 5820 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 5817 "vm.inl" +#line 5828 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 5826 "vm.inl" +#line 5837 "vm.inl" #undef tos } while (0); @@ -5831,10 +5842,10 @@ { int n = 0; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 5838 "vm.inl" +#line 5849 "vm.inl" #undef tos } while (0); @@ -5847,29 +5858,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5855 "vm.inl" +#line 5866 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 5863 "vm.inl" +#line 5874 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 5873 "vm.inl" +#line 5884 "vm.inl" #undef tos } while (0); @@ -5878,10 +5889,10 @@ { int n = 0; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 5885 "vm.inl" +#line 5896 "vm.inl" #undef tos } while (0); @@ -5895,11 +5906,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5903 "vm.inl" +#line 5914 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -5907,10 +5918,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 5914 "vm.inl" +#line 5925 "vm.inl" #undef tos } while (0); @@ -5918,14 +5929,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 5929 "vm.inl" +#line 5940 "vm.inl" #undef val } while (0); @@ -5938,21 +5949,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 5946 "vm.inl" +#line 5957 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 5956 "vm.inl" +#line 5967 "vm.inl" #undef tos } while (0); @@ -5964,7 +5975,7 @@ } while (0) #define rec _extra1 #define val _extra1 -#line 555 "vm.def" +#line 558 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -5972,7 +5983,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[SIZE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (size_cache_class == (classOOP = OOP_CLASS (rec)) @@ -5994,9 +6005,9 @@ size_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 6000 "vm.inl" +#line 6011 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -6012,11 +6023,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6020 "vm.inl" +#line 6031 "vm.inl" } while (0); /* IS_NIL_SPECIAL ( rec -- val ) */ @@ -6024,11 +6035,11 @@ { #define rec _stack0 #define val _stack0 -#line 621 "vm.def" +#line 624 "vm.def" /* DO_JUMP_LOOKAHEAD (rec == _gst_nil_oop); */ val = rec == _gst_nil_oop ? _gst_true_oop : _gst_false_oop; -#line 6032 "vm.inl" +#line 6043 "vm.inl" #undef rec #undef val } @@ -6041,13 +6052,13 @@ STACK_AT (0) = _stack0; \ } while (0) #define tos _stack0 -#line 838 "vm.def" +#line 841 "vm.def" if UNCOMMON (tos == _gst_true_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_false_oop) { @@ -6056,10 +6067,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 6063 "vm.inl" +#line 6074 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -6076,11 +6087,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6084 "vm.inl" +#line 6095 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -6088,10 +6099,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 6095 "vm.inl" +#line 6106 "vm.inl" #undef tos } while (0); @@ -6105,7 +6116,7 @@ #define idx _stack0 #define val _extra1 #define res _stack1 -#line 522 "vm.def" +#line 525 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -6113,7 +6124,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_PUT_SPECIAL].symbol, 2); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_put_cache_class == (classOOP = OOP_CLASS (rec)) @@ -6135,9 +6146,9 @@ at_put_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 6141 "vm.inl" +#line 6152 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -6155,19 +6166,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6163 "vm.inl" +#line 6174 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 6171 "vm.inl" +#line 6182 "vm.inl" } while (0); /* PUSH_LIT_VARIABLE ( -- tos ) */ @@ -6177,7 +6188,7 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _extra1 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -6187,12 +6198,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 6196 "vm.inl" +#line 6207 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -6208,11 +6219,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6216 "vm.inl" +#line 6227 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -6220,10 +6231,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 6227 "vm.inl" +#line 6238 "vm.inl" #undef tos } while (0); @@ -6236,7 +6247,7 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 229 "vm.def" +#line 232 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -6267,9 +6278,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6273 "vm.inl" +#line 6284 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -6283,23 +6294,23 @@ { OOP _stack0; _stack0 = STACK_AT (0); - /* PREFETCH ( -- ) */ + /* ADVANCE ( -- ) */ do { -#line 207 "vm.def" - PREFETCH; +#line 214 "vm.def" + ip += 2; LOCAL_COUNTER++; -#line 6294 "vm.inl" +#line 6305 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 6303 "vm.inl" +#line 6314 "vm.inl" #undef tos } while (0); @@ -6307,12 +6318,16 @@ do { int n = arg; -#line 807 "vm.def" - ip += 2; +#define PREPARE_STACK() do { \ + POP_N_OOPS (1); \ + } while (0) +#line 810 "vm.def" + PREPARE_STACK (); ip -= n; - FETCH (dispatch_vec); + FETCH; -#line 6316 "vm.inl" +#line 6330 "vm.inl" +#undef PREPARE_STACK } while (0); POP_N_OOPS (1); @@ -6325,20 +6340,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6333 "vm.inl" +#line 6348 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 6342 "vm.inl" +#line 6357 "vm.inl" #undef tos } while (0); @@ -6350,7 +6365,7 @@ POP_N_OOPS (1); \ } while (0) #define tos _stack0 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -6360,12 +6375,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 6369 "vm.inl" +#line 6384 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -6379,11 +6394,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6387 "vm.inl" +#line 6402 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -6391,10 +6406,10 @@ { int n = 1; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 6398 "vm.inl" +#line 6413 "vm.inl" #undef tos } while (0); @@ -6403,10 +6418,10 @@ { int n = arg; #define tos _extra1 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 6410 "vm.inl" +#line 6425 "vm.inl" #undef tos } while (0); @@ -6419,11 +6434,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6427 "vm.inl" +#line 6442 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -6431,10 +6446,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 6438 "vm.inl" +#line 6453 "vm.inl" #undef tos } while (0); @@ -6446,14 +6461,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6457 "vm.inl" +#line 6472 "vm.inl" #undef PREPARE_STACK } while (0); @@ -6466,19 +6481,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6474 "vm.inl" +#line 6489 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 6482 "vm.inl" +#line 6497 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -6486,10 +6501,10 @@ { int n = 3; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 6493 "vm.inl" +#line 6508 "vm.inl" #undef tos } while (0); @@ -6502,19 +6517,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6510 "vm.inl" +#line 6525 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 6518 "vm.inl" +#line 6533 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -6523,7 +6538,7 @@ int n = 0; int scopes = 1; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -6537,7 +6552,7 @@ tos = context->contextStack[n]; -#line 6541 "vm.inl" +#line 6556 "vm.inl" #undef tos } while (0); @@ -6550,11 +6565,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6558 "vm.inl" +#line 6573 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -6562,10 +6577,10 @@ { int n = arg; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 6569 "vm.inl" +#line 6584 "vm.inl" #undef tos } while (0); @@ -6577,14 +6592,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6588 "vm.inl" +#line 6603 "vm.inl" #undef PREPARE_STACK } while (0); @@ -6599,11 +6614,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6607 "vm.inl" +#line 6622 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -6611,10 +6626,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 6618 "vm.inl" +#line 6633 "vm.inl" #undef tos } while (0); @@ -6627,15 +6642,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 306 "vm.def" +#line 309 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, >); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[GREATER_THAN_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6639 "vm.inl" +#line 6654 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -6651,11 +6666,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6659 "vm.inl" +#line 6674 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -6663,10 +6678,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 6670 "vm.inl" +#line 6685 "vm.inl" #undef tos } while (0); @@ -6677,7 +6692,7 @@ PUSH_OOP (_extra1); \ } while (0) #define rec _extra1 -#line 631 "vm.def" +#line 634 "vm.def" PREPARE_STACK (); EXPORT_REGS (); if (UNCOMMON (IS_INT (rec)) @@ -6686,9 +6701,9 @@ SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6692 "vm.inl" +#line 6707 "vm.inl" #undef PREPARE_STACK #undef rec } @@ -6704,11 +6719,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6712 "vm.inl" +#line 6727 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -6716,10 +6731,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 6723 "vm.inl" +#line 6738 "vm.inl" #undef tos } while (0); @@ -6732,7 +6747,7 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 263 "vm.def" +#line 266 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -6763,9 +6778,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[MINUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6769 "vm.inl" +#line 6784 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -6781,11 +6796,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6789 "vm.inl" +#line 6804 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -6793,10 +6808,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 6800 "vm.inl" +#line 6815 "vm.inl" #undef tos } while (0); @@ -6808,14 +6823,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 6819 "vm.inl" +#line 6834 "vm.inl" #undef PREPARE_STACK } while (0); @@ -6830,11 +6845,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6838 "vm.inl" +#line 6853 "vm.inl" } while (0); /* PUSH_SPECIAL ( -- tos ) */ @@ -6842,10 +6857,10 @@ { int n = 0; #define tos _extra1 -#line 861 "vm.def" +#line 864 "vm.def" tos = _gst_nil_oop + (n - NIL_INDEX); -#line 6849 "vm.inl" +#line 6864 "vm.inl" #undef tos } while (0); @@ -6855,11 +6870,11 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 655 "vm.def" +#line 658 "vm.def" /* DO_JUMP_LOOKAHEAD (op1 == op2); */ op = (op1 == op2) ? _gst_true_oop : _gst_false_oop; -#line 6863 "vm.inl" +#line 6878 "vm.inl" #undef op1 #undef op2 #undef op @@ -6873,13 +6888,13 @@ STACK_AT (0) = _stack0; \ } while (0) #define tos _stack0 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -6888,10 +6903,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 6895 "vm.inl" +#line 6910 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -6906,11 +6921,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6914 "vm.inl" +#line 6929 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -6918,28 +6933,28 @@ { int n = 2; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 6925 "vm.inl" +#line 6940 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 6934 "vm.inl" +#line 6949 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 6943 "vm.inl" +#line 6958 "vm.inl" #undef tos } while (0); @@ -6954,11 +6969,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 6962 "vm.inl" +#line 6977 "vm.inl" } while (0); /* SAME_OBJECT_SPECIAL ( op1 op2 -- op ) */ @@ -6967,11 +6982,11 @@ #define op1 _stack1 #define op2 _stack0 #define op _stack1 -#line 655 "vm.def" +#line 658 "vm.def" /* DO_JUMP_LOOKAHEAD (op1 == op2); */ op = (op1 == op2) ? _gst_true_oop : _gst_false_oop; -#line 6975 "vm.inl" +#line 6990 "vm.inl" #undef op1 #undef op2 #undef op @@ -6986,13 +7001,13 @@ POP_N_OOPS (1); \ } while (0) #define tos _stack1 -#line 838 "vm.def" +#line 841 "vm.def" if UNCOMMON (tos == _gst_true_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_false_oop) { @@ -7001,10 +7016,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 7008 "vm.inl" +#line 7023 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -7020,11 +7035,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7028 "vm.inl" +#line 7043 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -7032,10 +7047,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 7039 "vm.inl" +#line 7054 "vm.inl" #undef tos } while (0); @@ -7048,15 +7063,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 351 "vm.def" +#line 354 "vm.def" INTERP_BASIC_OP (op, op1, op2, iarg1 = mul_with_check (iarg1, iarg2), farg1 * farg2); PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[TIMES_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7060 "vm.inl" +#line 7075 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -7072,19 +7087,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7080 "vm.inl" +#line 7095 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7088 "vm.inl" +#line 7103 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -7092,10 +7107,10 @@ { int n = 2; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 7099 "vm.inl" +#line 7114 "vm.inl" #undef tos } while (0); @@ -7110,11 +7125,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7118 "vm.inl" +#line 7133 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -7122,10 +7137,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 7129 "vm.inl" +#line 7144 "vm.inl" #undef tos } while (0); @@ -7138,15 +7153,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 297 "vm.def" +#line 300 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, <); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[LESS_THAN_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7150 "vm.inl" +#line 7165 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -7165,11 +7180,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7173 "vm.inl" +#line 7188 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -7177,10 +7192,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 7184 "vm.inl" +#line 7199 "vm.inl" #undef tos } while (0); @@ -7194,7 +7209,7 @@ #define idx _stack0 #define val _extra1 #define res _stack1 -#line 522 "vm.def" +#line 525 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -7202,7 +7217,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_PUT_SPECIAL].symbol, 2); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_put_cache_class == (classOOP = OOP_CLASS (rec)) @@ -7224,9 +7239,9 @@ at_put_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 7230 "vm.inl" +#line 7245 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -7244,11 +7259,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7252 "vm.inl" +#line 7267 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -7257,7 +7272,7 @@ int n = arg; int scopes = 2; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -7271,7 +7286,7 @@ tos = context->contextStack[n]; -#line 7275 "vm.inl" +#line 7290 "vm.inl" #undef tos } while (0); @@ -7284,29 +7299,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7292 "vm.inl" +#line 7307 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7300 "vm.inl" +#line 7315 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 7310 "vm.inl" +#line 7325 "vm.inl" #undef tos } while (0); @@ -7315,10 +7330,10 @@ { int n = 0; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7322 "vm.inl" +#line 7337 "vm.inl" #undef tos } while (0); @@ -7331,14 +7346,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7342 "vm.inl" +#line 7357 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7352,21 +7367,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7360 "vm.inl" +#line 7375 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 7370 "vm.inl" +#line 7385 "vm.inl" #undef tos } while (0); @@ -7375,10 +7390,10 @@ { int n = 0; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7382 "vm.inl" +#line 7397 "vm.inl" #undef tos } while (0); @@ -7391,14 +7406,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7402 "vm.inl" +#line 7417 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7412,29 +7427,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7420 "vm.inl" +#line 7435 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7428 "vm.inl" +#line 7443 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 7438 "vm.inl" +#line 7453 "vm.inl" #undef tos } while (0); @@ -7445,15 +7460,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7457 "vm.inl" +#line 7472 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7466,11 +7481,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7474 "vm.inl" +#line 7489 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -7478,10 +7493,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7485 "vm.inl" +#line 7500 "vm.inl" #undef tos } while (0); @@ -7490,10 +7505,10 @@ { int n = 3; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7497 "vm.inl" +#line 7512 "vm.inl" #undef tos } while (0); @@ -7508,11 +7523,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7516 "vm.inl" +#line 7531 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -7520,19 +7535,19 @@ { int n = 1; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 7527 "vm.inl" +#line 7542 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7536 "vm.inl" +#line 7551 "vm.inl" } while (0); } @@ -7543,19 +7558,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7551 "vm.inl" +#line 7566 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7559 "vm.inl" +#line 7574 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -7563,10 +7578,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7570 "vm.inl" +#line 7585 "vm.inl" #undef tos } while (0); @@ -7578,14 +7593,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7589 "vm.inl" +#line 7604 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7600,11 +7615,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7608 "vm.inl" +#line 7623 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -7612,10 +7627,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 7619 "vm.inl" +#line 7634 "vm.inl" #undef tos } while (0); @@ -7628,7 +7643,7 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 461 "vm.def" +#line 464 "vm.def" if COMMON (ARE_INTS (op1, op2)) { op = FROM_INT (TO_INT (op1) & TO_INT (op2)); @@ -7639,9 +7654,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[BIT_AND_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7645 "vm.inl" +#line 7660 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -7657,11 +7672,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7665 "vm.inl" +#line 7680 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -7669,10 +7684,10 @@ { int n = 2; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7676 "vm.inl" +#line 7691 "vm.inl" #undef tos } while (0); @@ -7684,14 +7699,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7695 "vm.inl" +#line 7710 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7704,11 +7719,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7712 "vm.inl" +#line 7727 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -7716,10 +7731,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7723 "vm.inl" +#line 7738 "vm.inl" #undef tos } while (0); @@ -7728,10 +7743,10 @@ { int n = 1; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7735 "vm.inl" +#line 7750 "vm.inl" #undef tos } while (0); @@ -7744,14 +7759,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7755 "vm.inl" +#line 7770 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7765,29 +7780,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7773 "vm.inl" +#line 7788 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7781 "vm.inl" +#line 7796 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 7791 "vm.inl" +#line 7806 "vm.inl" #undef tos } while (0); @@ -7796,10 +7811,10 @@ { int n = 0; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7803 "vm.inl" +#line 7818 "vm.inl" #undef tos } while (0); @@ -7813,19 +7828,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7821 "vm.inl" +#line 7836 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7829 "vm.inl" +#line 7844 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -7833,10 +7848,10 @@ { int n = 3; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 7840 "vm.inl" +#line 7855 "vm.inl" #undef tos } while (0); @@ -7849,11 +7864,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7857 "vm.inl" +#line 7872 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -7861,10 +7876,10 @@ { int n = 2; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 7868 "vm.inl" +#line 7883 "vm.inl" #undef tos } while (0); @@ -7876,14 +7891,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 7887 "vm.inl" +#line 7902 "vm.inl" #undef PREPARE_STACK } while (0); @@ -7897,11 +7912,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7905 "vm.inl" +#line 7920 "vm.inl" } while (0); /* NOT_NIL_SPECIAL ( rec -- val ) */ @@ -7909,11 +7924,11 @@ { #define rec _stack0 #define val _stack0 -#line 626 "vm.def" +#line 629 "vm.def" /* DO_JUMP_LOOKAHEAD (rec != _gst_nil_oop); */ val = rec != _gst_nil_oop ? _gst_true_oop : _gst_false_oop; -#line 7917 "vm.inl" +#line 7932 "vm.inl" #undef rec #undef val } @@ -7926,13 +7941,13 @@ STACK_AT (0) = _stack0; \ } while (0) #define tos _stack0 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -7941,10 +7956,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 7948 "vm.inl" +#line 7963 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -7959,11 +7974,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 7967 "vm.inl" +#line 7982 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -7971,19 +7986,19 @@ { int n = 2; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 7978 "vm.inl" +#line 7993 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 7987 "vm.inl" +#line 8002 "vm.inl" } while (0); } @@ -7995,11 +8010,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8003 "vm.inl" +#line 8018 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -8007,28 +8022,28 @@ { int n = 3; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 8014 "vm.inl" +#line 8029 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8023 "vm.inl" +#line 8038 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 8032 "vm.inl" +#line 8047 "vm.inl" #undef tos } while (0); @@ -8041,11 +8056,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8049 "vm.inl" +#line 8064 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -8053,10 +8068,10 @@ { int n = 1; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 8060 "vm.inl" +#line 8075 "vm.inl" #undef tos } while (0); @@ -8067,15 +8082,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8079 "vm.inl" +#line 8094 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8090,11 +8105,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8098 "vm.inl" +#line 8113 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -8102,10 +8117,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 8109 "vm.inl" +#line 8124 "vm.inl" #undef tos } while (0); @@ -8118,15 +8133,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 333 "vm.def" +#line 336 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, ==); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8130 "vm.inl" +#line 8145 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -8145,20 +8160,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8153 "vm.inl" +#line 8168 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 8162 "vm.inl" +#line 8177 "vm.inl" #undef tos } while (0); @@ -8167,10 +8182,10 @@ { #define tos _stack1 #define tos2 _stack0 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 8174 "vm.inl" +#line 8189 "vm.inl" #undef tos #undef tos2 } @@ -8180,10 +8195,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 8187 "vm.inl" +#line 8202 "vm.inl" #undef tos } while (0); @@ -8192,10 +8207,10 @@ { int n = 1; #define tos _extra2 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 8199 "vm.inl" +#line 8214 "vm.inl" #undef tos } while (0); @@ -8210,7 +8225,7 @@ #define op1 _extra1 #define op2 _extra2 #define op _extra1 -#line 229 "vm.def" +#line 232 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -8241,9 +8256,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8247 "vm.inl" +#line 8262 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -8260,21 +8275,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8268 "vm.inl" +#line 8283 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 8278 "vm.inl" +#line 8293 "vm.inl" #undef tos } while (0); @@ -8286,14 +8301,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8297 "vm.inl" +#line 8312 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8307,11 +8322,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8315 "vm.inl" +#line 8330 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -8319,28 +8334,28 @@ { int n = 0; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 8326 "vm.inl" +#line 8341 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8335 "vm.inl" +#line 8350 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 8344 "vm.inl" +#line 8359 "vm.inl" #undef tos } while (0); @@ -8355,11 +8370,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8363 "vm.inl" +#line 8378 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -8367,10 +8382,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 8374 "vm.inl" +#line 8389 "vm.inl" #undef tos #undef tos2 } @@ -8378,9 +8393,9 @@ /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8384 "vm.inl" +#line 8399 "vm.inl" } while (0); PUSH_OOP (_extra1); @@ -8392,21 +8407,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8400 "vm.inl" +#line 8415 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 8410 "vm.inl" +#line 8425 "vm.inl" #undef tos } while (0); @@ -8415,10 +8430,10 @@ { int n = arg; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 8422 "vm.inl" +#line 8437 "vm.inl" #undef tos } while (0); @@ -8430,15 +8445,15 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8442 "vm.inl" +#line 8457 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8453,20 +8468,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8461 "vm.inl" +#line 8476 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 8470 "vm.inl" +#line 8485 "vm.inl" #undef tos } while (0); @@ -8475,10 +8490,10 @@ { int n = arg; #define tos _stack0 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 8482 "vm.inl" +#line 8497 "vm.inl" #undef tos } while (0); @@ -8491,29 +8506,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8499 "vm.inl" +#line 8514 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8507 "vm.inl" +#line 8522 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 8517 "vm.inl" +#line 8532 "vm.inl" #undef tos } while (0); @@ -8524,15 +8539,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8536 "vm.inl" +#line 8551 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8545,19 +8560,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8553 "vm.inl" +#line 8568 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8561 "vm.inl" +#line 8576 "vm.inl" } while (0); /* PUSH_LIT_VARIABLE ( -- tos ) */ @@ -8567,7 +8582,7 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _extra1 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -8577,12 +8592,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 8586 "vm.inl" +#line 8601 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -8596,11 +8611,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8604 "vm.inl" +#line 8619 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -8608,10 +8623,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 8615 "vm.inl" +#line 8630 "vm.inl" #undef tos } while (0); @@ -8620,12 +8635,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 8629 "vm.inl" +#line 8644 "vm.inl" #undef block #undef closure } @@ -8638,14 +8653,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8649 "vm.inl" +#line 8664 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8658,19 +8673,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8666 "vm.inl" +#line 8681 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8674 "vm.inl" +#line 8689 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -8678,10 +8693,10 @@ { int n = 0; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 8685 "vm.inl" +#line 8700 "vm.inl" #undef tos } while (0); @@ -8696,11 +8711,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8704 "vm.inl" +#line 8719 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -8708,10 +8723,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 8715 "vm.inl" +#line 8730 "vm.inl" #undef tos #undef tos2 } @@ -8721,10 +8736,10 @@ { int n = arg; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 8728 "vm.inl" +#line 8743 "vm.inl" #undef tos } while (0); @@ -8736,15 +8751,15 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8748 "vm.inl" +#line 8763 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8758,19 +8773,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8766 "vm.inl" +#line 8781 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8774 "vm.inl" +#line 8789 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -8779,7 +8794,7 @@ int n = 1; int scopes = 1; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -8793,7 +8808,7 @@ tos = context->contextStack[n]; -#line 8797 "vm.inl" +#line 8812 "vm.inl" #undef tos } while (0); @@ -8808,11 +8823,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8816 "vm.inl" +#line 8831 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -8820,10 +8835,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 8827 "vm.inl" +#line 8842 "vm.inl" #undef tos } while (0); @@ -8835,7 +8850,7 @@ } while (0) #define op1 _stack0 #define op2 _extra1 -#line 446 "vm.def" +#line 449 "vm.def" PREPARE_STACK (); EXPORT_REGS(); if (IS_INT (op1) && IS_INT (op2) @@ -8847,9 +8862,9 @@ SEND_MESSAGE (_gst_builtin_selectors[INTEGER_DIVIDE_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8853 "vm.inl" +#line 8868 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -8864,11 +8879,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8872 "vm.inl" +#line 8887 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -8876,10 +8891,10 @@ { int n = 1; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 8883 "vm.inl" +#line 8898 "vm.inl" #undef tos } while (0); @@ -8888,12 +8903,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 8897 "vm.inl" +#line 8912 "vm.inl" #undef block #undef closure } @@ -8905,15 +8920,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8917 "vm.inl" +#line 8932 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8926,11 +8941,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8934 "vm.inl" +#line 8949 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -8938,10 +8953,10 @@ { int n = 3; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 8945 "vm.inl" +#line 8960 "vm.inl" #undef tos } while (0); @@ -8952,15 +8967,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 8964 "vm.inl" +#line 8979 "vm.inl" #undef PREPARE_STACK } while (0); @@ -8973,19 +8988,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 8981 "vm.inl" +#line 8996 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 8989 "vm.inl" +#line 9004 "vm.inl" } while (0); /* PUSH_SPECIAL ( -- tos ) */ @@ -8993,10 +9008,10 @@ { int n = 0; #define tos _extra1 -#line 861 "vm.def" +#line 864 "vm.def" tos = _gst_nil_oop + (n - NIL_INDEX); -#line 9000 "vm.inl" +#line 9015 "vm.inl" #undef tos } while (0); @@ -9004,14 +9019,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 9015 "vm.inl" +#line 9030 "vm.inl" #undef val } while (0); @@ -9024,19 +9039,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9032 "vm.inl" +#line 9047 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 9040 "vm.inl" +#line 9055 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -9044,10 +9059,10 @@ { int n = 5; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 9051 "vm.inl" +#line 9066 "vm.inl" #undef tos } while (0); @@ -9060,11 +9075,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9068 "vm.inl" +#line 9083 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -9072,10 +9087,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 9079 "vm.inl" +#line 9094 "vm.inl" #undef tos } while (0); @@ -9084,12 +9099,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 9093 "vm.inl" +#line 9108 "vm.inl" #undef block #undef closure } @@ -9102,14 +9117,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9113 "vm.inl" +#line 9128 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9124,11 +9139,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9132 "vm.inl" +#line 9147 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -9136,10 +9151,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9143 "vm.inl" +#line 9158 "vm.inl" #undef tos } while (0); @@ -9151,7 +9166,7 @@ } while (0) #define rec _stack0 #define blk_arg _extra1 -#line 643 "vm.def" +#line 646 "vm.def" PREPARE_STACK (); EXPORT_REGS (); if (UNCOMMON (IS_INT (rec)) @@ -9160,9 +9175,9 @@ SEND_MESSAGE (_gst_builtin_selectors[VALUE_COLON_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9166 "vm.inl" +#line 9181 "vm.inl" #undef PREPARE_STACK #undef rec #undef blk_arg @@ -9177,11 +9192,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9185 "vm.inl" +#line 9200 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -9189,10 +9204,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 9196 "vm.inl" +#line 9211 "vm.inl" #undef tos } while (0); @@ -9200,14 +9215,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 9211 "vm.inl" +#line 9226 "vm.inl" #undef val } while (0); @@ -9220,11 +9235,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9228 "vm.inl" +#line 9243 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -9232,10 +9247,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9239 "vm.inl" +#line 9254 "vm.inl" #undef tos } while (0); @@ -9247,14 +9262,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9258 "vm.inl" +#line 9273 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9267,11 +9282,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9275 "vm.inl" +#line 9290 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -9279,10 +9294,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9286 "vm.inl" +#line 9301 "vm.inl" #undef tos } while (0); @@ -9291,10 +9306,10 @@ { int n = 1; #define tos _extra2 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 9298 "vm.inl" +#line 9313 "vm.inl" #undef tos } while (0); @@ -9308,7 +9323,7 @@ #define op1 _extra1 #define op2 _extra2 #define op _extra1 -#line 263 "vm.def" +#line 266 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -9339,9 +9354,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[MINUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9345 "vm.inl" +#line 9360 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -9357,21 +9372,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9365 "vm.inl" +#line 9380 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 9375 "vm.inl" +#line 9390 "vm.inl" #undef tos } while (0); @@ -9380,10 +9395,10 @@ { int n = arg; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 9387 "vm.inl" +#line 9402 "vm.inl" #undef tos } while (0); @@ -9397,19 +9412,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9405 "vm.inl" +#line 9420 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 9413 "vm.inl" +#line 9428 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -9417,10 +9432,10 @@ { int n = 4; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 9424 "vm.inl" +#line 9439 "vm.inl" #undef tos } while (0); @@ -9433,11 +9448,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9441 "vm.inl" +#line 9456 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -9446,7 +9461,7 @@ int n = 0; int scopes = 1; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -9460,7 +9475,7 @@ tos = context->contextStack[n]; -#line 9464 "vm.inl" +#line 9479 "vm.inl" #undef tos } while (0); @@ -9471,15 +9486,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9483 "vm.inl" +#line 9498 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9492,29 +9507,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9500 "vm.inl" +#line 9515 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 9508 "vm.inl" +#line 9523 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 9518 "vm.inl" +#line 9533 "vm.inl" #undef tos } while (0); @@ -9526,14 +9541,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9537 "vm.inl" +#line 9552 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9546,11 +9561,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9554 "vm.inl" +#line 9569 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -9559,7 +9574,7 @@ int n = 0; int scopes = 1; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -9573,7 +9588,7 @@ tos = context->contextStack[n]; -#line 9577 "vm.inl" +#line 9592 "vm.inl" #undef tos } while (0); @@ -9585,14 +9600,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9596 "vm.inl" +#line 9611 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9605,11 +9620,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9613 "vm.inl" +#line 9628 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -9617,10 +9632,10 @@ { int n = 4; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9624 "vm.inl" +#line 9639 "vm.inl" #undef tos } while (0); @@ -9631,15 +9646,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9643 "vm.inl" +#line 9658 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9652,11 +9667,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9660 "vm.inl" +#line 9675 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -9664,10 +9679,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 9671 "vm.inl" +#line 9686 "vm.inl" #undef tos } while (0); @@ -9678,15 +9693,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9690 "vm.inl" +#line 9705 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9698,11 +9713,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9706 "vm.inl" +#line 9721 "vm.inl" } while (0); /* SEND ( -- ) */ @@ -9712,14 +9727,14 @@ int n = 4; #define PREPARE_STACK() do { \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9723 "vm.inl" +#line 9738 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9731,11 +9746,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9739 "vm.inl" +#line 9754 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -9743,10 +9758,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9750 "vm.inl" +#line 9765 "vm.inl" #undef tos } while (0); @@ -9755,10 +9770,10 @@ { int n = 2; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9762 "vm.inl" +#line 9777 "vm.inl" #undef tos } while (0); @@ -9772,21 +9787,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9780 "vm.inl" +#line 9795 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 9790 "vm.inl" +#line 9805 "vm.inl" #undef tos } while (0); @@ -9798,7 +9813,7 @@ } while (0) #define rec _extra1 #define val _extra1 -#line 588 "vm.def" +#line 591 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -9806,7 +9821,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[CLASS_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (class_cache_class == (classOOP = OOP_CLASS (rec)) @@ -9828,9 +9843,9 @@ class_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 9834 "vm.inl" +#line 9849 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -9845,11 +9860,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9853 "vm.inl" +#line 9868 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -9857,10 +9872,10 @@ { int n = 1; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9864 "vm.inl" +#line 9879 "vm.inl" #undef tos } while (0); @@ -9872,14 +9887,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9883 "vm.inl" +#line 9898 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9892,21 +9907,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9900 "vm.inl" +#line 9915 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 9910 "vm.inl" +#line 9925 "vm.inl" #undef tos } while (0); @@ -9915,10 +9930,10 @@ { int n = 1; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 9922 "vm.inl" +#line 9937 "vm.inl" #undef tos } while (0); @@ -9931,14 +9946,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9942 "vm.inl" +#line 9957 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9952,11 +9967,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 9960 "vm.inl" +#line 9975 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -9964,10 +9979,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 9971 "vm.inl" +#line 9986 "vm.inl" #undef tos } while (0); @@ -9979,14 +9994,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 9990 "vm.inl" +#line 10005 "vm.inl" #undef PREPARE_STACK } while (0); @@ -9999,11 +10014,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10007 "vm.inl" +#line 10022 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -10011,10 +10026,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 10018 "vm.inl" +#line 10033 "vm.inl" #undef tos } while (0); @@ -10026,14 +10041,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10037 "vm.inl" +#line 10052 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10046,11 +10061,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10054 "vm.inl" +#line 10069 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -10058,10 +10073,10 @@ { int n = arg; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 10065 "vm.inl" +#line 10080 "vm.inl" #undef tos } while (0); @@ -10073,7 +10088,7 @@ } while (0) #define rec _extra1 #define val _extra1 -#line 555 "vm.def" +#line 558 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -10081,7 +10096,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[SIZE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (size_cache_class == (classOOP = OOP_CLASS (rec)) @@ -10103,9 +10118,9 @@ size_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 10109 "vm.inl" +#line 10124 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -10120,11 +10135,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10128 "vm.inl" +#line 10143 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -10132,10 +10147,10 @@ { int n = 1; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 10139 "vm.inl" +#line 10154 "vm.inl" #undef tos } while (0); @@ -10147,14 +10162,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10158 "vm.inl" +#line 10173 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10167,11 +10182,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10175 "vm.inl" +#line 10190 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -10179,10 +10194,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 10186 "vm.inl" +#line 10201 "vm.inl" #undef tos } while (0); @@ -10191,10 +10206,10 @@ { int n = 1; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 10198 "vm.inl" +#line 10213 "vm.inl" #undef tos } while (0); @@ -10207,14 +10222,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10218 "vm.inl" +#line 10233 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10230,11 +10245,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10238 "vm.inl" +#line 10253 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -10242,10 +10257,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 10249 "vm.inl" +#line 10264 "vm.inl" #undef tos } while (0); @@ -10255,10 +10270,10 @@ int n = 0; #define obj _stack0 #define val _extra1 -#line 869 "vm.def" +#line 872 "vm.def" STORE_INSTANCE_VARIABLE (obj, n, val); -#line 10262 "vm.inl" +#line 10277 "vm.inl" #undef obj #undef val } @@ -10271,11 +10286,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10279 "vm.inl" +#line 10294 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -10283,10 +10298,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 10290 "vm.inl" +#line 10305 "vm.inl" #undef tos } while (0); @@ -10295,12 +10310,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 10304 "vm.inl" +#line 10319 "vm.inl" #undef block #undef closure } @@ -10313,14 +10328,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10324 "vm.inl" +#line 10339 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10332,11 +10347,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10340 "vm.inl" +#line 10355 "vm.inl" } while (0); /* SEND_SUPER ( -- ) */ @@ -10346,7 +10361,7 @@ int n = 1; #define PREPARE_STACK() do { \ } while (0) -#line 696 "vm.def" +#line 699 "vm.def" OOP classOOP; PREPARE_STACK (); classOOP = POP_OOP (); @@ -10354,9 +10369,9 @@ EXPORT_REGS (); SEND_TO_SUPER (METHOD_LITERAL (sel), n, classOOP); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10360 "vm.inl" +#line 10375 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10368,11 +10383,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10376 "vm.inl" +#line 10391 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -10380,10 +10395,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 10387 "vm.inl" +#line 10402 "vm.inl" #undef tos } while (0); @@ -10392,12 +10407,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 10401 "vm.inl" +#line 10416 "vm.inl" #undef block #undef closure } @@ -10410,14 +10425,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10421 "vm.inl" +#line 10436 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10430,11 +10445,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10438 "vm.inl" +#line 10453 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -10442,10 +10457,10 @@ { int n = 1; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 10449 "vm.inl" +#line 10464 "vm.inl" #undef tos } while (0); @@ -10456,15 +10471,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10468 "vm.inl" +#line 10483 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10478,11 +10493,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10486 "vm.inl" +#line 10501 "vm.inl" } while (0); /* STORE_OUTER_TEMP ( tos | -- tos | ) */ @@ -10491,7 +10506,7 @@ int n = arg; int scopes = 1; #define tos _stack0 -#line 771 "vm.def" +#line 774 "vm.def" OOP contextOOP; gst_block_context context; @@ -10505,7 +10520,7 @@ context->contextStack[n] = tos; -#line 10509 "vm.inl" +#line 10524 "vm.inl" #undef tos } while (0); @@ -10513,14 +10528,14 @@ do { #define val _stack0 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 10524 "vm.inl" +#line 10539 "vm.inl" #undef val } while (0); @@ -10533,29 +10548,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10541 "vm.inl" +#line 10556 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 10550 "vm.inl" +#line 10565 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 10559 "vm.inl" +#line 10574 "vm.inl" } while (0); /* SEND_IMMEDIATE ( -- ) */ @@ -10565,15 +10580,15 @@ #define PREPARE_STACK() do { \ POP_N_OOPS (1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10577 "vm.inl" +#line 10592 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10586,29 +10601,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10594 "vm.inl" +#line 10609 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 10602 "vm.inl" +#line 10617 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 10612 "vm.inl" +#line 10627 "vm.inl" #undef tos } while (0); @@ -10620,7 +10635,7 @@ } while (0) #define rec _extra1 #define val _extra1 -#line 588 "vm.def" +#line 591 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -10628,7 +10643,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[CLASS_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (class_cache_class == (classOOP = OOP_CLASS (rec)) @@ -10650,9 +10665,9 @@ class_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 10656 "vm.inl" +#line 10671 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -10667,11 +10682,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10675 "vm.inl" +#line 10690 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -10679,10 +10694,10 @@ { int n = 1; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 10686 "vm.inl" +#line 10701 "vm.inl" #undef tos } while (0); @@ -10694,14 +10709,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10705 "vm.inl" +#line 10720 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10714,29 +10729,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10722 "vm.inl" +#line 10737 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 10730 "vm.inl" +#line 10745 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 10740 "vm.inl" +#line 10755 "vm.inl" #undef tos } while (0); @@ -10747,15 +10762,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10759 "vm.inl" +#line 10774 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10768,11 +10783,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10776 "vm.inl" +#line 10791 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -10780,10 +10795,10 @@ { int n = 0; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 10787 "vm.inl" +#line 10802 "vm.inl" #undef tos } while (0); @@ -10794,15 +10809,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10806 "vm.inl" +#line 10821 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10815,11 +10830,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10823 "vm.inl" +#line 10838 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -10827,10 +10842,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 10834 "vm.inl" +#line 10849 "vm.inl" #undef tos } while (0); @@ -10842,7 +10857,7 @@ PUSH_OOP (_extra1); \ } while (0) #define tos _extra2 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -10852,12 +10867,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 10861 "vm.inl" +#line 10876 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -10873,11 +10888,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10881 "vm.inl" +#line 10896 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -10885,19 +10900,19 @@ { int n = 0; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 10892 "vm.inl" +#line 10907 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 10901 "vm.inl" +#line 10916 "vm.inl" } while (0); } @@ -10908,11 +10923,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10916 "vm.inl" +#line 10931 "vm.inl" } while (0); /* PUSH_RECEIVER_VARIABLE ( -- tos ) */ @@ -10920,10 +10935,10 @@ { int n = 2; #define tos _extra1 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 10927 "vm.inl" +#line 10942 "vm.inl" #undef tos } while (0); @@ -10934,15 +10949,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 10946 "vm.inl" +#line 10961 "vm.inl" #undef PREPARE_STACK } while (0); @@ -10955,29 +10970,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 10963 "vm.inl" +#line 10978 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 10971 "vm.inl" +#line 10986 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 10981 "vm.inl" +#line 10996 "vm.inl" #undef tos } while (0); @@ -10989,14 +11004,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11000 "vm.inl" +#line 11015 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11010,28 +11025,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11018 "vm.inl" +#line 11033 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 11026 "vm.inl" +#line 11041 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 11035 "vm.inl" +#line 11050 "vm.inl" #undef tos } while (0); @@ -11040,10 +11055,10 @@ { int n = 2; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 11047 "vm.inl" +#line 11062 "vm.inl" #undef tos } while (0); @@ -11056,11 +11071,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11064 "vm.inl" +#line 11079 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -11068,10 +11083,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 11075 "vm.inl" +#line 11090 "vm.inl" #undef tos } while (0); @@ -11080,12 +11095,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 11089 "vm.inl" +#line 11104 "vm.inl" #undef block #undef closure } @@ -11098,14 +11113,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11109 "vm.inl" +#line 11124 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11118,11 +11133,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11126 "vm.inl" +#line 11141 "vm.inl" } while (0); /* PUSH_SPECIAL ( -- tos ) */ @@ -11130,10 +11145,10 @@ { int n = arg; #define tos _extra1 -#line 861 "vm.def" +#line 864 "vm.def" tos = _gst_nil_oop + (n - NIL_INDEX); -#line 11137 "vm.inl" +#line 11152 "vm.inl" #undef tos } while (0); @@ -11141,19 +11156,21 @@ do { #define val _extra1 -#line 882 "vm.def" +#line 885 "vm.def" EXPORT_REGS (); if UNCOMMON (!unwind_method ()) { SEND_MESSAGE (_gst_bad_return_error_symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); } - IMPORT_REGS (); - SET_STACKTOP (val); - FETCH (dispatch_vec); + else + { + IMPORT_REGS (); + SET_STACKTOP (val); + } + FETCH; -#line 11157 "vm.inl" +#line 11174 "vm.inl" #undef val } while (0); @@ -11168,11 +11185,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11176 "vm.inl" +#line 11193 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -11180,10 +11197,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 11187 "vm.inl" +#line 11204 "vm.inl" #undef tos } while (0); @@ -11196,15 +11213,15 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 324 "vm.def" +#line 327 "vm.def" PREPARE_STACK (); INTERP_BASIC_BOOL (op, op1, op2, >=); EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[GREATER_EQUAL_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11208 "vm.inl" +#line 11225 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -11221,28 +11238,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11229 "vm.inl" +#line 11246 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 11237 "vm.inl" +#line 11254 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 11246 "vm.inl" +#line 11263 "vm.inl" #undef tos } while (0); @@ -11251,10 +11268,10 @@ { int n = 1; #define tos _stack0 -#line 763 "vm.def" +#line 766 "vm.def" tos = RECEIVER_VARIABLE (n); -#line 11258 "vm.inl" +#line 11275 "vm.inl" #undef tos } while (0); @@ -11267,19 +11284,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11275 "vm.inl" +#line 11292 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 11283 "vm.inl" +#line 11300 "vm.inl" } while (0); /* PUSH_LIT_VARIABLE ( -- tos ) */ @@ -11289,7 +11306,7 @@ #define PREPARE_STACK() do { \ } while (0) #define tos _extra1 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -11299,12 +11316,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 11308 "vm.inl" +#line 11325 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -11318,11 +11335,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11326 "vm.inl" +#line 11343 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -11330,10 +11347,10 @@ { int n = 2; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 11337 "vm.inl" +#line 11354 "vm.inl" #undef tos } while (0); @@ -11344,15 +11361,15 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11356 "vm.inl" +#line 11373 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11364,11 +11381,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11372 "vm.inl" +#line 11389 "vm.inl" } while (0); /* SEND_SUPER ( -- ) */ @@ -11378,7 +11395,7 @@ int n = 0; #define PREPARE_STACK() do { \ } while (0) -#line 696 "vm.def" +#line 699 "vm.def" OOP classOOP; PREPARE_STACK (); classOOP = POP_OOP (); @@ -11386,9 +11403,9 @@ EXPORT_REGS (); SEND_TO_SUPER (METHOD_LITERAL (sel), n, classOOP); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11392 "vm.inl" +#line 11409 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11400,11 +11417,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11408 "vm.inl" +#line 11425 "vm.inl" } while (0); /* PUSH_SPECIAL ( -- tos ) */ @@ -11412,10 +11429,10 @@ { int n = 0; #define tos _extra1 -#line 861 "vm.def" +#line 864 "vm.def" tos = _gst_nil_oop + (n - NIL_INDEX); -#line 11419 "vm.inl" +#line 11436 "vm.inl" #undef tos } while (0); @@ -11424,10 +11441,10 @@ { int n = arg; #define tos _extra1 -#line 803 "vm.def" +#line 806 "vm.def" STORE_RECEIVER_VARIABLE (n, tos); -#line 11431 "vm.inl" +#line 11448 "vm.inl" #undef tos } while (0); @@ -11440,21 +11457,21 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11448 "vm.inl" +#line 11465 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 11458 "vm.inl" +#line 11475 "vm.inl" #undef tos } while (0); @@ -11463,10 +11480,10 @@ { int n = arg; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 11470 "vm.inl" +#line 11487 "vm.inl" #undef tos } while (0); @@ -11479,14 +11496,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11490 "vm.inl" +#line 11507 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11501,28 +11518,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11509 "vm.inl" +#line 11526 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 11517 "vm.inl" +#line 11534 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 11526 "vm.inl" +#line 11543 "vm.inl" #undef tos } while (0); @@ -11531,10 +11548,10 @@ { int n = 0; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 11538 "vm.inl" +#line 11555 "vm.inl" #undef tos } while (0); @@ -11542,14 +11559,14 @@ do { #define val _stack0 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 11553 "vm.inl" +#line 11570 "vm.inl" #undef val } while (0); @@ -11564,11 +11581,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11572 "vm.inl" +#line 11589 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -11576,10 +11593,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 11583 "vm.inl" +#line 11600 "vm.inl" #undef tos } while (0); @@ -11589,11 +11606,11 @@ #define op1 _stack0 #define op2 _extra1 #define op _stack0 -#line 655 "vm.def" +#line 658 "vm.def" /* DO_JUMP_LOOKAHEAD (op1 == op2); */ op = (op1 == op2) ? _gst_true_oop : _gst_false_oop; -#line 11597 "vm.inl" +#line 11614 "vm.inl" #undef op1 #undef op2 #undef op @@ -11608,11 +11625,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11616 "vm.inl" +#line 11633 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -11620,10 +11637,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 11627 "vm.inl" +#line 11644 "vm.inl" #undef tos } while (0); @@ -11632,12 +11649,12 @@ { #define block _extra1 #define closure _extra1 -#line 876 "vm.def" +#line 879 "vm.def" EXPORT_REGS (); closure = _gst_make_block_closure (block); IMPORT_REGS(); -#line 11641 "vm.inl" +#line 11658 "vm.inl" #undef block #undef closure } @@ -11650,14 +11667,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11661 "vm.inl" +#line 11678 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11671,28 +11688,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11679 "vm.inl" +#line 11696 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 11687 "vm.inl" +#line 11704 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 11696 "vm.inl" +#line 11713 "vm.inl" #undef tos } while (0); @@ -11701,10 +11718,10 @@ { int n = 3; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 11708 "vm.inl" +#line 11725 "vm.inl" #undef tos } while (0); @@ -11719,20 +11736,20 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11727 "vm.inl" +#line 11744 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 11736 "vm.inl" +#line 11753 "vm.inl" #undef tos } while (0); @@ -11741,10 +11758,10 @@ { #define tos _stack1 #define tos2 _stack0 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 11748 "vm.inl" +#line 11765 "vm.inl" #undef tos #undef tos2 } @@ -11756,15 +11773,15 @@ #define PREPARE_STACK() do { \ STACK_AT (0) = _stack0; \ } while (0) -#line 707 "vm.def" +#line 710 "vm.def" const struct builtin_selector *bs = &_gst_builtin_selectors[n]; PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (bs->symbol, bs->numArgs); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11768 "vm.inl" +#line 11785 "vm.inl" #undef PREPARE_STACK } while (0); @@ -11779,11 +11796,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11787 "vm.inl" +#line 11804 "vm.inl" } while (0); /* PUSH_LIT_CONSTANT ( -- tos ) */ @@ -11791,10 +11808,10 @@ { int n = arg; #define tos _extra1 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 11798 "vm.inl" +#line 11815 "vm.inl" #undef tos } while (0); @@ -11803,10 +11820,10 @@ { int n = 0; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 11810 "vm.inl" +#line 11827 "vm.inl" #undef tos } while (0); @@ -11821,7 +11838,7 @@ #define idx _extra1 #define val _extra2 #define res _stack0 -#line 522 "vm.def" +#line 525 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -11829,7 +11846,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_PUT_SPECIAL].symbol, 2); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_put_cache_class == (classOOP = OOP_CLASS (rec)) @@ -11851,9 +11868,9 @@ at_put_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 11857 "vm.inl" +#line 11874 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -11872,11 +11889,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11880 "vm.inl" +#line 11897 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -11884,10 +11901,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 11891 "vm.inl" +#line 11908 "vm.inl" #undef tos #undef tos2 } @@ -11897,10 +11914,10 @@ { int n = arg; #define tos _extra2 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 11904 "vm.inl" +#line 11921 "vm.inl" #undef tos } while (0); @@ -11909,10 +11926,10 @@ { int n = 1; #define tos _extra3 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 11916 "vm.inl" +#line 11933 "vm.inl" #undef tos } while (0); @@ -11927,7 +11944,7 @@ #define op1 _extra2 #define op2 _extra3 #define op _extra2 -#line 229 "vm.def" +#line 232 "vm.def" if COMMON (ARE_INTS(op1, op2)) { intptr_t iop1 = (intptr_t) op1; @@ -11958,9 +11975,9 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[PLUS_SPECIAL].symbol, 1); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 11964 "vm.inl" +#line 11981 "vm.inl" #undef PREPARE_STACK #undef op1 #undef op2 @@ -11977,19 +11994,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 11985 "vm.inl" +#line 12002 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 11993 "vm.inl" +#line 12010 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -11997,10 +12014,10 @@ { int n = 4; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 12004 "vm.inl" +#line 12021 "vm.inl" #undef tos } while (0); @@ -12014,29 +12031,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12022 "vm.inl" +#line 12039 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 12031 "vm.inl" +#line 12048 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 12040 "vm.inl" +#line 12057 "vm.inl" } while (0); /* PUSH_LIT_VARIABLE ( -- tos ) */ @@ -12047,7 +12064,7 @@ POP_N_OOPS (1); \ } while (0) #define tos _stack0 -#line 747 "vm.def" +#line 750 "vm.def" tos = METHOD_LITERAL (n); if (UNCOMMON (IS_INT (tos)) || UNCOMMON (!is_a_kind_of (OOP_CLASS (tos), _gst_association_class))) @@ -12057,12 +12074,12 @@ EXPORT_REGS (); SEND_MESSAGE (_gst_builtin_selectors[VALUE_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } else tos = ASSOCIATION_VALUE (tos); -#line 12066 "vm.inl" +#line 12083 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -12078,11 +12095,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12086 "vm.inl" +#line 12103 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -12090,10 +12107,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 12097 "vm.inl" +#line 12114 "vm.inl" #undef tos #undef tos2 } @@ -12103,10 +12120,10 @@ { int n = arg; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 12110 "vm.inl" +#line 12127 "vm.inl" #undef tos } while (0); @@ -12119,14 +12136,14 @@ PUSH_OOP (_extra1); \ PUSH_OOP (_extra2); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 12130 "vm.inl" +#line 12147 "vm.inl" #undef PREPARE_STACK } while (0); @@ -12142,11 +12159,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12150 "vm.inl" +#line 12167 "vm.inl" } while (0); /* POP_INTO_NEW_STACKTOP ( obj | val -- obj | ) */ @@ -12155,10 +12172,10 @@ int n = 1; #define obj _stack1 #define val _stack0 -#line 869 "vm.def" +#line 872 "vm.def" STORE_INSTANCE_VARIABLE (obj, n, val); -#line 12162 "vm.inl" +#line 12179 "vm.inl" #undef obj #undef val } @@ -12171,14 +12188,14 @@ #define PREPARE_STACK() do { \ POP_N_OOPS (1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 12182 "vm.inl" +#line 12199 "vm.inl" #undef PREPARE_STACK } while (0); @@ -12192,28 +12209,28 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12200 "vm.inl" +#line 12217 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 12208 "vm.inl" +#line 12225 "vm.inl" } while (0); /* POP_STACK_TOP ( tos -- ) */ do { #define tos _stack0 -#line 873 "vm.def" +#line 876 "vm.def" -#line 12217 "vm.inl" +#line 12234 "vm.inl" #undef tos } while (0); @@ -12222,10 +12239,10 @@ { int n = 1; #define tos _stack0 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 12229 "vm.inl" +#line 12246 "vm.inl" #undef tos } while (0); @@ -12233,14 +12250,14 @@ do { #define val _stack0 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 12244 "vm.inl" +#line 12261 "vm.inl" #undef val } while (0); @@ -12254,11 +12271,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12262 "vm.inl" +#line 12279 "vm.inl" } while (0); /* STORE_TEMPORARY_VARIABLE ( tos | -- tos | ) */ @@ -12266,19 +12283,19 @@ { int n = 3; #define tos _stack0 -#line 767 "vm.def" +#line 770 "vm.def" STORE_METHOD_TEMPORARY (n, tos); -#line 12273 "vm.inl" +#line 12290 "vm.inl" #undef tos } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 12282 "vm.inl" +#line 12299 "vm.inl" } while (0); } @@ -12291,11 +12308,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12299 "vm.inl" +#line 12316 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -12303,10 +12320,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 12310 "vm.inl" +#line 12327 "vm.inl" #undef tos #undef tos2 } @@ -12319,14 +12336,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 12330 "vm.inl" +#line 12347 "vm.inl" #undef PREPARE_STACK } while (0); @@ -12340,11 +12357,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12348 "vm.inl" +#line 12365 "vm.inl" } while (0); /* STORE_RECEIVER_VARIABLE ( tos | -- tos | ) */ @@ -12352,10 +12369,10 @@ { int n = arg; #define tos _stack0 -#line 803 "vm.def" +#line 806 "vm.def" STORE_RECEIVER_VARIABLE (n, tos); -#line 12359 "vm.inl" +#line 12376 "vm.inl" #undef tos } while (0); @@ -12363,14 +12380,14 @@ do { #define val _stack0 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 12374 "vm.inl" +#line 12391 "vm.inl" #undef val } while (0); @@ -12382,29 +12399,29 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12390 "vm.inl" +#line 12407 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 12398 "vm.inl" +#line 12415 "vm.inl" } while (0); /* PUSH_SELF ( -- tos ) */ do { #define tos _extra1 -#line 935 "vm.def" +#line 940 "vm.def" tos = _gst_self; -#line 12408 "vm.inl" +#line 12425 "vm.inl" #undef tos } while (0); @@ -12416,14 +12433,14 @@ #define PREPARE_STACK() do { \ PUSH_OOP (_extra1); \ } while (0) -#line 688 "vm.def" +#line 691 "vm.def" PREPARE_STACK (); EXPORT_REGS (); SEND_MESSAGE (METHOD_LITERAL (sel), n); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; -#line 12427 "vm.inl" +#line 12444 "vm.inl" #undef PREPARE_STACK } while (0); @@ -12438,11 +12455,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12446 "vm.inl" +#line 12463 "vm.inl" } while (0); /* NOT_NIL_SPECIAL ( rec -- val ) */ @@ -12450,11 +12467,11 @@ { #define rec _stack0 #define val _stack0 -#line 626 "vm.def" +#line 629 "vm.def" /* DO_JUMP_LOOKAHEAD (rec != _gst_nil_oop); */ val = rec != _gst_nil_oop ? _gst_true_oop : _gst_false_oop; -#line 12458 "vm.inl" +#line 12475 "vm.inl" #undef rec #undef val } @@ -12464,10 +12481,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 12471 "vm.inl" +#line 12488 "vm.inl" #undef tos #undef tos2 } @@ -12481,13 +12498,13 @@ PUSH_OOP (_extra1); \ } while (0) #define tos _extra1 -#line 819 "vm.def" +#line 822 "vm.def" if UNCOMMON (tos == _gst_false_oop) { PREPARE_STACK (); POP_N_OOPS(1); ip += n; - FETCH (dispatch_vec); + FETCH; } else if UNCOMMON (tos != _gst_true_oop) { @@ -12496,10 +12513,10 @@ EXPORT_REGS(); SEND_MESSAGE(_gst_must_be_boolean_symbol, 0); IMPORT_REGS(); - FETCH (dispatch_vec); + FETCH; } -#line 12503 "vm.inl" +#line 12520 "vm.inl" #undef PREPARE_STACK #undef tos } @@ -12515,11 +12532,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12523 "vm.inl" +#line 12540 "vm.inl" } while (0); /* DUP_STACK_TOP ( tos | -- tos | tos2 ) */ @@ -12527,10 +12544,10 @@ { #define tos _stack0 #define tos2 _extra1 -#line 903 "vm.def" +#line 908 "vm.def" tos2 = tos; -#line 12534 "vm.inl" +#line 12551 "vm.inl" #undef tos #undef tos2 } @@ -12540,10 +12557,10 @@ { int n = arg; #define tos _extra2 -#line 865 "vm.def" +#line 868 "vm.def" tos = METHOD_LITERAL (n); -#line 12547 "vm.inl" +#line 12564 "vm.inl" #undef tos } while (0); @@ -12557,19 +12574,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12565 "vm.inl" +#line 12582 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 12573 "vm.inl" +#line 12590 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -12577,10 +12594,10 @@ { int n = 0; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 12584 "vm.inl" +#line 12601 "vm.inl" #undef tos } while (0); @@ -12588,14 +12605,14 @@ do { #define val _extra1 -#line 895 "vm.def" +#line 900 "vm.def" EXPORT_REGS (); unwind_context (); IMPORT_REGS (); SET_STACKTOP (val); - FETCH (dispatch_vec); + FETCH; -#line 12599 "vm.inl" +#line 12616 "vm.inl" #undef val } while (0); @@ -12611,11 +12628,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12619 "vm.inl" +#line 12636 "vm.inl" } while (0); /* PUSH_INTEGER ( -- tos ) */ @@ -12623,10 +12640,10 @@ { int n = arg; #define tos _extra1 -#line 857 "vm.def" +#line 860 "vm.def" tos = FROM_INT (n); -#line 12630 "vm.inl" +#line 12647 "vm.inl" #undef tos } while (0); @@ -12640,7 +12657,7 @@ #define idx _stack0 #define val _extra1 #define res _stack1 -#line 522 "vm.def" +#line 525 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -12648,7 +12665,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[AT_PUT_SPECIAL].symbol, 2); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (at_put_cache_class == (classOOP = OOP_CLASS (rec)) @@ -12670,9 +12687,9 @@ at_put_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 12676 "vm.inl" +#line 12693 "vm.inl" #undef PREPARE_STACK #undef rec #undef idx @@ -12690,11 +12707,11 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12698 "vm.inl" +#line 12715 "vm.inl" } while (0); /* PUSH_TEMPORARY_VARIABLE ( -- tos ) */ @@ -12702,10 +12719,10 @@ { int n = arg; #define tos _extra1 -#line 728 "vm.def" +#line 731 "vm.def" tos = METHOD_TEMPORARY (n); -#line 12709 "vm.inl" +#line 12726 "vm.inl" #undef tos } while (0); @@ -12717,7 +12734,7 @@ } while (0) #define rec _extra1 #define val _extra1 -#line 588 "vm.def" +#line 591 "vm.def" OOP classOOP; PREPARE_STACK (); EXPORT_REGS (); @@ -12725,7 +12742,7 @@ { SEND_MESSAGE (_gst_builtin_selectors[CLASS_SPECIAL].symbol, 0); IMPORT_REGS (); - FETCH (dispatch_vec); + FETCH; } if COMMON (class_cache_class == (classOOP = OOP_CLASS (rec)) @@ -12747,9 +12764,9 @@ class_cache_class = classOOP; NEXT_BC; } - FETCH (dispatch_vec); + FETCH; -#line 12753 "vm.inl" +#line 12770 "vm.inl" #undef PREPARE_STACK #undef rec #undef val @@ -12764,19 +12781,19 @@ /* PREFETCH ( -- ) */ do { -#line 207 "vm.def" +#line 209 "vm.def" PREFETCH; LOCAL_COUNTER++; -#line 12772 "vm.inl" +#line 12789 "vm.inl" } while (0); /* LINE_NUMBER_BYTECODE ( -- ) */ do { -#line 932 "vm.def" +#line 937 "vm.def" -#line 12780 "vm.inl" +#line 12797 "vm.inl" } while (0); /* PUSH_OUTER_TEMP ( -- tos ) */ @@ -12785,7 +12802,7 @@ int n = 2; int scopes = 1; #define tos _extra1 -#line 732 "vm.def" +#line 735 "vm.def" OOP contextOOP; gst_block_context context; @@ -12799,7 +12816,7 @@ tos = context->contextStack[n]; -#line 12803 "vm.inl" +#line 12820 "vm.inl" #undef tos } while (0); diff -rNu smalltalk-3.0.3/packages/net/Base.st smalltalk-3.0.4/packages/net/Base.st --- smalltalk-3.0.3/packages/net/Base.st 2008-04-10 11:10:58.000000000 +0200 +++ smalltalk-3.0.4/packages/net/Base.st 2008-08-09 15:09:49.000000000 +0200 @@ -1274,6 +1274,11 @@ + + isResumable [ + + ^true + ] ] diff -rNu smalltalk-3.0.3/packages/net/ChangeLog smalltalk-3.0.4/packages/net/ChangeLog --- smalltalk-3.0.3/packages/net/ChangeLog 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/packages/net/ChangeLog 2008-08-09 15:09:49.000000000 +0200 @@ -1,3 +1,13 @@ +2008-06-01 Paolo Bonzini + + * URIResolver.st: Handle ProtocolError in a saner way. + +2008-06-01 Paolo Bonzini + + * Base.st: Make ProtocolError resumable. + * MIME.st: Trim whitespace in front of fields. + * URIResolver.st: Fix case when there is a protocol error. + 2007-10-08 Paolo Bonzini * NetServer.st: Move #stop to NetServer, since using it diff -rNu smalltalk-3.0.3/packages/net/MIME.st smalltalk-3.0.4/packages/net/MIME.st --- smalltalk-3.0.3/packages/net/MIME.st 2008-04-10 11:10:58.000000000 +0200 +++ smalltalk-3.0.4/packages/net/MIME.st 2008-07-25 17:10:36.000000000 +0200 @@ -345,7 +345,7 @@ "Notify that there is a problem at current token." - ^self notify: ('<1s> expected' expandMacrosWith: aString) + ^self notify: 'expected `%1''' % {aString} ] notify: string [ @@ -1435,6 +1435,7 @@ | fname | fname := rfc822Stream scanFieldName. rfc822Stream mustMatch: $: notify: 'Invalid Field (Missing colon)'. + rfc822Stream skipWhiteSpace. ^fname asLowercase ] diff -rNu smalltalk-3.0.3/packages/net/URIResolver.st smalltalk-3.0.4/packages/net/URIResolver.st --- smalltalk-3.0.3/packages/net/URIResolver.st 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/packages/net/URIResolver.st 2008-08-09 15:09:49.000000000 +0200 @@ -58,8 +58,8 @@ [entity := (self on: url) noCache: true; contentsNoSignal] - on: Error - do: [:sig | sig return: aBlock value]. + on: ProtocolError do: [:sig | sig return: aBlock value] + on: Error do: [:sig | sig return: aBlock value]. ^entity ] @@ -496,7 +496,7 @@ requestHttpContents: urlString [ - | requestHeaders tmpFile stream protocolError response type string | + | requestHeaders tmpFile stream protocolError response string | requestHeaders := OrderedCollection new. requestHeaders add: 'User-Agent: GNU-Smalltalk/' , Smalltalk version. requestHeaders add: 'Accept: text/html, image/gif, */*; q=0.2'. @@ -522,7 +522,7 @@ do: [:ex | protocolError := true. - ex return] + ex pass] on: HTTP.HTTPRedirection do: [:ex | @@ -544,7 +544,8 @@ ifTrue: [string := tmpFile contents. tmpFile remove. - (WebEntity readFrom: string readStream type: type) + (WebEntity new) + body: string; url: url; canCache: false; guessMimeType; @@ -569,7 +570,7 @@ requestHttpHead: urlString [ - | requestHeaders tmpFile stream protocolError response type string | + | requestHeaders tmpFile stream protocolError response string | requestHeaders := OrderedCollection new. requestHeaders add: 'User-Agent: GNU-Smalltalk/' , Smalltalk version. requestHeaders add: 'Accept: text/html, image/gif, */*; q=0.2'. @@ -595,7 +596,7 @@ do: [:ex | protocolError := true. - ex return] + ex pass] on: HTTP.HTTPRedirection do: [:ex | @@ -617,7 +618,8 @@ ifTrue: [string := tmpFile contents. tmpFile remove. - (WebEntity readFrom: string readStream type: type) + (WebEntity new) + body: string; url: url; canCache: false; guessMimeTypeFromResponse: response; @@ -645,7 +647,7 @@ postHttpContents: contents urlString: urlString [ - | requestHeaders tmpFile stream protocolError response type string | + | requestHeaders tmpFile stream protocolError response string | requestHeaders := OrderedCollection new. requestHeaders add: 'User-Agent: GNU-Smalltalk/' , Smalltalk version. requestHeaders add: 'Accept: text/html, image/gif, */*; q=0.2'. @@ -672,7 +674,7 @@ do: [:ex | protocolError := true. - ex return] + ex pass] on: HTTP.HTTPRedirection do: [:ex | @@ -694,7 +696,8 @@ ifTrue: [string := tmpFile contents. tmpFile remove. - (WebEntity readFrom: string readStream type: type) + (WebEntity new) + body: string; url: url; canCache: false; guessMimeTypeFromResponse: response; diff -rNu smalltalk-3.0.3/packages/sport/sport.st smalltalk-3.0.4/packages/sport/sport.st --- smalltalk-3.0.3/packages/sport/sport.st 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/packages/sport/sport.st 2008-08-09 15:09:49.000000000 +0200 @@ -982,6 +982,12 @@ ^Directory pathSeparator ] + lastSeparatorIndex [ + "Answer the index of the last filename component separator in + `self asString'." + ^self asString lastIndexOf: self separator ifAbsent: [nil] + ] + tail [ "Answer the filename suffix as a String." @@ -1221,12 +1227,18 @@ number of bytes to be read. We get what its there no matter how much their is!!" - | actuallyRead | - aByteArray replaceFrom: startIndex to: startIndex + aNumberOfBytes - 1 - with: (self underlyingSocket next: aNumberOfBytes) - startingAt: 1. - actuallyRead > aNumberOfBytes ifTrue: [1 halt]. - ^actuallyRead + | actuallyRead total | + total := 0. + self underlyingSocket ensureReadable. + [ + actuallyRead := self underlyingSocket availableBytes + min: aNumberOfBytes - total. + actuallyRead = 0 ifTrue: [ ^total ]. + aByteArray replaceFrom: startIndex to: startIndex + actuallyRead - 1 + with: (self underlyingSocket next: actuallyRead) + startingAt: total + 1. + total := total + actuallyRead. + ] repeat ] readyForRead [ diff -rNu smalltalk-3.0.3/packages/stinst/parser/ChangeLog smalltalk-3.0.4/packages/stinst/parser/ChangeLog --- smalltalk-3.0.3/packages/stinst/parser/ChangeLog 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/packages/stinst/parser/ChangeLog 2008-08-09 15:09:49.000000000 +0200 @@ -1,3 +1,8 @@ +2008-07-28 Paolo Bonzini + + * RBParser.st: Parse negative numbers as unary minus + number. + Simplify RBScanner>>#scanNumberValue; fix bugs in ScaledDecimals. + 2008-04-27 Stephen Compall * STSymTable.st: Create VariableBindings directly to add to diff -rNu smalltalk-3.0.3/packages/stinst/parser/RBParser.st smalltalk-3.0.4/packages/stinst/parser/RBParser.st --- smalltalk-3.0.3/packages/stinst/parser/RBParser.st 2008-04-10 11:10:58.000000000 +0200 +++ smalltalk-3.0.4/packages/stinst/parser/RBParser.st 2008-07-29 11:27:37.000000000 +0200 @@ -535,6 +535,20 @@ ^RBVariableNode identifierToken: token ] + parseNegatedNumber [ + + | token | + self step. + token := currentToken. + (token value respondsTo: #negated) ifFalse: [ + ^self parserError: 'Number expected' ]. + token value negative ifTrue: [ + ^self parserError: 'Positive number expected' ]. + token value: token value negated. + self step. + ^RBLiteralNode literalToken: token + ] + parsePrimitiveLiteral [ | token | @@ -547,6 +561,8 @@ currentToken isIdentifier ifTrue: [^self parsePrimitiveIdentifier]. currentToken isLiteral ifTrue: [^self parsePrimitiveLiteral]. + (currentToken isBinary and: [ currentToken value == #- ]) + ifTrue: [^self parseNegatedNumber]. currentToken isSpecial ifTrue: [currentToken value == $[ ifTrue: [^self parseBlock]. @@ -871,9 +887,7 @@ characterType == #alphabetic ifTrue: [^self scanIdentifierOrKeyword]. - (characterType == #digit - or: [currentCharacter == $- and: [(self classify: stream peek) == #digit]]) - ifTrue: [^self scanNumber]. + characterType == #digit ifTrue: [^self scanNumber]. characterType == #binary ifTrue: [^self scanBinary: RBBinarySelectorToken]. characterType == #special ifTrue: [^self scanSpecialCharacter]. currentCharacter == $' ifTrue: [^self scanLiteralString]. @@ -1011,36 +1025,30 @@ scanNumberValue [ - | mantissaParsed isNegative base exponent scale ch num | - mantissaParsed := isNegative := false. - base := 10. + | isNegative base exponent scale ch num | + isNegative := false. exponent := nil. - currentCharacter == $- - ifFalse: - ["could be radix" - num := self scanDigits: currentCharacter base: 10. - currentCharacter == $r + "could be radix or base-10 mantissa" + num := self scanDigits: currentCharacter base: 10. + currentCharacter == $r + ifTrue: + [base := num truncated. + self step "skip over 'r'". + currentCharacter == $- ifTrue: - [base := num truncated. - self step "skip over 'r'"] - ifFalse: [mantissaParsed := true]]. + [isNegative := true. + self step "skip '-'"]. + (self isDigit: currentCharacter base: base) + ifTrue: [num := self scanDigits: currentCharacter base: base] + ifFalse: [self error: 'malformed number']] + ifFalse: [base := 10]. "Here we've either a) parsed base, an 'r' and are sitting on the following character b) parsed the integer part of the mantissa, and are sitting on the char following it, or c) parsed nothing and are sitting on a - sign." - currentCharacter == $- - ifTrue: - [mantissaParsed ifTrue: [^num]. - isNegative := true. - self step "skip '-'"]. - mantissaParsed - ifFalse: - [(self isDigit: currentCharacter base: base) - ifTrue: [num := self scanDigits: currentCharacter base: base] - ifFalse: [self error: 'malformed number']]. currentCharacter == $. ifTrue: [stream peek isDigit @@ -1059,19 +1067,18 @@ ifTrue: [self step. currentCharacter isNil ifTrue: [currentCharacter := Character space]. + exponent isNil ifTrue: [exponent := 0]. currentCharacter isDigit - ifTrue: [scale := self scanDigits: ch base: 10] + ifTrue: [scale := self scanDigits: currentCharacter base: 10] ifFalse: - [exponent isNil ifTrue: [exponent := 0]. - - "Might sit on the beginning of an identifier such as 123stu, + ["Might sit on the beginning of an identifier such as 123stu, or on a ScaledDecimal literal lacking the scale such as 123s" (currentCharacter == $_ or: [currentCharacter isLetter]) ifTrue: [stream skip: -1. currentCharacter := $s] ifFalse: [scale := exponent negated]]. - ^num asScaledDecimal: exponent scale: scale]. + ^num asScaledDecimal: exponent radix: base scale: scale]. currentCharacter == $e ifTrue: [num := num asFloatE] ifFalse: diff -rNu smalltalk-3.0.3/packages/tcp/Buffers.st smalltalk-3.0.4/packages/tcp/Buffers.st --- smalltalk-3.0.3/packages/tcp/Buffers.st 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/packages/tcp/Buffers.st 2008-08-09 15:09:50.000000000 +0200 @@ -120,6 +120,12 @@ ^contents ] + availableBytes [ + "Answer how many bytes are available in the buffer." + + ^endPtr + 1 - ptr + ] + fill [ "Fill the buffer with more data if it is empty, and answer true if the fill block was able to read more data." diff -rNu smalltalk-3.0.3/packages/tcp/ChangeLog smalltalk-3.0.4/packages/tcp/ChangeLog --- smalltalk-3.0.3/packages/tcp/ChangeLog 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/packages/tcp/ChangeLog 2008-08-09 15:09:50.000000000 +0200 @@ -1,3 +1,12 @@ +2008-08-01 Paolo Bonzini + + * sysdep.c: Use SOCK_CLOEXEC if available, else use FD_CLOEXEC. + +2008-07-28 Paolo Bonzini + + * Buffers.st: Add ReadBuffer>>#availableBytes. + * Sockets.st: Add StreamSocket>>#availableBytes. + 2008-04-09 Paolo Bonzini * AbstractSocketImpl.st: Use instance-side #checkError. diff -rNu smalltalk-3.0.3/packages/tcp/Sockets.st smalltalk-3.0.4/packages/tcp/Sockets.st --- smalltalk-3.0.3/packages/tcp/Sockets.st 2008-05-14 12:02:33.000000000 +0200 +++ smalltalk-3.0.4/packages/tcp/Sockets.st 2008-08-09 15:09:50.000000000 +0200 @@ -1113,6 +1113,16 @@ or: [super canRead] ] + availableBytes [ + "Answer how many bytes are available in the socket's read buffer + or from the operating system." + + + self canRead ifFalse: [ ^0 ]. + self readBuffer isEmpty ifTrue: [ self readBuffer fill ]. + ^self readBuffer availableBytes + ] + bufferContents [ "Answer the current contents of the read buffer" diff -rNu smalltalk-3.0.3/packages/tcp/tcp.c smalltalk-3.0.4/packages/tcp/tcp.c --- smalltalk-3.0.3/packages/tcp/tcp.c 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/packages/tcp/tcp.c 2008-08-09 15:09:50.000000000 +0200 @@ -255,6 +255,26 @@ constantFunction (ipDropMembership, -1); #endif +static int +mySocket (int domain, int type, int protocol) +{ + int fd; +#ifdef SOCK_CLOEXEC + fd = socket (domain, type | SOCK_CLOEXEC, protocol); + +#else + fd = socket (domain, type, protocol); + + /* Do not do FD_CLOEXEC under MinGW. */ +#if defined FD_CLOEXEC && !defined __MSVCRT__ + if (fd != -1) + fcntl (fd, F_SETFD, fcntl (fd, F_GETFD, 0) | FD_CLOEXEC); +#endif +#endif + + return fd; +} + void gst_initModule (VMProxy * proxy) { @@ -284,7 +304,7 @@ vmProxy->defineCFunc ("TCPsendto", sendto); vmProxy->defineCFunc ("TCPsetsockopt", setsockopt); vmProxy->defineCFunc ("TCPgetsockopt", getsockopt); - vmProxy->defineCFunc ("TCPsocket", socket); + vmProxy->defineCFunc ("TCPsocket", mySocket); vmProxy->defineCFunc ("TCPpfInet", pfInet); vmProxy->defineCFunc ("TCPafInet", afInet); diff -rNu smalltalk-3.0.3/packages/vfs/ChangeLog smalltalk-3.0.4/packages/vfs/ChangeLog --- smalltalk-3.0.3/packages/vfs/ChangeLog 2008-05-14 12:34:10.000000000 +0200 +++ smalltalk-3.0.4/packages/vfs/ChangeLog 2008-08-09 15:09:50.000000000 +0200 @@ -1,3 +1,9 @@ +2008-07-10 Paolo Bonzini + + * uzip: Remove bashism. + * urar: Remove bashism. + * ulha: Remove bashism. + 2008-03-14 Paolo Bonzini * VFS.st: Fix documentation; VFS scripts are searched diff -rNu smalltalk-3.0.3/packages/vfs/ulha smalltalk-3.0.4/packages/vfs/ulha --- smalltalk-3.0.3/packages/vfs/ulha 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/packages/vfs/ulha 2008-07-25 17:10:37.000000000 +0200 @@ -34,7 +34,7 @@ # Define your awk AWK=gawk -if ls -de . >& /dev/null; +if ls -de . > /dev/null 2>&1; then LS_COMMAND="ls -le" else diff -rNu smalltalk-3.0.3/packages/vfs/urar smalltalk-3.0.4/packages/vfs/urar --- smalltalk-3.0.3/packages/vfs/urar 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/packages/vfs/urar 2008-07-25 17:10:37.000000000 +0200 @@ -75,15 +75,15 @@ mkdir -p "$2" # rar cannot create an empty directory touch "$2"/.rarfs - $RAR a -r "$1" "$2" &>/dev/null - $RAR d "$1" "$2"/.rarfs &>/dev/null + $RAR a -r "$1" "$2" >/dev/null 2>&1 + $RAR d "$1" "$2"/.rarfs >/dev/null 2>&1 cd $pwd rm -rf $dir } mcrarfs_rm () { - $RAR d "$1" "$2" &>/dev/null + $RAR d "$1" "$2" >/dev/null 2>&1 } umask 077 diff -rNu smalltalk-3.0.3/packages/vfs/uzip smalltalk-3.0.4/packages/vfs/uzip --- smalltalk-3.0.3/packages/vfs/uzip 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/packages/vfs/uzip 2008-07-25 17:10:37.000000000 +0200 @@ -84,11 +84,20 @@ # preserve pwd. It is clean, but is it necessary? pwd=`pwd` # Create a directory and create in it a tmp directory with the good name - dir=tmpdir.${RANDOM} + { + dir=` + (umask 077 && mktemp -d "$TMPDIR/uzipXXXXXX") 2>/dev/null + ` && + test -n "$dir" && test -d "$dir" + } || { + dir=$TMPDIR/uzip$$-$RANDOM + (umask 077 && mkdir "$dir") + } || exit $? + mkdir $dir cd $dir mkdir -p "$2" - $XZIP "$1" "$2" &>/dev/null + $XZIP "$1" "$2" >/dev/null 2>&1 cd $pwd rm -rf $dir } @@ -107,7 +116,7 @@ fi # (cp -p) to preserve date, but $2 is dated now! cp -p $3 "$3.dir/$2" - $XZIP "$1" "$2" >/dev/null + $XZIP "$1" "$2" >/dev/null 2>&1 cd $pwd rm -rf $3.dir } @@ -119,12 +128,12 @@ mczipfs_rm () { - $XDZIP "$1" "$2" &>/dev/null + $XDZIP "$1" "$2" >/dev/null 2>&1 } mczipfs_rmdir () { - $XDZIP "$1" "$2"/ &>/dev/null + $XDZIP "$1" "$2"/ >/dev/null 2>&1 } umask 077 diff -rNu smalltalk-3.0.3/scripts/Convert.st smalltalk-3.0.4/scripts/Convert.st --- smalltalk-3.0.3/scripts/Convert.st 2008-05-12 14:37:55.000000000 +0200 +++ smalltalk-3.0.4/scripts/Convert.st 2008-07-25 17:10:37.000000000 +0200 @@ -430,8 +430,8 @@ ObjectMemory quit: 0 ]. opt = 'quiet' ifTrue: [ - quiet := false. - verbose := true ]. + quiet := true. + verbose := false ]. opt = 'verbose' ifTrue: [ quiet := false. diff -rNu smalltalk-3.0.3/snprintfv/ChangeLog smalltalk-3.0.4/snprintfv/ChangeLog --- smalltalk-3.0.3/snprintfv/ChangeLog 2008-04-10 11:10:49.000000000 +0200 +++ smalltalk-3.0.4/snprintfv/ChangeLog 2008-07-25 17:10:37.000000000 +0200 @@ -1,3 +1,8 @@ +2008-05-16 Paolo Bonzini + + * snprintf/format.c: Fix bad comment termination, spotted by Bruno + Haible. + 2006-11-26 Bruce Korb * snprintfv/printf.c (call_argtype_function, parse_printf_format, diff -rNu smalltalk-3.0.3/snprintfv/snprintfv/format.c smalltalk-3.0.4/snprintfv/snprintfv/format.c --- smalltalk-3.0.3/snprintfv/snprintfv/format.c 2008-01-09 18:20:48.000000000 +0100 +++ smalltalk-3.0.4/snprintfv/snprintfv/format.c 2008-07-25 17:10:37.000000000 +0200 @@ -1141,7 +1141,7 @@ # endif /* !HAVE_COPYSIGN */ } # endif /* !HAVE_COPYSIGNL */ -#endif /* !NO_FLOAT_PRINTING && HAVE_LONG_DOUBLE) +#endif /* !NO_FLOAT_PRINTING && HAVE_LONG_DOUBLE */ diff -rNu smalltalk-3.0.3/superops/ChangeLog smalltalk-3.0.4/superops/ChangeLog --- smalltalk-3.0.3/superops/ChangeLog 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/superops/ChangeLog 2008-07-25 17:10:37.000000000 +0200 @@ -1,3 +1,8 @@ +2008-07-14 Paolo Bonzini + + * superops/vm_def.cc: Use a proper subclass to emit ADVANCE instead + of PREFETCH for jumps. + 2007-08-20 Paolo Bonzini * superops/byte_def.cc: Abort on superoperators. Remove "COLON". diff -rNu smalltalk-3.0.3/superops/vm_def.cc smalltalk-3.0.4/superops/vm_def.cc --- smalltalk-3.0.3/superops/vm_def.cc 2008-04-10 11:10:59.000000000 +0200 +++ smalltalk-3.0.4/superops/vm_def.cc 2008-07-25 17:10:38.000000000 +0200 @@ -45,6 +45,7 @@ int num; bytecode (int _num); + virtual void write_prefetch (std::ostream &os); virtual void write_vm_def (std::ostream &os); virtual void write_vm_def_ext_arg (std::ostream &os, int arg) = 0; virtual void write_vm_def_fixed_arg (std::ostream &os, int arg) = 0; @@ -70,6 +71,11 @@ void write_vm_def_var_arg (std::ostream &os); }; +struct bytecode_jump : bytecode_unary { + bytecode_jump (int _num, const char *_name); + void write_prefetch (std::ostream &os); +}; + struct bytecode_ext : bytecode_noarg { bytecode_ext (int _num, const char *_name); void write_vm_def (std::ostream &os); @@ -88,6 +94,7 @@ int fixed_arg; bytecode_superoperator (int _num, int _bc1, int _bc2, int _arg); + void write_prefetch (std::ostream &os); }; struct bytecode_with_fixed_arg_1 : bytecode_superoperator { @@ -105,14 +112,16 @@ }; void +bytecode::write_prefetch (std::ostream & os) +{ + os << " PREFETCH ();" << std::endl; +} + +void bytecode::write_vm_def (std::ostream & os) { os << " " << num << " = bytecode bc" << num << " {" << std::endl; - if (num == 40 || num == 41) - os << " ADVANCE ();" << std::endl; - else - os << " PREFETCH ();" << std::endl; - + write_prefetch (os); write_vm_def_var_arg (os); os << " }" << std::endl << std::endl; }; @@ -175,6 +184,17 @@ os << " " << name << " (arg);" << std::endl; } +bytecode_jump::bytecode_jump (int _num, const char *_name): + bytecode_unary (_num, _name) +{ +}; + +void +bytecode_jump::write_prefetch (std::ostream & os) +{ + os << " ADVANCE ();" << std::endl; +} + bytecode_ext::bytecode_ext (int _num, const char *_name): bytecode_noarg (_num, _name) { @@ -227,6 +247,12 @@ abort (); } +void +bytecode_superoperator::write_prefetch (std::ostream & os) +{ + bc2->write_prefetch (os); +} + bytecode_with_fixed_arg_1::bytecode_with_fixed_arg_1 (int _num, int _bc1, int _bc2, int _arg): bytecode_superoperator (_num, _bc1, _bc2, _arg) @@ -332,8 +358,8 @@ bytecode_binary bc37 (37, "STORE_OUTER_TEMP"); bytecode_unary bc38 (38, "STORE_LIT_VARIABLE"); bytecode_unary bc39 (39, "STORE_RECEIVER_VARIABLE"); -bytecode_unary bc40 (40, "JUMP_BACK"); -bytecode_unary bc41 (41, "JUMP"); +bytecode_jump bc40 (40, "JUMP_BACK"); +bytecode_jump bc41 (41, "JUMP"); bytecode_unary bc42 (42, "POP_JUMP_TRUE"); bytecode_unary bc43 (43, "POP_JUMP_FALSE"); bytecode_unary bc44 (44, "PUSH_INTEGER"); diff -rNu smalltalk-3.0.3/tests/compiler.ok smalltalk-3.0.4/tests/compiler.ok --- smalltalk-3.0.3/tests/compiler.ok 2008-04-10 11:11:00.000000000 +0200 +++ smalltalk-3.0.4/tests/compiler.ok 2008-07-29 11:27:37.000000000 +0200 @@ -24,3 +24,40 @@ Execution begins... error: did not understand #gotcha returned value is nil + +Execution begins... +returned value is 'nineteen' + +Execution begins... +returned value is 0 + +Execution begins... +returned value is 0 + +Execution begins... +returned value is 0 + +Execution begins... +returned value is 0 + +Execution begins... +returned value is 0.00000 + +Execution begins... +returned value is '-123.000s3' + +Execution begins... +a Smalltalk string:1: parse error, expected positive numeric literal +returned value is CompiledMethod new: 6 "<0>" + +Execution begins... +a Smalltalk string:1: parse error, expected positive numeric literal +returned value is CompiledMethod new: 6 "<0>" + +Execution begins... +a Smalltalk string:1: parse error, expected positive numeric literal +returned value is CompiledMethod new: 6 "<0>" + +Execution begins... +a Smalltalk string:1: parse error, expected positive numeric literal +returned value is CompiledMethod new: 6 "<0>" diff -rNu smalltalk-3.0.3/tests/compiler.st smalltalk-3.0.4/tests/compiler.st --- smalltalk-3.0.3/tests/compiler.st 2008-04-10 11:11:00.000000000 +0200 +++ smalltalk-3.0.4/tests/compiler.st 2008-07-29 11:27:37.000000000 +0200 @@ -133,3 +133,68 @@ Object compile: 'gotcha [ "shouldn''t compile!" ^a ]' ] Eval [ nil gotcha ] + +"Regression test for a compiler bug. Check that jump threading is + performed correctly (or not performed at all) if the threaded jump + requires extension bytes and the original one had none." + +Number extend [ + inWords [ + | tens part1 part2 | + + ((self \\ 100) < 20 and: [(self \\ 100) > 10]) ifTrue: [ + part1 := ''. + ((self \\ 100) = 19) ifTrue: [ part2 := 'nineteen'. ]. + ] ifFalse: [ + ((self \\ 10) = 0) ifTrue: [ + part1 := ''. ]. + ((self \\ 10) = 1) ifTrue: [ + part1 := 'one'. ]. + ((self \\ 10) = 2) ifTrue: [ + part1 := 'two'. ]. + ((self \\ 10) = 3) ifTrue: [ + part1 := 'three'. ]. + ((self \\ 10) = 4) ifTrue: [ + part1 := 'four'. ]. + ((self \\ 10) = 5) ifTrue: [ + part1 := 'five'. ]. + ((self \\ 10) = 6) ifTrue: [ + part1 := 'six'. ]. + ((self \\ 10) = 7) ifTrue: [ + part1 := 'seven'. ]. + ((self \\ 10) = 8) ifTrue: [ + part1 := 'eight'. ]. + ((self \\ 10) = 9) ifTrue: [ + part1 := 'nine'. ]. + + tens := tens - (tens \\ 10). + ((tens \\ 100) = 10) ifTrue: [ part2 := 'ten'. ]. + ((tens \\ 100) = 20) ifTrue: [ part2 := 'twenty'. ]. + ((tens \\ 100) = 30) ifTrue: [ part2 := 'thirty'. ]. + ((tens \\ 100) = 40) ifTrue: [ part2 := 'forty'. ]. + ((tens \\ 100) = 50) ifTrue: [ part2 := 'fifty'. ]. + ((tens \\ 100) = 60) ifTrue: [ part2 := 'sixty'. ]. + ((tens \\ 100) = 70) ifTrue: [ part2 := 'seventy'. ]. + ((tens \\ 100) = 80) ifTrue: [ part2 := 'eighty'. ]. + ((tens \\ 100) = 90) ifTrue: [ part2 := 'ninety'. ]. + ]. + + ^part2, part1 + ] +] + +Eval [ 19 inWords ] + +"test the limited support for unary minus in literals" +Eval [ 2-2 ] +Eval [ -2 + 2 ] +Eval [ -16r33 + 16r33 ] "Blue Book actually says 16r-33" +Eval [ -12345678901234567890123 + 12345678901234567890123 ] +Eval [ -123.0 + 123.0 ] +Eval [ -123s3 printString ] + +"test for errors -- we still fail on -16r-0, but that's insane..." +Eval [ Object compile: 'a [ -16r-33 ]' ] +Eval [ Object compile: 'a [ -16r-33.0 ]' ] +Eval [ Object compile: 'a [ -16r-33s3 ]' ] +Eval [ Object compile: 'a [ -16r-12345678901234567890123 ]' ] diff -rNu smalltalk-3.0.3/tests/exceptions.ok smalltalk-3.0.4/tests/exceptions.ok --- smalltalk-3.0.3/tests/exceptions.ok 2008-04-10 11:11:00.000000000 +0200 +++ smalltalk-3.0.4/tests/exceptions.ok 2008-07-25 17:10:38.000000000 +0200 @@ -19,6 +19,11 @@ Execution begins... +testPass (2)...passing...ok +returned value is TextCollector new "<0>" + +Execution begins... + testEnsure... error: Ignore this error passed returned value is nil diff -rNu smalltalk-3.0.3/tests/exceptions.st smalltalk-3.0.4/tests/exceptions.st --- smalltalk-3.0.3/tests/exceptions.st 2008-04-10 11:11:00.000000000 +0200 +++ smalltalk-3.0.4/tests/exceptions.st 2008-07-25 17:10:38.000000000 +0200 @@ -76,6 +76,18 @@ ] Eval [ + "Test that passing disables all exception handlers in the #on:do: snippet." + + Transcript cr; show: 'testPass (2)...'. + [[self error: 'abc'] + on: Exception do: [ :ex | Transcript show: 'failed' ] + on: Error do: [ :ex | Transcript show: 'passing...'. ex pass ]] + on: Error do: [ :ex | Transcript show: 'ok' ]. + + Transcript cr +] + +Eval [ [ Transcript cr; show: 'testEnsure...'. self error: ' Ignore this error'] ensure: [Transcript show: 'passed'; cr] diff -rNu smalltalk-3.0.3/tests/package.m4 smalltalk-3.0.4/tests/package.m4 --- smalltalk-3.0.3/tests/package.m4 2008-05-14 14:53:39.000000000 +0200 +++ smalltalk-3.0.4/tests/package.m4 2008-08-09 15:32:07.000000000 +0200 @@ -1,6 +1,6 @@ # Signature of the current package. m4_define([AT_PACKAGE_NAME], [GNU Smalltalk]) m4_define([AT_PACKAGE_TARNAME], [smalltalk]) -m4_define([AT_PACKAGE_VERSION], [3.0.3]) -m4_define([AT_PACKAGE_STRING], [GNU Smalltalk 3.0.3]) +m4_define([AT_PACKAGE_VERSION], [3.0.4]) +m4_define([AT_PACKAGE_STRING], [GNU Smalltalk 3.0.4]) m4_define([AT_PACKAGE_BUGREPORT], [help-smalltalk@gnu.org]) diff -rNu smalltalk-3.0.3/tests/strings.ok smalltalk-3.0.4/tests/strings.ok --- smalltalk-3.0.3/tests/strings.ok 2008-04-10 11:11:00.000000000 +0200 +++ smalltalk-3.0.4/tests/strings.ok 2008-08-01 16:57:15.000000000 +0200 @@ -23,6 +23,12 @@ returned value is 'Quem' Execution begins... +$a->nil +$b->nil +$c->nil +returned value is ReadStream new "<0>" + +Execution begins... 'should be false 'false 'should be false 'false 'should be true 'true diff -rNu smalltalk-3.0.3/tests/strings.st smalltalk-3.0.4/tests/strings.st --- smalltalk-3.0.3/tests/strings.st 2008-04-10 11:11:00.000000000 +0200 +++ smalltalk-3.0.4/tests/strings.st 2008-08-01 16:57:15.000000000 +0200 @@ -54,6 +54,11 @@ Eval [ 'quem' strTest ] +"This was a bug introduced in 2.3.6." +Eval [ + 'abc' readStream do: [ :each | (each->'' readStream next) printNl ] +] + Eval [ 'should be false ' print. ('###' match: 'quem') printNl. 'should be false ' print. ('###' match: 'bo') printNl. diff -rNu smalltalk-3.0.3/tests/testsuite smalltalk-3.0.4/tests/testsuite --- smalltalk-3.0.3/tests/testsuite 2008-05-14 14:53:48.000000000 +0200 +++ smalltalk-3.0.4/tests/testsuite 2008-08-09 15:32:21.000000000 +0200 @@ -967,7 +967,7 @@ # List of tests. if $at_list_p; then cat <<_ATEOF -GNU Smalltalk 3.0.3 test suite test groups: +GNU Smalltalk 3.0.4 test suite test groups: NUM: FILE-NAME:LINE TEST-GROUP-NAME KEYWORDS @@ -991,7 +991,7 @@ exit 0 fi if $at_version_p; then - echo "$as_me (GNU Smalltalk 3.0.3)" + echo "$as_me (GNU Smalltalk 3.0.4)" cat <<\_ACEOF Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software @@ -1075,13 +1075,13 @@ # Banners and logs. cat <<\_ASBOX ## ------------------------------- ## -## GNU Smalltalk 3.0.3 test suite. ## +## GNU Smalltalk 3.0.4 test suite. ## ## ------------------------------- ## _ASBOX { cat <<\_ASBOX ## ------------------------------- ## -## GNU Smalltalk 3.0.3 test suite. ## +## GNU Smalltalk 3.0.4 test suite. ## ## ------------------------------- ## _ASBOX echo @@ -9722,7 +9722,7 @@ echo "Please send \`${at_testdir+${at_testdir}/}$as_me.log' and all information you think might help:" echo echo " To: " - echo " Subject: [GNU Smalltalk 3.0.3] $as_me:$at_fail_list${at_fail_list:+ failed${at_xpass_list:+,}}$at_xpass_list${at_xpass_list:+ passed unexpectedly}" + echo " Subject: [GNU Smalltalk 3.0.4] $as_me:$at_fail_list${at_fail_list:+ failed${at_xpass_list:+,}}$at_xpass_list${at_xpass_list:+ passed unexpectedly}" echo if test $at_debug_p = false; then echo