diff -rNU3 smalltalk-2.1.6/NEWS smalltalk-2.1.7/NEWS --- smalltalk-2.1.6/NEWS 2003-12-17 10:11:17.000000000 +0100 +++ smalltalk-2.1.7/NEWS 2003-12-17 14:48:01.000000000 +0100 @@ -1,5 +1,12 @@ List of user-visible changes in GNU Smalltalk +NEWS FROM 2.1.6 TO 2.1.7 + +o Fix packaging problem + + +----------------------------------------------------------------------------- + NEWS FROM 2.1.5 TO 2.1.6 o DLD can open the C library. diff -rNU3 smalltalk-2.1.6/configure smalltalk-2.1.7/configure --- smalltalk-2.1.6/configure 2003-12-13 10:38:54.000000000 +0100 +++ smalltalk-2.1.7/configure 2003-12-17 14:49:17.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.58 for GNU Smalltalk 2.1.6. +# Generated by GNU Autoconf 2.59a for GNU Smalltalk 2.1.7. # # Report bugs to . # @@ -23,6 +23,28 @@ fi DUALCASE=1; export DUALCASE # for MKS sh + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -31,6 +53,205 @@ fi +# Find who we are. Look in the path if we contain no path at all +# relative or not. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } +fi + +if { $SHELL <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +func_return () { + (exit $1) +} + +func_success () { + func_return 0 +} + +func_failure () { + func_return 1 +} + +func_ret_success () { + return 0 +} + +func_ret_failure () { + return 1 +} + +exitcode=0 +if func_success; then + : +else + + exitcode=1 + echo func_failure succeeded. + +fi + +if func_failure; then + + exitcode=1 + echo func_success failed. + +fi + +if func_ret_success; then + : +else + + exitcode=1 + echo func_ret_success failed. + +fi + +if func_ret_failure; then + + exitcode=1 + echo func_ret_failure succeeded. + +fi + +{ (exit $exitcode); exit $exitcode; } +_ASEOF +}; then + : +else + + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if { $as_dir/$as_base <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +func_return () { + (exit $1) +} + +func_success () { + func_return 0 +} + +func_failure () { + func_return 1 +} + +func_ret_success () { + return 0 +} + +func_ret_failure () { + return 1 +} + +exitcode=0 +if func_success; then + : +else + + exitcode=1 + echo func_failure succeeded. + +fi + +if func_failure; then + + exitcode=1 + echo func_success failed. + +fi + +if func_ret_success; then + : +else + + exitcode=1 + echo func_ret_success failed. + +fi + +if func_ret_failure; then + + exitcode=1 + echo func_ret_failure succeeded. + +fi + +{ (exit $exitcode); exit $exitcode; } +_ASEOF +}; then + + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + +fi +;; + esac + done +done +;; + *) + +echo Found no shell that has working shell functions. +echo +echo Please tell autoconf@gnu.org about your system. +;; + esac + +fi + + # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' @@ -77,83 +298,12 @@ s/.*/./; q'` -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x$as_lineno_3" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a @@ -419,8 +569,8 @@ # Identity of this package. PACKAGE_NAME='GNU Smalltalk' PACKAGE_TARNAME='smalltalk' -PACKAGE_VERSION='2.1.6' -PACKAGE_STRING='GNU Smalltalk 2.1.6' +PACKAGE_VERSION='2.1.7' +PACKAGE_STRING='GNU Smalltalk 2.1.7' PACKAGE_BUGREPORT='help-smalltalk@gnu.org' ac_unique_file="main.c" @@ -940,7 +1090,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 2.1.6 to adapt to many kinds of systems. +\`configure' configures GNU Smalltalk 2.1.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1006,7 +1156,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Smalltalk 2.1.6:";; + short | recursive ) echo "Configuration of GNU Smalltalk 2.1.7:";; esac cat <<\_ACEOF @@ -1103,6 +1253,9 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) @@ -1162,8 +1315,8 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -GNU Smalltalk configure 2.1.6 -generated by GNU Autoconf 2.58 +GNU Smalltalk configure 2.1.7 +generated by GNU Autoconf 2.59a Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation @@ -1176,8 +1329,8 @@ 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 2.1.6, which was -generated by GNU Autoconf 2.58. Invocation command line was +It was created by GNU Smalltalk $as_me 2.1.7, which was +generated by GNU Autoconf 2.59a. Invocation command line was $ $0 $@ @@ -1365,7 +1518,9 @@ # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +# NextStep 3.3 (patch 3) loses unless the first echo outputs at least 14 bytes. +ac_space=' ' +echo "$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space" >confdefs.h # Predefined preprocessor variables. @@ -1856,7 +2011,7 @@ # Define the identity of the package. PACKAGE='smalltalk' - VERSION='2.1.6' + VERSION='2.1.7' cat >>confdefs.h <<_ACEOF @@ -5806,7 +5961,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 5809 "configure"' > conftest.$ac_ext + echo '#line 5964 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -7253,11 +7408,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7256: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7411: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7260: \$? = $ac_status" >&5 + echo "$as_me:7415: \$? = $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 @@ -7486,11 +7641,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7489: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7644: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7493: \$? = $ac_status" >&5 + echo "$as_me:7648: \$? = $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 @@ -7553,11 +7708,11 @@ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7556: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7711: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7560: \$? = $ac_status" >&5 + echo "$as_me:7715: \$? = $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 @@ -9719,7 +9874,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 <conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset @@ -22120,6 +22297,202 @@ fi +# Find who we are. Look in the path if we contain no path at all +# relative or not. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } +fi + +if { $SHELL <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +func_return () { + (exit $1) +} + +func_success () { + func_return 0 +} + +func_failure () { + func_return 1 +} + +func_ret_success () { + return 0 +} + +func_ret_failure () { + return 1 +} + +exitcode=0 +if func_success; then + : +else + + exitcode=1 + echo func_failure succeeded. + +fi + +if func_failure; then + + exitcode=1 + echo func_success failed. + +fi + +if func_ret_success; then + : +else + + exitcode=1 + echo func_ret_success failed. + +fi + +if func_ret_failure; then + + exitcode=1 + echo func_ret_failure succeeded. + +fi + +{ (exit $exitcode); exit $exitcode; } +_ASEOF +}; then + : +else + + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if { $as_dir/$as_base <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +func_return () { + (exit $1) +} + +func_success () { + func_return 0 +} + +func_failure () { + func_return 1 +} + +func_ret_success () { + return 0 +} + +func_ret_failure () { + return 1 +} + +exitcode=0 +if func_success; then + : +else + + exitcode=1 + echo func_failure succeeded. + +fi + +if func_failure; then + + exitcode=1 + echo func_success failed. + +fi + +if func_ret_success; then + : +else + + exitcode=1 + echo func_ret_success failed. + +fi + +if func_ret_failure; then + + exitcode=1 + echo func_ret_failure succeeded. + +fi + +{ (exit $exitcode); exit $exitcode; } +_ASEOF +}; then + + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + +fi +;; + esac + done +done +;; + *) + ;; + esac + +fi + + # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' @@ -22166,84 +22539,12 @@ s/.*/./; q'` -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x$as_lineno_3" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a @@ -22347,8 +22648,8 @@ } >&5 cat >&5 <<_CSEOF -This file was extended by GNU Smalltalk $as_me 2.1.6, which was -generated by GNU Autoconf 2.58. Invocation command line was +This file was extended by GNU Smalltalk $as_me 2.1.7, which was +generated by GNU Autoconf 2.59a. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -22413,8 +22714,8 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -GNU Smalltalk config.status 2.1.6 -configured by $0, generated by GNU Autoconf 2.58, +GNU Smalltalk config.status 2.1.7 +configured by $0, generated by GNU Autoconf 2.59a, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. @@ -22881,6 +23182,9 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) @@ -23329,6 +23633,9 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dest_dir";; *) @@ -23451,6 +23758,9 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) @@ -23714,6 +24024,9 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) @@ -23786,7 +24099,7 @@ { (exit 1); exit 1; }; } fi - cd $ac_popdir + cd "$ac_popdir" done fi diff -rNU3 smalltalk-2.1.6/configure.ac smalltalk-2.1.7/configure.ac --- smalltalk-2.1.6/configure.ac 2003-12-13 10:38:14.000000000 +0100 +++ smalltalk-2.1.7/configure.ac 2003-12-17 14:47:30.000000000 +0100 @@ -7,7 +7,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.52) -AC_INIT([GNU Smalltalk], 2.1.6, help-smalltalk@gnu.org, smalltalk) +AC_INIT([GNU Smalltalk], 2.1.7, help-smalltalk@gnu.org, smalltalk) MAINTAINER="bonzini@gnu.org" dnl CURRENT:REVISION:AGE means this is the REVISION-th version of diff -rNU3 smalltalk-2.1.6/doc/gst-base.info smalltalk-2.1.7/doc/gst-base.info --- smalltalk-2.1.6/doc/gst-base.info 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info 2003-12-17 14:58:53.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. +This is gst-base.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-base-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Base classes: (gst-base). The GNU Smalltalk base classes. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -25,1049 +25,1036 @@ with its equivalent in the printed manual, constitutes the Title Page.  Indirect: -gst-base.info-1: 995 -gst-base.info-2: 50961 -gst-base.info-3: 100832 -gst-base.info-4: 149823 -gst-base.info-5: 199388 -gst-base.info-6: 249196 -gst-base.info-7: 298958 -gst-base.info-8: 348887 -gst-base.info-9: 398869 -gst-base.info-10: 448021 -gst-base.info-11: 497928 -gst-base.info-12: 547805 -gst-base.info-13: 597170 -gst-base.info-14: 646844 -gst-base.info-15: 667507 -gst-base.info-16: 886236 +gst-base.info-1: 1001 +gst-base.info-2: 300943 +gst-base.info-3: 600738  Tag Table: (Indirect) -Node: Top995 -Node: Base classes2159 -Node: AbstractNamespace11464 -Node: AbstractNamespace class-instance creation12211 -Node: AbstractNamespace-accessing12638 -Node: AbstractNamespace-basic & copying13864 -Node: AbstractNamespace-copying14406 -Node: AbstractNamespace-namespace hierarchy14850 -Node: AbstractNamespace-overrides for superspaces17516 -Node: AbstractNamespace-printing19234 -Node: AbstractNamespace-testing19807 -Node: AlternativeObjectProxy20046 -Node: AlternativeObjectProxy class-instance creation20780 -Node: AlternativeObjectProxy-accessing21713 -Node: ArithmeticError22265 -Node: ArithmeticError-description22716 -Node: Array22922 -Node: Array-mutating objects23553 -Node: Array-printing23853 -Node: Array-testing24072 -Node: ArrayedCollection24213 -Node: ArrayedCollection class-instance creation25002 -Node: ArrayedCollection-basic26124 -Node: ArrayedCollection-built ins27023 -Node: ArrayedCollection-copying Collections27287 -Node: ArrayedCollection-enumerating the elements of a collection29039 -Node: ArrayedCollection-storing30186 -Node: Association30471 -Node: Association class-basic31148 -Node: Association-accessing31387 -Node: Association-finalization31995 -Node: Association-printing32216 -Node: Association-storing32464 -Node: Association-testing32718 -Node: Autoload33063 -Node: Autoload class-instance creation33733 -Node: Autoload-accessing34237 -Node: AutoloadClass34463 -Node: AutoloadClass-accessing34988 -Node: Bag35944 -Node: Bag class-basic36649 -Node: Bag-adding36906 -Node: Bag-enumerating the elements of a collection37387 -Node: Bag-extracting items37745 -Node: Bag-printing38025 -Node: Bag-removing38230 -Node: Bag-storing38540 -Node: Bag-testing collections38758 -Node: Behavior39244 -Node: Behavior-accessing class hierarchy40833 -Node: Behavior-accessing instances and variables41560 -Node: Behavior-accessing the methodDictionary42847 -Node: Behavior-built ins43928 -Node: Behavior-compilation (alternative)46117 -Node: Behavior-compiling methods46938 -Node: Behavior-creating a class hierarchy47399 -Node: Behavior-enumerating47836 -Node: Behavior-evaluating48890 -Node: Behavior-instance creation50181 -Node: Behavior-instance variables50961 -Node: Behavior-method dictionary51393 -Node: Behavior-pluggable behavior (not yet implemented)54831 -Node: Behavior-printing hierarchy55955 -Node: Behavior-support for lightweight classes56549 -Node: Behavior-testing functionality57589 -Node: Behavior-testing the class hierarchy57858 -Node: Behavior-testing the form of the instances58381 -Node: Behavior-testing the method dictionary59509 -Node: BindingDictionary60896 -Node: BindingDictionary-accessing61743 -Node: BindingDictionary-copying63625 -Node: BindingDictionary-forward declarations64158 -Node: BindingDictionary-printing64764 -Node: BindingDictionary-testing65158 -Node: BlockClosure65373 -Node: BlockClosure class-instance creation66596 -Node: BlockClosure class-testing67163 -Node: BlockClosure-accessing67457 -Node: BlockClosure-built ins69045 -Node: BlockClosure-control structures69812 -Node: BlockClosure-exception handling70479 -Node: BlockClosure-multiple process72481 -Node: BlockClosure-overriding73924 -Node: BlockClosure-testing74192 -Node: BlockClosure-unwind protection74452 -Node: BlockContext75921 -Node: BlockContext-accessing76701 -Node: BlockContext-printing78215 -Node: Boolean78440 -Node: Boolean class-testing79191 -Node: Boolean-basic79494 -Node: Boolean-C hacks80776 -Node: Boolean-overriding81024 -Node: Boolean-storing81253 -Node: ByteArray81468 -Node: ByteArray-built ins82009 -Node: ByteArray-converting83292 -Node: ByteArray-more advanced accessing83570 -Node: ByteStream90074 -Node: ByteStream-basic90453 -Node: CAggregate91729 -Node: CAggregate class-accessing92024 -Node: CAggregate-accessing92300 -Node: CallinProcess92524 -Node: CArray93042 -Node: CArray-accessing93285 -Node: CArrayCType93478 -Node: CArrayCType class-instance creation93779 -Node: CArrayCType-accessing94399 -Node: CBoolean94763 -Node: CBoolean-accessing95060 -Node: CByte95377 -Node: CByte class-conversion95759 -Node: CByte-accessing96078 -Node: CChar96516 -Node: CChar class-accessing96777 -Node: CChar-accessing97127 -Node: CCompound97430 -Node: CCompound class-instance creation97772 -Node: CCompound class-subclass creation98131 -Node: CCompound-instance creation100221 -Node: CDouble100560 -Node: CDouble class-accessing100832 -Node: CDouble-accessing101192 -Node: CFloat101505 -Node: CFloat class-accessing101783 -Node: CFloat-accessing102138 -Node: CFunctionDescriptor102446 -Node: CFunctionDescriptor class-instance creation103221 -Node: CFunctionDescriptor class-testing103569 -Node: CFunctionDescriptor-accessing104066 -Node: CFunctionDescriptor-calling104684 -Node: CFunctionDescriptor-printing106624 -Node: Character106883 -Node: Character class-built ins107852 -Node: Character class-constants108624 -Node: Character class-initializing lookup tables109418 -Node: Character class-instance creation110054 -Node: Character class-testing110412 -Node: Character-built ins110771 -Node: Character-coercion methods111546 -Node: Character-comparing112110 -Node: Character-converting112743 -Node: Character-printing113046 -Node: Character-storing113420 -Node: Character-testing113659 -Node: Character-testing functionality114295 -Node: CharacterArray114527 -Node: CharacterArray class-basic115268 -Node: CharacterArray-basic115658 -Node: CharacterArray-built ins116335 -Node: CharacterArray-comparing116750 -Node: CharacterArray-converting118960 -Node: CharacterArray-printing120317 -Node: CharacterArray-storing120936 -Node: CharacterArray-string processing121215 -Node: CharacterArray-testing functionality123754 -Node: CInt124000 -Node: CInt class-accessing124261 -Node: CInt-accessing124586 -Node: Class124904 -Node: Class-accessing instances and variables125750 -Node: Class-filing127262 -Node: Class-instance creation127702 -Node: Class-instance creation - alternative129907 -Node: Class-printing132072 -Node: Class-saving and loading132479 -Node: Class-testing133873 -Node: Class-testing functionality134112 -Node: ClassDescription134329 -Node: ClassDescription-compiling134991 -Node: ClassDescription-conversion135819 -Node: ClassDescription-copying136272 -Node: ClassDescription-filing137469 -Node: ClassDescription-organization of messages and classes138291 -Node: ClassDescription-printing139591 -Node: CLong140340 -Node: CLong class-accessing140610 -Node: CLong-accessing140960 -Node: CObject141263 -Node: CObject class-conversion142113 -Node: CObject class-instance creation142456 -Node: CObject-accessing143054 -Node: CObject-C data access143489 -Node: CObject-conversion144093 -Node: CObject-finalization144826 -Node: CObject-pointer-like behavior145290 -Node: Collection147545 -Node: Collection class-instance creation148472 -Node: Collection-adding149476 -Node: Collection-converting149823 -Node: Collection-copying Collections150916 -Node: Collection-enumeration151454 -Node: Collection-finalization154479 -Node: Collection-printing154784 -Node: Collection-removing155127 -Node: Collection-storing155967 -Node: Collection-testing collections156224 -Node: CompiledBlock156863 -Node: CompiledBlock class-instance creation157361 -Node: CompiledBlock-accessing158097 -Node: CompiledBlock-basic159156 -Node: CompiledBlock-printing159865 -Node: CompiledBlock-saving and loading160132 -Node: CompiledCode160553 -Node: CompiledCode class-cache flushing161279 -Node: CompiledCode class-instance creation161635 -Node: CompiledCode-accessing162181 -Node: CompiledCode-basic163580 -Node: CompiledCode-copying164331 -Node: CompiledCode-debugging164556 -Node: CompiledCode-decoding bytecodes164815 -Node: CompiledCode-testing accesses165222 -Node: CompiledCode-translation166383 -Node: CompiledMethod166641 -Node: CompiledMethod class-instance creation167419 -Node: CompiledMethod class-lean images168056 -Node: CompiledMethod-accessing168377 -Node: CompiledMethod-basic169744 -Node: CompiledMethod-printing170508 -Node: CompiledMethod-saving and loading170849 -Node: CompiledMethod-testing171299 -Node: ContextPart171883 -Node: ContextPart class-exception handling172657 -Node: ContextPart-accessing173603 -Node: ContextPart-built ins176836 -Node: ContextPart-copying177522 -Node: ContextPart-debugging177875 -Node: ContextPart-enumerating178399 -Node: ContextPart-exception handling178784 -Node: ContextPart-printing179046 -Node: CoreException179409 -Node: CoreException class-instance creation180675 -Node: CoreException-accessing180931 -Node: CoreException-basic181865 -Node: CoreException-enumerating182120 -Node: CoreException-exception handling182778 -Node: CoreException-instance creation183429 -Node: CPtr183731 -Node: CPtr-accessing183964 -Node: CPtrCType184499 -Node: CPtrCType class-instance creation184783 -Node: CPtrCType-accessing185068 -Node: CScalar185529 -Node: CScalar class-instance creation185815 -Node: CScalar-accessing186274 -Node: CScalarCType186789 -Node: CScalarCType-accessing187077 -Node: CScalarCType-storing187405 -Node: CShort187627 -Node: CShort class-accessing187901 -Node: CShort-accessing188256 -Node: CSmalltalk188564 -Node: CSmalltalk class-accessing188849 -Node: CSmalltalk-accessing189224 -Node: CString189552 -Node: CString class-instance creation190359 -Node: CString-accessing190818 -Node: CStringCType191333 -Node: CStringCType-accessing191592 -Node: CStruct191793 -Node: CStruct class-subclass creation192043 -Node: CType192277 -Node: CType class-C instance creation193391 -Node: CType-accessing193647 -Node: CType-C instance creation194490 -Node: CType-storing195001 -Node: CUChar195198 -Node: CUChar class-getting info195463 -Node: CUChar-accessing195827 -Node: CUInt196138 -Node: CUInt class-accessing196397 -Node: CUInt-accessing196747 -Node: CULong197050 -Node: CULong class-accessing197313 -Node: CULong-accessing197668 -Node: CUnion197976 -Node: CUnion class-subclass creation198218 -Node: CUShort198448 -Node: CUShort class-accessing198715 -Node: CUShort-accessing199075 -Node: Date199388 -Node: Date class-basic200850 -Node: Date class-instance creation (ANSI)201964 -Node: Date class-instance creation (Blue Book)202440 -Node: Date-basic203746 -Node: Date-compatibility (non-ANSI)204206 -Node: Date-date computations204605 -Node: Date-printing206214 -Node: Date-storing206428 -Node: Date-testing206637 -Node: DateTime206942 -Node: DateTime class-information207576 -Node: DateTime class-instance creation207853 -Node: DateTime class-instance creation (non-ANSI)209140 -Node: DateTime-basic209628 -Node: DateTime-computations209961 -Node: DateTime-printing210639 -Node: DateTime-splitting in dates & times210891 -Node: DateTime-storing211476 -Node: DateTime-testing211727 -Node: DateTime-time zones212088 -Node: Delay213202 -Node: Delay class-general inquiries213965 -Node: Delay class-initialization214224 -Node: Delay class-instance creation214506 -Node: Delay-accessing214995 -Node: Delay-comparing215235 -Node: Delay-process delay215507 -Node: DelayedAdaptor215729 -Node: DelayedAdaptor-accessing216255 -Node: Dictionary216620 -Node: Dictionary class-instance creation217570 -Node: Dictionary-accessing217810 -Node: Dictionary-awful ST-80 compatibility hacks219467 -Node: Dictionary-dictionary enumerating219916 -Node: Dictionary-dictionary removing220990 -Node: Dictionary-dictionary testing221845 -Node: Dictionary-polymorphism hacks222505 -Node: Dictionary-printing222776 -Node: Dictionary-rehashing223126 -Node: Dictionary-storing223329 -Node: Dictionary-testing223575 -Node: DirectedMessage223835 -Node: DirectedMessage class-creating instances224401 -Node: DirectedMessage-accessing224820 -Node: DirectedMessage-basic225114 -Node: DirectedMessage-multiple process225524 -Node: DirectedMessage-saving and loading226108 -Node: Directory226532 -Node: Directory class-C functions227303 -Node: Directory class-file name management227604 -Node: Directory class-file operations228165 -Node: Directory class-reading system defaults228533 -Node: Directory-accessing229481 -Node: Directory-enumerating230343 -Node: DLD231085 -Node: DLD class-C functions231755 -Node: DLD class-dynamic linking232132 -Node: DumperProxy233464 -Node: DumperProxy class-accessing233990 -Node: DumperProxy class-instance creation234441 -Node: DumperProxy-saving and restoring234932 -Node: Duration235333 -Node: Duration class-instance creation235734 -Node: Duration class-instance creation (non ANSI)236220 -Node: Duration-arithmetics236685 -Node: Error237859 -Node: Error-exception description238174 -Node: Exception238501 -Node: Exception class-comparison239629 -Node: Exception class-creating ExceptionCollections240079 -Node: Exception class-initialization240489 -Node: Exception class-instance creation240857 -Node: Exception class-interoperability with TrappableEvents241427 -Node: Exception-comparison242035 -Node: Exception-exception description242469 -Node: Exception-exception signaling242898 -Node: ExceptionSet243277 -Node: ExceptionSet class-instance creation243842 -Node: ExceptionSet-enumerating244093 -Node: False244643 -Node: False-basic245032 -Node: False-C hacks246012 -Node: False-printing246178 -Node: File246365 -Node: File class-C functions247188 -Node: File class-file name management247455 -Node: File class-file operations248582 -Node: File class-instance creation249196 -Node: File class-reading system defaults249684 -Node: File class-testing249957 -Node: File-accessing250595 -Node: File-file name management251681 -Node: File-file operations252453 -Node: File-testing253411 -Node: FileDescriptor254328 -Node: FileDescriptor class-initialization255479 -Node: FileDescriptor class-instance creation255803 -Node: FileDescriptor-accessing261822 -Node: FileDescriptor-basic262968 -Node: FileDescriptor-built ins264199 -Node: FileDescriptor-class type methods265397 -Node: FileDescriptor-initialize-release265813 -Node: FileDescriptor-low-level access266335 -Node: FileDescriptor-overriding inherited methods267407 -Node: FileDescriptor-printing268194 -Node: FileDescriptor-testing268478 -Node: FileSegment268686 -Node: FileSegment class-basic269295 -Node: FileSegment class-installing269638 -Node: FileSegment-basic270010 -Node: FileSegment-equality270859 -Node: FileStream271128 -Node: FileStream class-file-in271834 -Node: FileStream class-standard streams275356 -Node: FileStream-basic276082 -Node: FileStream-buffering277020 -Node: FileStream-filing in277825 -Node: FileStream-overriding inherited methods278740 -Node: FileStream-testing279599 -Node: Float279807 -Node: Float class-byte-order dependancies280600 -Node: Float class-characterization280866 -Node: Float-arithmetic281874 -Node: Float-basic282192 -Node: Float-built ins282373 -Node: Float-coercing283300 -Node: Float-printing283922 -Node: Float-storing284132 -Node: Float-testing284339 -Node: Float-testing functionality285092 -Node: FloatD285274 -Node: FloatD class-byte-order dependancies285933 -Node: FloatD class-characterization286204 -Node: FloatD class-converting287464 -Node: FloatD-built ins287706 -Node: FloatD-coercing288929 -Node: FloatE289318 -Node: FloatE class-byte-order dependancies289978 -Node: FloatE class-characterization290249 -Node: FloatE class-converting291797 -Node: FloatE-built ins292039 -Node: FloatE-coercing293262 -Node: FloatQ293651 -Node: FloatQ class-byte-order dependancies294313 -Node: FloatQ class-characterization294584 -Node: FloatQ class-converting296132 -Node: FloatQ-built ins296374 -Node: FloatQ-coercing297597 -Node: Fraction297986 -Node: Fraction class-converting298728 -Node: Fraction class-instance creation298958 -Node: Fraction-accessing299329 -Node: Fraction-arithmetic299605 -Node: Fraction-coercing300315 -Node: Fraction-comparing300940 -Node: Fraction-converting301428 -Node: Fraction-optimized cases301915 -Node: Fraction-printing302335 -Node: Fraction-testing302651 -Node: Halt302842 -Node: Halt-description303128 -Node: HashedCollection303365 -Node: HashedCollection class-instance creation304216 -Node: HashedCollection-accessing304579 -Node: HashedCollection-builtins305145 -Node: HashedCollection-copying305908 -Node: HashedCollection-enumerating the elements of a collection306372 -Node: HashedCollection-rehashing306734 -Node: HashedCollection-removing307006 -Node: HashedCollection-saving and loading307399 -Node: HashedCollection-storing307899 -Node: HashedCollection-testing collections308212 -Node: HomedAssociation309143 -Node: HomedAssociation class-basic309703 -Node: HomedAssociation-accessing309991 -Node: HomedAssociation-finalization310343 -Node: HomedAssociation-storing310949 -Node: IdentityDictionary311204 -Node: IdentitySet311587 -Node: IdentitySet-testing311976 -Node: Integer312223 -Node: Integer class-converting313042 -Node: Integer-accessing313260 -Node: Integer-basic313485 -Node: Integer-bit operators313681 -Node: Integer-converting314953 -Node: Integer-extension315643 -Node: Integer-iterators315942 -Node: Integer-math methods316294 -Node: Integer-printing317091 -Node: Integer-storing318136 -Node: Integer-testing functionality318447 -Node: Interval318705 -Node: Interval class-instance creation319291 -Node: Interval-basic319879 -Node: Interval-printing320551 -Node: Interval-storing320777 -Node: Interval-testing321010 -Node: LargeArray321267 -Node: LargeArray-overridden321660 -Node: LargeArrayedCollection321838 -Node: LargeArrayedCollection class-instance creation322371 -Node: LargeArrayedCollection-accessing322716 -Node: LargeArrayedCollection-basic323206 -Node: LargeArraySubpart323593 -Node: LargeArraySubpart class-instance creation324462 -Node: LargeArraySubpart-accessing324857 -Node: LargeArraySubpart-comparing325798 -Node: LargeArraySubpart-modifying326806 -Node: LargeByteArray327554 -Node: LargeByteArray-overridden327967 -Node: LargeInteger328394 -Node: LargeInteger-arithmetic329180 -Node: LargeInteger-bit operations330143 -Node: LargeInteger-built-ins330731 -Node: LargeInteger-coercion331796 -Node: LargeInteger-disabled332218 -Node: LargeInteger-primitive operations332579 -Node: LargeInteger-testing333045 -Node: LargeNegativeInteger333671 -Node: LargeNegativeInteger-converting334363 -Node: LargeNegativeInteger-numeric testing334737 -Node: LargeNegativeInteger-reverting to LargePositiveInteger335258 -Node: LargePositiveInteger335810 -Node: LargePositiveInteger-arithmetic336677 -Node: LargePositiveInteger-converting337139 -Node: LargePositiveInteger-helper byte-level methods337682 -Node: LargePositiveInteger-numeric testing339405 -Node: LargePositiveInteger-primitive operations339927 -Node: LargeWordArray340607 -Node: LargeWordArray-overridden341027 -Node: LargeZeroInteger341312 -Node: LargeZeroInteger-accessing342130 -Node: LargeZeroInteger-arithmetic342381 -Node: LargeZeroInteger-numeric testing343297 -Node: LargeZeroInteger-printing343620 -Node: Link343904 -Node: Link class-instance creation344439 -Node: Link-basic344657 -Node: Link-iteration344896 -Node: LinkedList345343 -Node: LinkedList-accessing345941 -Node: LinkedList-adding346243 -Node: LinkedList-enumerating346962 -Node: LinkedList-testing347289 -Node: LookupKey347631 -Node: LookupKey class-basic348175 -Node: LookupKey-accessing348403 -Node: LookupKey-printing348654 -Node: LookupKey-storing348887 -Node: LookupKey-testing349129 -Node: LookupTable349549 -Node: LookupTable class-instance creation350313 -Node: LookupTable-accessing350559 -Node: LookupTable-copying351348 -Node: LookupTable-enumerating351652 -Node: LookupTable-hashing352029 -Node: LookupTable-rehashing352254 -Node: LookupTable-removing352463 -Node: LookupTable-storing352949 -Node: Magnitude353172 -Node: Magnitude-basic353616 -Node: Magnitude-misc methods354132 -Node: MappedCollection354532 -Node: MappedCollection class-instance creation355895 -Node: MappedCollection-basic356332 -Node: Memory357207 -Node: Memory class-accessing357755 -Node: Message361636 -Node: Message class-creating instances362274 -Node: Message-accessing362550 -Node: Message-basic362976 -Node: MessageNotUnderstood363287 -Node: MessageNotUnderstood-accessing363769 -Node: MessageNotUnderstood-description364092 -Node: Metaclass364357 -Node: Metaclass class-instance creation365344 -Node: Metaclass-accessing365613 -Node: Metaclass-basic366043 -Node: Metaclass-delegation367139 -Node: Metaclass-filing368523 -Node: Metaclass-printing368798 -Node: Metaclass-testing functionality369337 -Node: MethodContext369582 -Node: MethodContext-accessing370072 -Node: MethodContext-printing371330 -Node: MethodDictionary371560 -Node: MethodDictionary-adding372079 -Node: MethodDictionary-rehashing372312 -Node: MethodDictionary-removing372550 -Node: MethodInfo372946 -Node: MethodInfo-accessing373420 -Node: MethodInfo-equality374349 -Node: Namespace374626 -Node: Namespace class-accessing375256 -Node: Namespace class-disabling instance creation375643 -Node: Namespace class-initialization376023 -Node: Namespace-accessing376444 -Node: Namespace-namespace hierarchy376717 -Node: Namespace-overrides for superspaces377199 -Node: Namespace-printing378980 -Node: Namespace-testing379494 -Node: NetClients.URIResolver379659 -Node: NetClients.URIResolver class-api380102 -Node: NetClients.URIResolver class-instance creation381236 -Node: NetClients.URL381597 -Node: NetClients.URL class-encoding URLs382306 -Node: NetClients.URL class-instance creation382795 -Node: NetClients.URL-accessing383604 -Node: NetClients.URL-comparing386313 -Node: NetClients.URL-copying386823 -Node: NetClients.URL-initialize-release387344 -Node: NetClients.URL-printing387627 -Node: NetClients.URL-testing387905 -Node: NetClients.URL-utilities388665 -Node: Notification388959 -Node: Notification-exception description389400 -Node: NullProxy389846 -Node: NullProxy class-instance creation390446 -Node: NullProxy-accessing390701 -Node: NullValueHolder390937 -Node: NullValueHolder class-creating instances391514 -Node: NullValueHolder-accessing391780 -Node: Number392112 -Node: Number class-converting392996 -Node: Number class-testing393440 -Node: Number-arithmetic393692 -Node: Number-comparing395009 -Node: Number-converting395416 -Node: Number-copying396668 -Node: Number-error raising396967 -Node: Number-misc math397322 -Node: Number-point creation398869 -Node: Number-retrying399148 -Node: Number-shortcuts and iterators400935 -Node: Number-testing401784 -Node: Number-truncation and round off403202 -Node: Object403999 -Node: Object class-initialization404949 -Node: Object-built ins405625 -Node: Object-change and update413543 -Node: Object-class type methods414734 -Node: Object-conversion415537 -Node: Object-copying415768 -Node: Object-debugging416416 -Node: Object-dependents access416860 -Node: Object-error raising417548 -Node: Object-exception handling418225 -Node: Object-finalization418730 -Node: Object-printing419710 -Node: Object-relational operators421437 -Node: Object-saving and loading421783 -Node: Object-storing422768 -Node: Object-syntax shortcuts423357 -Node: Object-testing functionality423666 -Node: ObjectDumper425188 -Node: ObjectDumper class-establishing proxy classes426381 -Node: ObjectDumper class-instance creation427214 -Node: ObjectDumper class-shortcuts427611 -Node: ObjectDumper class-testing427989 -Node: ObjectDumper-accessing428417 -Node: ObjectDumper-loading/dumping objects428909 -Node: ObjectDumper-stream interface429333 -Node: ObjectMemory429699 -Node: ObjectMemory class-accessing430772 -Node: ObjectMemory class-builtins431023 -Node: ObjectMemory class-initialization434354 -Node: ObjectMemory class-saving the image434630 -Node: ObjectMemory-accessing434942 -Node: ObjectMemory-builtins439880 -Node: ObjectMemory-derived information440149 -Node: OrderedCollection441120 -Node: OrderedCollection class-instance creation441830 -Node: OrderedCollection-accessing442172 -Node: OrderedCollection-adding442623 -Node: OrderedCollection-removing444671 -Node: Package445309 -Node: Package-accessing445714 -Node: PackageLoader447463 -Node: PackageLoader class-accessing448021 -Node: PackageLoader class-loading449805 -Node: PackageLoader class-testing450792 -Node: PluggableAdaptor451067 -Node: PluggableAdaptor class-creating instances451695 -Node: PluggableAdaptor-accessing452774 -Node: PluggableProxy453059 -Node: PluggableProxy class-accessing453685 -Node: PluggableProxy-saving and restoring454119 -Node: Point454538 -Node: Point class-instance creation455265 -Node: Point-accessing455562 -Node: Point-arithmetic455980 -Node: Point-comparing456683 -Node: Point-converting457480 -Node: Point-point functions457983 -Node: Point-printing458915 -Node: Point-storing459133 -Node: Point-truncation and round off459365 -Node: PositionableStream459761 -Node: PositionableStream class-instance creation460668 -Node: PositionableStream-accessing-reading461177 -Node: PositionableStream-class type methods462332 -Node: PositionableStream-positioning462821 -Node: PositionableStream-testing463959 -Node: PositionableStream-truncating464425 -Node: Process464709 -Node: Process-accessing465277 -Node: Process-basic466775 -Node: Process-builtins468306 -Node: Process-printing469100 -Node: ProcessorScheduler469298 -Node: ProcessorScheduler class-instance creation469965 -Node: ProcessorScheduler-basic470263 -Node: ProcessorScheduler-built ins471829 -Node: ProcessorScheduler-idle tasks472515 -Node: ProcessorScheduler-printing473018 -Node: ProcessorScheduler-priorities473321 -Node: ProcessorScheduler-storing474971 -Node: ProcessorScheduler-timed invocation475296 -Node: Promise475851 -Node: Promise class-creating instances476423 -Node: Promise-accessing476670 -Node: Promise-initializing476994 -Node: Promise-printing477222 -Node: Random477413 -Node: Random class-instance creation477862 -Node: Random class-shortcuts478228 -Node: Random-basic478545 -Node: Random-testing478959 -Node: ReadStream479269 -Node: ReadStream class-instance creation479709 -Node: ReadStream-accessing-reading479984 -Node: ReadWriteStream480278 -Node: ReadWriteStream class-instance creation480764 -Node: ReadWriteStream-positioning481219 -Node: Rectangle481584 -Node: Rectangle class-instance creation482373 -Node: Rectangle-accessing482915 -Node: Rectangle-copying485313 -Node: Rectangle-printing485531 -Node: Rectangle-rectangle functions485857 -Node: Rectangle-testing487698 -Node: Rectangle-transforming488512 -Node: Rectangle-truncation and round off489136 -Node: RecursionLock489425 -Node: RecursionLock class-instance creation489825 -Node: RecursionLock-accessing490059 -Node: RecursionLock-mutual exclusion490656 -Node: RecursionLock-printing491015 -Node: RootNamespace491265 -Node: RootNamespace class-instance creation491814 -Node: RootNamespace-namespace hierarchy492147 -Node: RootNamespace-overrides for superspaces492578 -Node: RootNamespace-printing493193 -Node: RunArray493701 -Node: RunArray class-instance creation494662 -Node: RunArray-accessing494934 -Node: RunArray-adding495268 -Node: RunArray-basic496342 -Node: RunArray-copying496647 -Node: RunArray-enumerating497003 -Node: RunArray-removing497463 -Node: RunArray-searching497928 -Node: RunArray-testing498342 -Node: ScaledDecimal498585 -Node: ScaledDecimal class-constants499389 -Node: ScaledDecimal class-instance creation499639 -Node: ScaledDecimal-arithmetic500076 -Node: ScaledDecimal-coercion500795 -Node: ScaledDecimal-comparing501700 -Node: ScaledDecimal-constants502336 -Node: ScaledDecimal-printing502638 -Node: ScaledDecimal-storing503098 -Node: Semaphore503336 -Node: Semaphore class-instance creation503999 -Node: Semaphore-accessing504372 -Node: Semaphore-builtins504856 -Node: Semaphore-mutual exclusion506196 -Node: Semaphore-printing506530 -Node: SequenceableCollection506760 -Node: SequenceableCollection class-instance creation507462 -Node: SequenceableCollection-basic507877 -Node: SequenceableCollection-copying SequenceableCollections511299 -Node: SequenceableCollection-enumerating513569 -Node: SequenceableCollection-replacing items516761 -Node: SequenceableCollection-testing517708 -Node: Set518142 -Node: Set-arithmetic518562 -Node: Set-awful ST-80 compatibility hacks518891 -Node: Set-comparing519252 -Node: SharedQueue519647 -Node: SharedQueue class-instance creation520169 -Node: SharedQueue-accessing520538 -Node: Signal521040 -Node: Signal-accessing521665 -Node: Signal-exception handling522515 -Node: SingletonProxy525068 -Node: SingletonProxy class-accessing525672 -Node: SingletonProxy class-instance creation526037 -Node: SingletonProxy-saving and restoring526478 -Node: SmallInteger526905 -Node: SmallInteger class-getting limits527592 -Node: SmallInteger class-testing528078 -Node: SmallInteger-bit arithmetic528374 -Node: SmallInteger-built ins528652 -Node: SmallInteger-builtins530957 -Node: SmallInteger-coercion methods531708 -Node: SmallInteger-testing functionality532064 -Node: SortedCollection532297 -Node: SortedCollection class-hacking533429 -Node: SortedCollection class-instance creation533698 -Node: SortedCollection-basic534211 -Node: SortedCollection-copying534756 -Node: SortedCollection-disabled535063 -Node: SortedCollection-enumerating535917 -Node: SortedCollection-saving and loading536247 -Node: SortedCollection-searching536593 -Node: Stream537180 -Node: Stream-accessing-reading538122 -Node: Stream-accessing-writing539915 -Node: Stream-basic540470 -Node: Stream-character writing540653 -Node: Stream-enumerating541174 -Node: Stream-filing out541409 -Node: Stream-positioning541755 -Node: Stream-printing542463 -Node: Stream-providing consistent protocols543223 -Node: Stream-storing543582 -Node: Stream-testing543954 -Node: String544238 -Node: String class-basic544820 -Node: String class-instance creation545137 -Node: String-built ins545468 -Node: String-converting547460 -Node: String-storing547805 -Node: String-testing functionality548042 -Node: String-useful functionality548266 -Node: Symbol548552 -Node: Symbol class-built ins549378 -Node: Symbol class-instance creation549593 -Node: Symbol class-symbol table550732 -Node: Symbol-basic552141 -Node: Symbol-built ins552894 -Node: Symbol-converting553203 -Node: Symbol-misc553543 -Node: Symbol-storing553707 -Node: Symbol-testing554370 -Node: Symbol-testing functionality554638 -Node: SymLink554857 -Node: SymLink class-instance creation555406 -Node: SymLink-accessing555726 -Node: SymLink-iteration556061 -Node: SymLink-printing556276 -Node: SystemDictionary556476 -Node: SystemDictionary-basic557283 -Node: SystemDictionary-builtins557564 -Node: SystemDictionary-C functions558894 -Node: SystemDictionary-miscellaneous559400 -Node: SystemDictionary-printing559745 -Node: SystemDictionary-special accessing560164 -Node: SystemExceptions.AlreadyDefined560728 -Node: SystemExceptions.AlreadyDefined-accessing561242 -Node: SystemExceptions.ArgumentOutOfRange561494 -Node: SystemExceptions.ArgumentOutOfRange class-signaling562082 -Node: SystemExceptions.ArgumentOutOfRange-accessing562488 -Node: SystemExceptions.BadReturn563066 -Node: SystemExceptions.BadReturn-accessing563544 -Node: SystemExceptions.CInterfaceError563788 -Node: SystemExceptions.CInterfaceError-accessing564287 -Node: SystemExceptions.EmptyCollection564555 -Node: SystemExceptions.EmptyCollection-accessing565040 -Node: SystemExceptions.EndOfStream565308 -Node: SystemExceptions.EndOfStream class-signaling565797 -Node: SystemExceptions.EndOfStream-accessing566137 -Node: SystemExceptions.FileError566557 -Node: SystemExceptions.FileError-accessing567034 -Node: SystemExceptions.IndexOutOfRange567278 -Node: SystemExceptions.IndexOutOfRange class-signaling567862 -Node: SystemExceptions.IndexOutOfRange-accessing568228 -Node: SystemExceptions.InvalidArgument568742 -Node: SystemExceptions.InvalidArgument-accessing569237 -Node: SystemExceptions.InvalidProcessState569494 -Node: SystemExceptions.InvalidProcessState-accessing570023 -Node: SystemExceptions.InvalidSize570307 -Node: SystemExceptions.InvalidSize-accessing570772 -Node: SystemExceptions.InvalidValue571024 -Node: SystemExceptions.InvalidValue class-signaling571532 -Node: SystemExceptions.InvalidValue-accessing571981 -Node: SystemExceptions.MustBeBoolean572472 -Node: SystemExceptions.MutationError572892 -Node: SystemExceptions.MutationError-accessing573351 -Node: SystemExceptions.NoRunnableProcess573611 -Node: SystemExceptions.NoRunnableProcess-accessing574096 -Node: SystemExceptions.NotFound574372 -Node: SystemExceptions.NotFound class-accessing574886 -Node: SystemExceptions.NotFound-accessing575261 -Node: SystemExceptions.NotImplemented575551 -Node: SystemExceptions.NotImplemented-accessing576007 -Node: SystemExceptions.NotIndexable576271 -Node: SystemExceptions.NotIndexable-accessing576732 -Node: SystemExceptions.NotYetImplemented576988 -Node: SystemExceptions.NotYetImplemented-accessing577498 -Node: SystemExceptions.PrimitiveFailed577774 -Node: SystemExceptions.PrimitiveFailed-accessing578257 -Node: SystemExceptions.ProcessBeingTerminated578525 -Node: SystemExceptions.ProcessBeingTerminated-accessing578960 -Node: SystemExceptions.ProcessTerminated579256 -Node: SystemExceptions.ProcessTerminated-accessing579779 -Node: SystemExceptions.ReadOnlyObject580055 -Node: SystemExceptions.ReadOnlyObject-accessing580534 -Node: SystemExceptions.ShouldNotImplement580798 -Node: SystemExceptions.ShouldNotImplement-accessing581326 -Node: SystemExceptions.SubclassResponsibility581606 -Node: SystemExceptions.SubclassResponsibility-accessing582174 -Node: SystemExceptions.UserInterrupt582470 -Node: SystemExceptions.UserInterrupt-accessing582920 -Node: SystemExceptions.VMError583180 -Node: SystemExceptions.VMError-accessing583604 -Node: SystemExceptions.WrongArgumentCount583840 -Node: SystemExceptions.WrongArgumentCount-accessing584394 -Node: SystemExceptions.WrongClass584674 -Node: SystemExceptions.WrongClass class-signaling585290 -Node: SystemExceptions.WrongClass-accessing585946 -Node: SystemExceptions.WrongMessageSent586599 -Node: SystemExceptions.WrongMessageSent class-signaling587244 -Node: SystemExceptions.WrongMessageSent-accessing587661 -Node: TextCollector588250 -Node: TextCollector class-accessing588948 -Node: TextCollector-accessing589445 -Node: TextCollector-printing590244 -Node: TextCollector-set up590576 -Node: TextCollector-storing591139 -Node: Time591467 -Node: Time class-basic (UTC)592246 -Node: Time class-builtins592692 -Node: Time class-clocks593717 -Node: Time class-initialization594272 -Node: Time class-instance creation594616 -Node: Time-accessing (ANSI for DateAndTimes)595493 -Node: Time-accessing (non ANSI & for Durations)596009 -Node: Time-arithmetic596459 -Node: Time-comparing596885 -Node: TokenStream597170 -Node: TokenStream class-instance creation597978 -Node: TokenStream-basic598338 -Node: TokenStream-write methods598660 -Node: TrappableEvent598903 -Node: TrappableEvent-enumerating599479 -Node: TrappableEvent-instance creation600027 -Node: True600357 -Node: True-basic600735 -Node: True-C hacks601685 -Node: True-printing601845 -Node: UndefinedObject602027 -Node: UndefinedObject-basic602743 -Node: UndefinedObject-class creation603012 -Node: UndefinedObject-class creation - alternative605193 -Node: UndefinedObject-CObject interoperability607481 -Node: UndefinedObject-dependents access607815 -Node: UndefinedObject-printing608188 -Node: UndefinedObject-storing608468 -Node: UndefinedObject-testing608744 -Node: ValueAdaptor609580 -Node: ValueAdaptor class-creating instances610064 -Node: ValueAdaptor-accessing610352 -Node: ValueAdaptor-printing610759 -Node: ValueHolder610972 -Node: ValueHolder class-creating instances611587 -Node: ValueHolder-accessing611970 -Node: ValueHolder-initializing612263 -Node: VariableBinding612486 -Node: VariableBinding-printing613118 -Node: VariableBinding-saving and loading613433 -Node: VariableBinding-storing613890 -Node: VariableBinding-testing614178 -Node: VersionableObjectProxy614436 -Node: VersionableObjectProxy class-saving and restoring615332 -Node: VersionableObjectProxy-saving and restoring616356 -Node: VFS.ArchiveFileHandler616690 -Node: VFS.ArchiveFileHandler class-registering617607 -Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol618062 -Node: VFS.ArchiveFileHandler-directory operations619439 -Node: VFS.ArchiveFileHandler-file operations620281 -Node: VFS.ArchiveMemberHandler620568 -Node: VFS.ArchiveMemberHandler-accessing621296 -Node: VFS.ArchiveMemberHandler-directory operations622456 -Node: VFS.ArchiveMemberHandler-file operations623077 -Node: VFS.ArchiveMemberHandler-finalization623743 -Node: VFS.ArchiveMemberHandler-initializing624236 -Node: VFS.ArchiveMemberHandler-testing624770 -Node: VFS.DecodedFileHandler625656 -Node: VFS.DecodedFileHandler class-registering626197 -Node: VFS.DecodedFileHandler-files627344 -Node: VFS.ExternalArchiveFileHandler628039 -Node: VFS.ExternalArchiveFileHandler class-registering628870 -Node: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol629754 -Node: VFS.ExternalArchiveFileHandler-members631075 -Node: VFS.ExternalArchiveFileHandler-releasing631586 -Node: VFS.RealFileHandler631936 -Node: VFS.RealFileHandler class-C functions632679 -Node: VFS.RealFileHandler class-initialization632961 -Node: VFS.RealFileHandler-accessing633288 -Node: VFS.RealFileHandler-directory operations634478 -Node: VFS.RealFileHandler-file operations634974 -Node: VFS.RealFileHandler-testing635516 -Node: VFS.VFSHandler636260 -Node: VFS.VFSHandler class-initializing637033 -Node: VFS.VFSHandler class-instance creation637931 -Node: VFS.VFSHandler-accessing638274 -Node: VFS.VFSHandler-C functions639616 -Node: VFS.VFSHandler-directory operations640752 -Node: VFS.VFSHandler-file operations641341 -Node: VFS.VFSHandler-testing642115 -Node: Warning642956 -Node: Warning-exception description643275 -Node: WeakArray643479 -Node: WeakArray class-instance creation643972 -Node: WeakArray-accessing644296 -Node: WeakArray-conversion645944 -Node: WeakArray-loading646579 -Node: WeakIdentitySet646844 -Node: WeakKeyDictionary647306 -Node: WeakKeyDictionary-accessing647855 -Node: WeakKeyIdentityDictionary648356 -Node: WeakSet648884 -Node: WeakSet-accessing649340 -Node: WeakValueIdentityDictionary649838 -Node: WeakValueLookupTable650384 -Node: WeakValueLookupTable-hacks650992 -Node: WeakValueLookupTable-rehashing651549 -Node: WordArray651772 -Node: WriteStream652078 -Node: WriteStream class-instance creation652604 -Node: WriteStream-accessing653274 -Node: WriteStream-accessing-writing653528 -Node: WriteStream-positioning654119 -Node: ZeroDivide654329 -Node: ZeroDivide class-instance creation654822 -Node: ZeroDivide-accessing655202 -Node: ZeroDivide-description655455 -Node: Class index655670 -Node: Method index667507 -Node: Cross-reference886236 +Node: Top1001 +Node: Base classes2162 +Node: AbstractNamespace11467 +Node: AbstractNamespace class-instance creation12214 +Node: AbstractNamespace-accessing12641 +Node: AbstractNamespace-basic & copying13867 +Node: AbstractNamespace-copying14409 +Node: AbstractNamespace-namespace hierarchy14853 +Node: AbstractNamespace-overrides for superspaces17519 +Node: AbstractNamespace-printing19237 +Node: AbstractNamespace-testing19810 +Node: AlternativeObjectProxy20049 +Node: AlternativeObjectProxy class-instance creation20783 +Node: AlternativeObjectProxy-accessing21716 +Node: ArithmeticError22268 +Node: ArithmeticError-description22719 +Node: Array22925 +Node: Array-mutating objects23556 +Node: Array-printing23856 +Node: Array-testing24075 +Node: ArrayedCollection24216 +Node: ArrayedCollection class-instance creation25005 +Node: ArrayedCollection-basic26127 +Node: ArrayedCollection-built ins27026 +Node: ArrayedCollection-copying Collections27290 +Node: ArrayedCollection-enumerating the elements of a collection29042 +Node: ArrayedCollection-storing30189 +Node: Association30474 +Node: Association class-basic31151 +Node: Association-accessing31390 +Node: Association-finalization31998 +Node: Association-printing32219 +Node: Association-storing32467 +Node: Association-testing32721 +Node: Autoload33066 +Node: Autoload class-instance creation33736 +Node: Autoload-accessing34240 +Node: AutoloadClass34466 +Node: AutoloadClass-accessing34991 +Node: Bag35947 +Node: Bag class-basic36652 +Node: Bag-adding36909 +Node: Bag-enumerating the elements of a collection37390 +Node: Bag-extracting items37748 +Node: Bag-printing38028 +Node: Bag-removing38233 +Node: Bag-storing38543 +Node: Bag-testing collections38761 +Node: Behavior39247 +Node: Behavior-accessing class hierarchy40836 +Node: Behavior-accessing instances and variables41563 +Node: Behavior-accessing the methodDictionary42850 +Node: Behavior-built ins43931 +Node: Behavior-compilation (alternative)46120 +Node: Behavior-compiling methods46941 +Node: Behavior-creating a class hierarchy47402 +Node: Behavior-enumerating47839 +Node: Behavior-evaluating48893 +Node: Behavior-instance creation50184 +Node: Behavior-instance variables50964 +Node: Behavior-method dictionary51396 +Node: Behavior-pluggable behavior (not yet implemented)54834 +Node: Behavior-printing hierarchy55958 +Node: Behavior-support for lightweight classes56552 +Node: Behavior-testing functionality57592 +Node: Behavior-testing the class hierarchy57861 +Node: Behavior-testing the form of the instances58384 +Node: Behavior-testing the method dictionary59512 +Node: BindingDictionary60899 +Node: BindingDictionary-accessing61746 +Node: BindingDictionary-copying63628 +Node: BindingDictionary-forward declarations64161 +Node: BindingDictionary-printing64767 +Node: BindingDictionary-testing65161 +Node: BlockClosure65376 +Node: BlockClosure class-instance creation66599 +Node: BlockClosure class-testing67166 +Node: BlockClosure-accessing67460 +Node: BlockClosure-built ins69048 +Node: BlockClosure-control structures69815 +Node: BlockClosure-exception handling70482 +Node: BlockClosure-multiple process72484 +Node: BlockClosure-overriding73927 +Node: BlockClosure-testing74195 +Node: BlockClosure-unwind protection74455 +Node: BlockContext75924 +Node: BlockContext-accessing76704 +Node: BlockContext-printing78218 +Node: Boolean78443 +Node: Boolean class-testing79194 +Node: Boolean-basic79497 +Node: Boolean-C hacks80779 +Node: Boolean-overriding81027 +Node: Boolean-storing81256 +Node: ByteArray81471 +Node: ByteArray-built ins82012 +Node: ByteArray-converting83295 +Node: ByteArray-more advanced accessing83573 +Node: ByteStream90077 +Node: ByteStream-basic90456 +Node: CAggregate91732 +Node: CAggregate class-accessing92027 +Node: CAggregate-accessing92303 +Node: CallinProcess92527 +Node: CArray93045 +Node: CArray-accessing93288 +Node: CArrayCType93481 +Node: CArrayCType class-instance creation93782 +Node: CArrayCType-accessing94402 +Node: CBoolean94766 +Node: CBoolean-accessing95063 +Node: CByte95380 +Node: CByte class-conversion95762 +Node: CByte-accessing96081 +Node: CChar96519 +Node: CChar class-accessing96780 +Node: CChar-accessing97130 +Node: CCompound97433 +Node: CCompound class-instance creation97775 +Node: CCompound class-subclass creation98134 +Node: CCompound-instance creation100224 +Node: CDouble100563 +Node: CDouble class-accessing100835 +Node: CDouble-accessing101195 +Node: CFloat101508 +Node: CFloat class-accessing101786 +Node: CFloat-accessing102141 +Node: CFunctionDescriptor102449 +Node: CFunctionDescriptor class-instance creation103224 +Node: CFunctionDescriptor class-testing103572 +Node: CFunctionDescriptor-accessing104069 +Node: CFunctionDescriptor-calling104687 +Node: CFunctionDescriptor-printing106627 +Node: Character106886 +Node: Character class-built ins107855 +Node: Character class-constants108627 +Node: Character class-initializing lookup tables109421 +Node: Character class-instance creation110057 +Node: Character class-testing110415 +Node: Character-built ins110774 +Node: Character-coercion methods111549 +Node: Character-comparing112113 +Node: Character-converting112746 +Node: Character-printing113049 +Node: Character-storing113423 +Node: Character-testing113662 +Node: Character-testing functionality114298 +Node: CharacterArray114530 +Node: CharacterArray class-basic115271 +Node: CharacterArray-basic115661 +Node: CharacterArray-built ins116338 +Node: CharacterArray-comparing116753 +Node: CharacterArray-converting118963 +Node: CharacterArray-printing120320 +Node: CharacterArray-storing120939 +Node: CharacterArray-string processing121218 +Node: CharacterArray-testing functionality123757 +Node: CInt124003 +Node: CInt class-accessing124264 +Node: CInt-accessing124589 +Node: Class124907 +Node: Class-accessing instances and variables125753 +Node: Class-filing127265 +Node: Class-instance creation127705 +Node: Class-instance creation - alternative129910 +Node: Class-printing132075 +Node: Class-saving and loading132482 +Node: Class-testing133876 +Node: Class-testing functionality134115 +Node: ClassDescription134332 +Node: ClassDescription-compiling134994 +Node: ClassDescription-conversion135822 +Node: ClassDescription-copying136275 +Node: ClassDescription-filing137472 +Node: ClassDescription-organization of messages and classes138294 +Node: ClassDescription-printing139594 +Node: CLong140343 +Node: CLong class-accessing140613 +Node: CLong-accessing140963 +Node: CObject141266 +Node: CObject class-conversion142116 +Node: CObject class-instance creation142459 +Node: CObject-accessing143057 +Node: CObject-C data access143492 +Node: CObject-conversion144096 +Node: CObject-finalization144829 +Node: CObject-pointer-like behavior145293 +Node: Collection147548 +Node: Collection class-instance creation148475 +Node: Collection-adding149479 +Node: Collection-converting149826 +Node: Collection-copying Collections150919 +Node: Collection-enumeration151457 +Node: Collection-finalization154482 +Node: Collection-printing154787 +Node: Collection-removing155130 +Node: Collection-storing155970 +Node: Collection-testing collections156227 +Node: CompiledBlock156866 +Node: CompiledBlock class-instance creation157364 +Node: CompiledBlock-accessing158100 +Node: CompiledBlock-basic159159 +Node: CompiledBlock-printing159868 +Node: CompiledBlock-saving and loading160135 +Node: CompiledCode160556 +Node: CompiledCode class-cache flushing161282 +Node: CompiledCode class-instance creation161638 +Node: CompiledCode-accessing162184 +Node: CompiledCode-basic163583 +Node: CompiledCode-copying164334 +Node: CompiledCode-debugging164559 +Node: CompiledCode-decoding bytecodes164818 +Node: CompiledCode-testing accesses165225 +Node: CompiledCode-translation166386 +Node: CompiledMethod166644 +Node: CompiledMethod class-instance creation167422 +Node: CompiledMethod class-lean images168059 +Node: CompiledMethod-accessing168380 +Node: CompiledMethod-basic169747 +Node: CompiledMethod-printing170511 +Node: CompiledMethod-saving and loading170852 +Node: CompiledMethod-testing171302 +Node: ContextPart171886 +Node: ContextPart class-exception handling172660 +Node: ContextPart-accessing173606 +Node: ContextPart-built ins176839 +Node: ContextPart-copying177525 +Node: ContextPart-debugging177878 +Node: ContextPart-enumerating178402 +Node: ContextPart-exception handling178787 +Node: ContextPart-printing179049 +Node: CoreException179412 +Node: CoreException class-instance creation180678 +Node: CoreException-accessing180934 +Node: CoreException-basic181868 +Node: CoreException-enumerating182123 +Node: CoreException-exception handling182781 +Node: CoreException-instance creation183432 +Node: CPtr183734 +Node: CPtr-accessing183967 +Node: CPtrCType184502 +Node: CPtrCType class-instance creation184786 +Node: CPtrCType-accessing185071 +Node: CScalar185532 +Node: CScalar class-instance creation185818 +Node: CScalar-accessing186277 +Node: CScalarCType186792 +Node: CScalarCType-accessing187080 +Node: CScalarCType-storing187408 +Node: CShort187630 +Node: CShort class-accessing187904 +Node: CShort-accessing188259 +Node: CSmalltalk188567 +Node: CSmalltalk class-accessing188852 +Node: CSmalltalk-accessing189227 +Node: CString189555 +Node: CString class-instance creation190362 +Node: CString-accessing190821 +Node: CStringCType191336 +Node: CStringCType-accessing191595 +Node: CStruct191796 +Node: CStruct class-subclass creation192046 +Node: CType192280 +Node: CType class-C instance creation193394 +Node: CType-accessing193650 +Node: CType-C instance creation194493 +Node: CType-storing195004 +Node: CUChar195201 +Node: CUChar class-getting info195466 +Node: CUChar-accessing195830 +Node: CUInt196141 +Node: CUInt class-accessing196400 +Node: CUInt-accessing196750 +Node: CULong197053 +Node: CULong class-accessing197316 +Node: CULong-accessing197671 +Node: CUnion197979 +Node: CUnion class-subclass creation198221 +Node: CUShort198451 +Node: CUShort class-accessing198718 +Node: CUShort-accessing199078 +Node: Date199391 +Node: Date class-basic200853 +Node: Date class-instance creation (ANSI)201967 +Node: Date class-instance creation (Blue Book)202443 +Node: Date-basic203749 +Node: Date-compatibility (non-ANSI)204209 +Node: Date-date computations204608 +Node: Date-printing206217 +Node: Date-storing206431 +Node: Date-testing206640 +Node: DateTime206945 +Node: DateTime class-information207579 +Node: DateTime class-instance creation207856 +Node: DateTime class-instance creation (non-ANSI)209143 +Node: DateTime-basic209631 +Node: DateTime-computations209964 +Node: DateTime-printing210642 +Node: DateTime-splitting in dates & times210894 +Node: DateTime-storing211479 +Node: DateTime-testing211730 +Node: DateTime-time zones212091 +Node: Delay213205 +Node: Delay class-general inquiries213968 +Node: Delay class-initialization214227 +Node: Delay class-instance creation214509 +Node: Delay-accessing214998 +Node: Delay-comparing215238 +Node: Delay-process delay215510 +Node: DelayedAdaptor215732 +Node: DelayedAdaptor-accessing216258 +Node: Dictionary216623 +Node: Dictionary class-instance creation217573 +Node: Dictionary-accessing217813 +Node: Dictionary-awful ST-80 compatibility hacks219470 +Node: Dictionary-dictionary enumerating219919 +Node: Dictionary-dictionary removing220993 +Node: Dictionary-dictionary testing221848 +Node: Dictionary-polymorphism hacks222508 +Node: Dictionary-printing222779 +Node: Dictionary-rehashing223129 +Node: Dictionary-storing223332 +Node: Dictionary-testing223578 +Node: DirectedMessage223838 +Node: DirectedMessage class-creating instances224404 +Node: DirectedMessage-accessing224823 +Node: DirectedMessage-basic225117 +Node: DirectedMessage-multiple process225527 +Node: DirectedMessage-saving and loading226111 +Node: Directory226535 +Node: Directory class-C functions227306 +Node: Directory class-file name management227607 +Node: Directory class-file operations228168 +Node: Directory class-reading system defaults228536 +Node: Directory-accessing229484 +Node: Directory-enumerating230346 +Node: DLD231088 +Node: DLD class-C functions231758 +Node: DLD class-dynamic linking232135 +Node: DumperProxy233467 +Node: DumperProxy class-accessing233993 +Node: DumperProxy class-instance creation234444 +Node: DumperProxy-saving and restoring234935 +Node: Duration235336 +Node: Duration class-instance creation235737 +Node: Duration class-instance creation (non ANSI)236223 +Node: Duration-arithmetics236688 +Node: Error237862 +Node: Error-exception description238177 +Node: Exception238504 +Node: Exception class-comparison239632 +Node: Exception class-creating ExceptionCollections240082 +Node: Exception class-initialization240492 +Node: Exception class-instance creation240860 +Node: Exception class-interoperability with TrappableEvents241430 +Node: Exception-comparison242038 +Node: Exception-exception description242472 +Node: Exception-exception signaling242901 +Node: ExceptionSet243280 +Node: ExceptionSet class-instance creation243845 +Node: ExceptionSet-enumerating244096 +Node: False244646 +Node: False-basic245035 +Node: False-C hacks246015 +Node: False-printing246181 +Node: File246368 +Node: File class-C functions247191 +Node: File class-file name management247458 +Node: File class-file operations248585 +Node: File class-instance creation249199 +Node: File class-reading system defaults249687 +Node: File class-testing249960 +Node: File-accessing250598 +Node: File-file name management251684 +Node: File-file operations252456 +Node: File-testing253414 +Node: FileDescriptor254331 +Node: FileDescriptor class-initialization255482 +Node: FileDescriptor class-instance creation255806 +Node: FileDescriptor-accessing261825 +Node: FileDescriptor-basic262971 +Node: FileDescriptor-built ins264202 +Node: FileDescriptor-class type methods265400 +Node: FileDescriptor-initialize-release265816 +Node: FileDescriptor-low-level access266338 +Node: FileDescriptor-overriding inherited methods267410 +Node: FileDescriptor-printing268197 +Node: FileDescriptor-testing268481 +Node: FileSegment268689 +Node: FileSegment class-basic269298 +Node: FileSegment class-installing269641 +Node: FileSegment-basic270013 +Node: FileSegment-equality270862 +Node: FileStream271131 +Node: FileStream class-file-in271837 +Node: FileStream class-standard streams275359 +Node: FileStream-basic276085 +Node: FileStream-buffering277023 +Node: FileStream-filing in277828 +Node: FileStream-overriding inherited methods278743 +Node: FileStream-testing279602 +Node: Float279810 +Node: Float class-byte-order dependancies280603 +Node: Float class-characterization280869 +Node: Float-arithmetic281877 +Node: Float-basic282195 +Node: Float-built ins282376 +Node: Float-coercing283303 +Node: Float-printing283925 +Node: Float-storing284135 +Node: Float-testing284342 +Node: Float-testing functionality285095 +Node: FloatD285277 +Node: FloatD class-byte-order dependancies285936 +Node: FloatD class-characterization286207 +Node: FloatD class-converting287467 +Node: FloatD-built ins287709 +Node: FloatD-coercing288932 +Node: FloatE289321 +Node: FloatE class-byte-order dependancies289981 +Node: FloatE class-characterization290252 +Node: FloatE class-converting291800 +Node: FloatE-built ins292042 +Node: FloatE-coercing293265 +Node: FloatQ293654 +Node: FloatQ class-byte-order dependancies294316 +Node: FloatQ class-characterization294587 +Node: FloatQ class-converting296135 +Node: FloatQ-built ins296377 +Node: FloatQ-coercing297600 +Node: Fraction297989 +Node: Fraction class-converting298731 +Node: Fraction class-instance creation298961 +Node: Fraction-accessing299332 +Node: Fraction-arithmetic299608 +Node: Fraction-coercing300318 +Node: Fraction-comparing300943 +Node: Fraction-converting301431 +Node: Fraction-optimized cases301918 +Node: Fraction-printing302338 +Node: Fraction-testing302654 +Node: Halt302845 +Node: Halt-description303131 +Node: HashedCollection303368 +Node: HashedCollection class-instance creation304219 +Node: HashedCollection-accessing304582 +Node: HashedCollection-builtins305148 +Node: HashedCollection-copying305911 +Node: HashedCollection-enumerating the elements of a collection306375 +Node: HashedCollection-rehashing306737 +Node: HashedCollection-removing307009 +Node: HashedCollection-saving and loading307402 +Node: HashedCollection-storing307902 +Node: HashedCollection-testing collections308215 +Node: HomedAssociation309146 +Node: HomedAssociation class-basic309706 +Node: HomedAssociation-accessing309994 +Node: HomedAssociation-finalization310346 +Node: HomedAssociation-storing310952 +Node: IdentityDictionary311207 +Node: IdentitySet311590 +Node: IdentitySet-testing311979 +Node: Integer312226 +Node: Integer class-converting313045 +Node: Integer-accessing313263 +Node: Integer-basic313488 +Node: Integer-bit operators313684 +Node: Integer-converting314956 +Node: Integer-extension315646 +Node: Integer-iterators315945 +Node: Integer-math methods316297 +Node: Integer-printing317094 +Node: Integer-storing318139 +Node: Integer-testing functionality318450 +Node: Interval318708 +Node: Interval class-instance creation319294 +Node: Interval-basic319882 +Node: Interval-printing320554 +Node: Interval-storing320780 +Node: Interval-testing321013 +Node: LargeArray321270 +Node: LargeArray-overridden321663 +Node: LargeArrayedCollection321841 +Node: LargeArrayedCollection class-instance creation322374 +Node: LargeArrayedCollection-accessing322719 +Node: LargeArrayedCollection-basic323209 +Node: LargeArraySubpart323596 +Node: LargeArraySubpart class-instance creation324465 +Node: LargeArraySubpart-accessing324860 +Node: LargeArraySubpart-comparing325801 +Node: LargeArraySubpart-modifying326809 +Node: LargeByteArray327557 +Node: LargeByteArray-overridden327970 +Node: LargeInteger328397 +Node: LargeInteger-arithmetic329183 +Node: LargeInteger-bit operations330146 +Node: LargeInteger-built-ins330734 +Node: LargeInteger-coercion331799 +Node: LargeInteger-disabled332221 +Node: LargeInteger-primitive operations332582 +Node: LargeInteger-testing333048 +Node: LargeNegativeInteger333674 +Node: LargeNegativeInteger-converting334366 +Node: LargeNegativeInteger-numeric testing334740 +Node: LargeNegativeInteger-reverting to LargePositiveInteger335261 +Node: LargePositiveInteger335813 +Node: LargePositiveInteger-arithmetic336680 +Node: LargePositiveInteger-converting337142 +Node: LargePositiveInteger-helper byte-level methods337685 +Node: LargePositiveInteger-numeric testing339408 +Node: LargePositiveInteger-primitive operations339930 +Node: LargeWordArray340610 +Node: LargeWordArray-overridden341030 +Node: LargeZeroInteger341315 +Node: LargeZeroInteger-accessing342133 +Node: LargeZeroInteger-arithmetic342384 +Node: LargeZeroInteger-numeric testing343300 +Node: LargeZeroInteger-printing343623 +Node: Link343907 +Node: Link class-instance creation344442 +Node: Link-basic344660 +Node: Link-iteration344899 +Node: LinkedList345346 +Node: LinkedList-accessing345944 +Node: LinkedList-adding346246 +Node: LinkedList-enumerating346965 +Node: LinkedList-testing347292 +Node: LookupKey347634 +Node: LookupKey class-basic348178 +Node: LookupKey-accessing348406 +Node: LookupKey-printing348657 +Node: LookupKey-storing348890 +Node: LookupKey-testing349132 +Node: LookupTable349552 +Node: LookupTable class-instance creation350316 +Node: LookupTable-accessing350562 +Node: LookupTable-copying351351 +Node: LookupTable-enumerating351655 +Node: LookupTable-hashing352032 +Node: LookupTable-rehashing352257 +Node: LookupTable-removing352466 +Node: LookupTable-storing352952 +Node: Magnitude353175 +Node: Magnitude-basic353619 +Node: Magnitude-misc methods354135 +Node: MappedCollection354535 +Node: MappedCollection class-instance creation355898 +Node: MappedCollection-basic356335 +Node: Memory357210 +Node: Memory class-accessing357758 +Node: Message361639 +Node: Message class-creating instances362277 +Node: Message-accessing362553 +Node: Message-basic362979 +Node: MessageNotUnderstood363290 +Node: MessageNotUnderstood-accessing363772 +Node: MessageNotUnderstood-description364095 +Node: Metaclass364360 +Node: Metaclass class-instance creation365347 +Node: Metaclass-accessing365616 +Node: Metaclass-basic366046 +Node: Metaclass-delegation367142 +Node: Metaclass-filing368526 +Node: Metaclass-printing368801 +Node: Metaclass-testing functionality369340 +Node: MethodContext369585 +Node: MethodContext-accessing370075 +Node: MethodContext-printing371333 +Node: MethodDictionary371563 +Node: MethodDictionary-adding372082 +Node: MethodDictionary-rehashing372315 +Node: MethodDictionary-removing372553 +Node: MethodInfo372949 +Node: MethodInfo-accessing373423 +Node: MethodInfo-equality374352 +Node: Namespace374629 +Node: Namespace class-accessing375259 +Node: Namespace class-disabling instance creation375646 +Node: Namespace class-initialization376026 +Node: Namespace-accessing376447 +Node: Namespace-namespace hierarchy376720 +Node: Namespace-overrides for superspaces377202 +Node: Namespace-printing378983 +Node: Namespace-testing379497 +Node: NetClients.URIResolver379662 +Node: NetClients.URIResolver class-api380105 +Node: NetClients.URIResolver class-instance creation381239 +Node: NetClients.URL381600 +Node: NetClients.URL class-encoding URLs382309 +Node: NetClients.URL class-instance creation382798 +Node: NetClients.URL-accessing383607 +Node: NetClients.URL-comparing386316 +Node: NetClients.URL-copying386826 +Node: NetClients.URL-initialize-release387347 +Node: NetClients.URL-printing387630 +Node: NetClients.URL-testing387908 +Node: NetClients.URL-utilities388668 +Node: Notification388962 +Node: Notification-exception description389403 +Node: NullProxy389849 +Node: NullProxy class-instance creation390449 +Node: NullProxy-accessing390704 +Node: NullValueHolder390940 +Node: NullValueHolder class-creating instances391517 +Node: NullValueHolder-accessing391783 +Node: Number392115 +Node: Number class-converting392999 +Node: Number class-testing393443 +Node: Number-arithmetic393695 +Node: Number-comparing395012 +Node: Number-converting395419 +Node: Number-copying396671 +Node: Number-error raising396970 +Node: Number-misc math397325 +Node: Number-point creation398872 +Node: Number-retrying399151 +Node: Number-shortcuts and iterators400938 +Node: Number-testing401787 +Node: Number-truncation and round off403205 +Node: Object404002 +Node: Object class-initialization404952 +Node: Object-built ins405628 +Node: Object-change and update413546 +Node: Object-class type methods414737 +Node: Object-conversion415540 +Node: Object-copying415771 +Node: Object-debugging416419 +Node: Object-dependents access416863 +Node: Object-error raising417551 +Node: Object-exception handling418228 +Node: Object-finalization418733 +Node: Object-printing419713 +Node: Object-relational operators421440 +Node: Object-saving and loading421786 +Node: Object-storing422771 +Node: Object-syntax shortcuts423360 +Node: Object-testing functionality423669 +Node: ObjectDumper425191 +Node: ObjectDumper class-establishing proxy classes426384 +Node: ObjectDumper class-instance creation427217 +Node: ObjectDumper class-shortcuts427614 +Node: ObjectDumper class-testing427992 +Node: ObjectDumper-accessing428420 +Node: ObjectDumper-loading/dumping objects428912 +Node: ObjectDumper-stream interface429336 +Node: ObjectMemory429702 +Node: ObjectMemory class-accessing430775 +Node: ObjectMemory class-builtins431026 +Node: ObjectMemory class-initialization434357 +Node: ObjectMemory class-saving the image434633 +Node: ObjectMemory-accessing434945 +Node: ObjectMemory-builtins439883 +Node: ObjectMemory-derived information440152 +Node: OrderedCollection441123 +Node: OrderedCollection class-instance creation441833 +Node: OrderedCollection-accessing442175 +Node: OrderedCollection-adding442626 +Node: OrderedCollection-removing444674 +Node: Package445312 +Node: Package-accessing445717 +Node: PackageLoader447466 +Node: PackageLoader class-accessing448024 +Node: PackageLoader class-loading449808 +Node: PackageLoader class-testing450795 +Node: PluggableAdaptor451070 +Node: PluggableAdaptor class-creating instances451698 +Node: PluggableAdaptor-accessing452777 +Node: PluggableProxy453062 +Node: PluggableProxy class-accessing453688 +Node: PluggableProxy-saving and restoring454122 +Node: Point454541 +Node: Point class-instance creation455268 +Node: Point-accessing455565 +Node: Point-arithmetic455983 +Node: Point-comparing456686 +Node: Point-converting457483 +Node: Point-point functions457986 +Node: Point-printing458918 +Node: Point-storing459136 +Node: Point-truncation and round off459368 +Node: PositionableStream459764 +Node: PositionableStream class-instance creation460671 +Node: PositionableStream-accessing-reading461180 +Node: PositionableStream-class type methods462335 +Node: PositionableStream-positioning462824 +Node: PositionableStream-testing463962 +Node: PositionableStream-truncating464428 +Node: Process464712 +Node: Process-accessing465280 +Node: Process-basic466778 +Node: Process-builtins468309 +Node: Process-printing469103 +Node: ProcessorScheduler469301 +Node: ProcessorScheduler class-instance creation469968 +Node: ProcessorScheduler-basic470266 +Node: ProcessorScheduler-built ins471832 +Node: ProcessorScheduler-idle tasks472518 +Node: ProcessorScheduler-printing473021 +Node: ProcessorScheduler-priorities473324 +Node: ProcessorScheduler-storing474974 +Node: ProcessorScheduler-timed invocation475299 +Node: Promise475854 +Node: Promise class-creating instances476426 +Node: Promise-accessing476673 +Node: Promise-initializing476997 +Node: Promise-printing477225 +Node: Random477416 +Node: Random class-instance creation477865 +Node: Random class-shortcuts478231 +Node: Random-basic478548 +Node: Random-testing478962 +Node: ReadStream479272 +Node: ReadStream class-instance creation479712 +Node: ReadStream-accessing-reading479987 +Node: ReadWriteStream480281 +Node: ReadWriteStream class-instance creation480767 +Node: ReadWriteStream-positioning481222 +Node: Rectangle481587 +Node: Rectangle class-instance creation482376 +Node: Rectangle-accessing482918 +Node: Rectangle-copying485316 +Node: Rectangle-printing485534 +Node: Rectangle-rectangle functions485860 +Node: Rectangle-testing487701 +Node: Rectangle-transforming488515 +Node: Rectangle-truncation and round off489139 +Node: RecursionLock489428 +Node: RecursionLock class-instance creation489828 +Node: RecursionLock-accessing490062 +Node: RecursionLock-mutual exclusion490659 +Node: RecursionLock-printing491018 +Node: RootNamespace491268 +Node: RootNamespace class-instance creation491817 +Node: RootNamespace-namespace hierarchy492150 +Node: RootNamespace-overrides for superspaces492581 +Node: RootNamespace-printing493196 +Node: RunArray493704 +Node: RunArray class-instance creation494665 +Node: RunArray-accessing494937 +Node: RunArray-adding495271 +Node: RunArray-basic496345 +Node: RunArray-copying496650 +Node: RunArray-enumerating497006 +Node: RunArray-removing497466 +Node: RunArray-searching497931 +Node: RunArray-testing498345 +Node: ScaledDecimal498588 +Node: ScaledDecimal class-constants499392 +Node: ScaledDecimal class-instance creation499642 +Node: ScaledDecimal-arithmetic500079 +Node: ScaledDecimal-coercion500798 +Node: ScaledDecimal-comparing501703 +Node: ScaledDecimal-constants502339 +Node: ScaledDecimal-printing502641 +Node: ScaledDecimal-storing503101 +Node: Semaphore503339 +Node: Semaphore class-instance creation504002 +Node: Semaphore-accessing504375 +Node: Semaphore-builtins504859 +Node: Semaphore-mutual exclusion506199 +Node: Semaphore-printing506533 +Node: SequenceableCollection506763 +Node: SequenceableCollection class-instance creation507465 +Node: SequenceableCollection-basic507880 +Node: SequenceableCollection-copying SequenceableCollections511302 +Node: SequenceableCollection-enumerating513572 +Node: SequenceableCollection-replacing items516764 +Node: SequenceableCollection-testing517711 +Node: Set518145 +Node: Set-arithmetic518565 +Node: Set-awful ST-80 compatibility hacks518894 +Node: Set-comparing519255 +Node: SharedQueue519650 +Node: SharedQueue class-instance creation520172 +Node: SharedQueue-accessing520541 +Node: Signal521043 +Node: Signal-accessing521668 +Node: Signal-exception handling522518 +Node: SingletonProxy525071 +Node: SingletonProxy class-accessing525675 +Node: SingletonProxy class-instance creation526040 +Node: SingletonProxy-saving and restoring526481 +Node: SmallInteger526908 +Node: SmallInteger class-getting limits527595 +Node: SmallInteger class-testing528081 +Node: SmallInteger-bit arithmetic528377 +Node: SmallInteger-built ins528655 +Node: SmallInteger-builtins530960 +Node: SmallInteger-coercion methods531711 +Node: SmallInteger-testing functionality532067 +Node: SortedCollection532300 +Node: SortedCollection class-hacking533432 +Node: SortedCollection class-instance creation533701 +Node: SortedCollection-basic534214 +Node: SortedCollection-copying534759 +Node: SortedCollection-disabled535066 +Node: SortedCollection-enumerating535920 +Node: SortedCollection-saving and loading536250 +Node: SortedCollection-searching536596 +Node: Stream537183 +Node: Stream-accessing-reading538125 +Node: Stream-accessing-writing539918 +Node: Stream-basic540473 +Node: Stream-character writing540656 +Node: Stream-enumerating541177 +Node: Stream-filing out541412 +Node: Stream-positioning541758 +Node: Stream-printing542466 +Node: Stream-providing consistent protocols543226 +Node: Stream-storing543585 +Node: Stream-testing543957 +Node: String544241 +Node: String class-basic544823 +Node: String class-instance creation545140 +Node: String-built ins545471 +Node: String-converting547463 +Node: String-storing547808 +Node: String-testing functionality548045 +Node: String-useful functionality548269 +Node: Symbol548555 +Node: Symbol class-built ins549381 +Node: Symbol class-instance creation549596 +Node: Symbol class-symbol table550735 +Node: Symbol-basic552144 +Node: Symbol-built ins552897 +Node: Symbol-converting553206 +Node: Symbol-misc553546 +Node: Symbol-storing553710 +Node: Symbol-testing554373 +Node: Symbol-testing functionality554641 +Node: SymLink554860 +Node: SymLink class-instance creation555409 +Node: SymLink-accessing555729 +Node: SymLink-iteration556064 +Node: SymLink-printing556279 +Node: SystemDictionary556479 +Node: SystemDictionary-basic557286 +Node: SystemDictionary-builtins557567 +Node: SystemDictionary-C functions558897 +Node: SystemDictionary-miscellaneous559403 +Node: SystemDictionary-printing559748 +Node: SystemDictionary-special accessing560167 +Node: SystemExceptions.AlreadyDefined560731 +Node: SystemExceptions.AlreadyDefined-accessing561245 +Node: SystemExceptions.ArgumentOutOfRange561497 +Node: SystemExceptions.ArgumentOutOfRange class-signaling562085 +Node: SystemExceptions.ArgumentOutOfRange-accessing562491 +Node: SystemExceptions.BadReturn563069 +Node: SystemExceptions.BadReturn-accessing563547 +Node: SystemExceptions.CInterfaceError563791 +Node: SystemExceptions.CInterfaceError-accessing564290 +Node: SystemExceptions.EmptyCollection564558 +Node: SystemExceptions.EmptyCollection-accessing565043 +Node: SystemExceptions.EndOfStream565311 +Node: SystemExceptions.EndOfStream class-signaling565800 +Node: SystemExceptions.EndOfStream-accessing566140 +Node: SystemExceptions.FileError566560 +Node: SystemExceptions.FileError-accessing567037 +Node: SystemExceptions.IndexOutOfRange567281 +Node: SystemExceptions.IndexOutOfRange class-signaling567865 +Node: SystemExceptions.IndexOutOfRange-accessing568231 +Node: SystemExceptions.InvalidArgument568745 +Node: SystemExceptions.InvalidArgument-accessing569240 +Node: SystemExceptions.InvalidProcessState569497 +Node: SystemExceptions.InvalidProcessState-accessing570026 +Node: SystemExceptions.InvalidSize570310 +Node: SystemExceptions.InvalidSize-accessing570775 +Node: SystemExceptions.InvalidValue571027 +Node: SystemExceptions.InvalidValue class-signaling571535 +Node: SystemExceptions.InvalidValue-accessing571984 +Node: SystemExceptions.MustBeBoolean572475 +Node: SystemExceptions.MutationError572895 +Node: SystemExceptions.MutationError-accessing573354 +Node: SystemExceptions.NoRunnableProcess573614 +Node: SystemExceptions.NoRunnableProcess-accessing574099 +Node: SystemExceptions.NotFound574375 +Node: SystemExceptions.NotFound class-accessing574889 +Node: SystemExceptions.NotFound-accessing575264 +Node: SystemExceptions.NotImplemented575554 +Node: SystemExceptions.NotImplemented-accessing576010 +Node: SystemExceptions.NotIndexable576274 +Node: SystemExceptions.NotIndexable-accessing576735 +Node: SystemExceptions.NotYetImplemented576991 +Node: SystemExceptions.NotYetImplemented-accessing577501 +Node: SystemExceptions.PrimitiveFailed577777 +Node: SystemExceptions.PrimitiveFailed-accessing578260 +Node: SystemExceptions.ProcessBeingTerminated578528 +Node: SystemExceptions.ProcessBeingTerminated-accessing578963 +Node: SystemExceptions.ProcessTerminated579259 +Node: SystemExceptions.ProcessTerminated-accessing579782 +Node: SystemExceptions.ReadOnlyObject580058 +Node: SystemExceptions.ReadOnlyObject-accessing580537 +Node: SystemExceptions.ShouldNotImplement580801 +Node: SystemExceptions.ShouldNotImplement-accessing581329 +Node: SystemExceptions.SubclassResponsibility581609 +Node: SystemExceptions.SubclassResponsibility-accessing582177 +Node: SystemExceptions.UserInterrupt582473 +Node: SystemExceptions.UserInterrupt-accessing582923 +Node: SystemExceptions.VMError583183 +Node: SystemExceptions.VMError-accessing583607 +Node: SystemExceptions.WrongArgumentCount583843 +Node: SystemExceptions.WrongArgumentCount-accessing584397 +Node: SystemExceptions.WrongClass584677 +Node: SystemExceptions.WrongClass class-signaling585293 +Node: SystemExceptions.WrongClass-accessing585949 +Node: SystemExceptions.WrongMessageSent586602 +Node: SystemExceptions.WrongMessageSent class-signaling587247 +Node: SystemExceptions.WrongMessageSent-accessing587664 +Node: TextCollector588253 +Node: TextCollector class-accessing588951 +Node: TextCollector-accessing589448 +Node: TextCollector-printing590247 +Node: TextCollector-set up590579 +Node: TextCollector-storing591142 +Node: Time591470 +Node: Time class-basic (UTC)592249 +Node: Time class-builtins592695 +Node: Time class-clocks593720 +Node: Time class-initialization594275 +Node: Time class-instance creation594619 +Node: Time-accessing (ANSI for DateAndTimes)595496 +Node: Time-accessing (non ANSI & for Durations)596012 +Node: Time-arithmetic596462 +Node: Time-comparing596888 +Node: TokenStream597173 +Node: TokenStream class-instance creation597981 +Node: TokenStream-basic598341 +Node: TokenStream-write methods598663 +Node: TrappableEvent598906 +Node: TrappableEvent-enumerating599482 +Node: TrappableEvent-instance creation600030 +Node: True600360 +Node: True-basic600738 +Node: True-C hacks601688 +Node: True-printing601848 +Node: UndefinedObject602030 +Node: UndefinedObject-basic602746 +Node: UndefinedObject-class creation603015 +Node: UndefinedObject-class creation - alternative605196 +Node: UndefinedObject-CObject interoperability607484 +Node: UndefinedObject-dependents access607818 +Node: UndefinedObject-printing608191 +Node: UndefinedObject-storing608471 +Node: UndefinedObject-testing608747 +Node: ValueAdaptor609583 +Node: ValueAdaptor class-creating instances610067 +Node: ValueAdaptor-accessing610355 +Node: ValueAdaptor-printing610762 +Node: ValueHolder610975 +Node: ValueHolder class-creating instances611590 +Node: ValueHolder-accessing611973 +Node: ValueHolder-initializing612266 +Node: VariableBinding612489 +Node: VariableBinding-printing613121 +Node: VariableBinding-saving and loading613436 +Node: VariableBinding-storing613893 +Node: VariableBinding-testing614181 +Node: VersionableObjectProxy614439 +Node: VersionableObjectProxy class-saving and restoring615335 +Node: VersionableObjectProxy-saving and restoring616359 +Node: VFS.ArchiveFileHandler616693 +Node: VFS.ArchiveFileHandler class-registering617610 +Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol618065 +Node: VFS.ArchiveFileHandler-directory operations619442 +Node: VFS.ArchiveFileHandler-file operations620284 +Node: VFS.ArchiveMemberHandler620571 +Node: VFS.ArchiveMemberHandler-accessing621299 +Node: VFS.ArchiveMemberHandler-directory operations622459 +Node: VFS.ArchiveMemberHandler-file operations623080 +Node: VFS.ArchiveMemberHandler-finalization623746 +Node: VFS.ArchiveMemberHandler-initializing624239 +Node: VFS.ArchiveMemberHandler-testing624773 +Node: VFS.DecodedFileHandler625659 +Node: VFS.DecodedFileHandler class-registering626200 +Node: VFS.DecodedFileHandler-files627347 +Node: VFS.ExternalArchiveFileHandler628042 +Node: VFS.ExternalArchiveFileHandler class-registering628873 +Node: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol629757 +Node: VFS.ExternalArchiveFileHandler-members631078 +Node: VFS.ExternalArchiveFileHandler-releasing631589 +Node: VFS.RealFileHandler631939 +Node: VFS.RealFileHandler class-C functions632682 +Node: VFS.RealFileHandler class-initialization632964 +Node: VFS.RealFileHandler-accessing633291 +Node: VFS.RealFileHandler-directory operations634481 +Node: VFS.RealFileHandler-file operations634977 +Node: VFS.RealFileHandler-testing635519 +Node: VFS.VFSHandler636263 +Node: VFS.VFSHandler class-initializing637036 +Node: VFS.VFSHandler class-instance creation637934 +Node: VFS.VFSHandler-accessing638277 +Node: VFS.VFSHandler-C functions639619 +Node: VFS.VFSHandler-directory operations640755 +Node: VFS.VFSHandler-file operations641344 +Node: VFS.VFSHandler-testing642118 +Node: Warning642959 +Node: Warning-exception description643278 +Node: WeakArray643482 +Node: WeakArray class-instance creation643975 +Node: WeakArray-accessing644299 +Node: WeakArray-conversion645947 +Node: WeakArray-loading646582 +Node: WeakIdentitySet646847 +Node: WeakKeyDictionary647309 +Node: WeakKeyDictionary-accessing647858 +Node: WeakKeyIdentityDictionary648359 +Node: WeakSet648887 +Node: WeakSet-accessing649343 +Node: WeakValueIdentityDictionary649841 +Node: WeakValueLookupTable650387 +Node: WeakValueLookupTable-hacks650995 +Node: WeakValueLookupTable-rehashing651552 +Node: WordArray651775 +Node: WriteStream652081 +Node: WriteStream class-instance creation652607 +Node: WriteStream-accessing653277 +Node: WriteStream-accessing-writing653531 +Node: WriteStream-positioning654122 +Node: ZeroDivide654332 +Node: ZeroDivide class-instance creation654825 +Node: ZeroDivide-accessing655205 +Node: ZeroDivide-description655458 +Node: Class index655673 +Node: Method index667510 +Node: Cross-reference886239  End Tag Table diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-1 smalltalk-2.1.7/doc/gst-base.info-1 --- smalltalk-2.1.6/doc/gst-base.info-1 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-1 2003-12-17 14:58:53.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. +This is gst-base.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-base-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Base classes: (gst-base). The GNU Smalltalk base classes. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -28,10 +28,10 @@ - This document describes the class libraries that are distributed +This document describes the class libraries that are distributed together with the GNU Smalltalk programming language. -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -1733,3 +1733,8542 @@ method too. + +File: gst-base.info, Node: Behavior-instance variables, Next: Behavior-method dictionary, Prev: Behavior-instance creation, Up: Behavior + +Behavior: instance variables +---------------------------- + +addInstVarName: aString + Add the given instance variable to instance of the receiver + +removeInstVarName: aString + Remove the given instance variable from the receiver and recompile + all of the receiver's subclasses + + + +File: gst-base.info, Node: Behavior-method dictionary, Next: Behavior-pluggable behavior (not yet implemented), Prev: Behavior-instance variables, Up: Behavior + +Behavior: method dictionary +--------------------------- + +addSelector: selector withMethod: compiledMethod + Add the given compiledMethod to the method dictionary, giving it + the passed selector. Answer compiledMethod + +compile: code + Compile method source. If there are parsing errors, answer nil. + Else, return a CompiledMethod result of compilation + +compile: code ifError: block + Compile method source. If there are parsing errors, invoke + exception block, 'block' passing file name, line number and error. + description. Return a CompiledMethod result of compilation + + to + +compile: code notifying: requestor + Compile method source. If there are parsing errors, send #error: + to the requestor object, else return a CompiledMethod result of + compilation + +compileAll + Recompile all selectors in the receiver. Ignore errors. + +compileAll: aNotifier + Recompile all selectors in the receiver. Notify aNotifier by sen- + ding #error: messages if something goes wrong. + +compileAllSubclasses + Recompile all selector of all subclasses. Notify aNotifier by sen- + ding #error: messages if something goes wrong. + +compileAllSubclasses: aNotifier + Recompile all selector of all subclasses. Notify aNotifier by sen- + ding #error: messages if something goes wrong. + +createGetMethod: what + Create a method accessing the variable `what'. + +createGetMethod: what default: value + Create a method accessing the variable `what', with a default value + of `value', using lazy initialization + +createSetMethod: what + Create a method which sets the variable `what'. + +decompile: selector + Decompile the bytecodes for the given selector. + +defineAsyncCFunc: cFuncNameString + withSelectorArgs: selectorAndArgs args: argsArray Please + lookup the part on the C interface in the manual. + +defineCFunc: cFuncNameString + withSelectorArgs: selectorAndArgs returning: returnTypeSymbol + args: argsArray Please lookup the part on the C interface in + the manual. + +edit: selector + Open Emacs to edit the method with the passed selector, then + compile it + +methodDictionary + Answer the receiver's method dictionary. Don't modify the method + dictionary unless you exactly know what you're doing + +methodDictionary: aDictionary + Set the receiver's method dictionary to aDictionary + +recompile: selector + Recompile the given selector, answer nil if something goes wrong or + the new CompiledMethod if everything's ok. + + to + +recompile: selector notifying: aNotifier + Recompile the given selector. If there are parsing errors, send + #error: to the aNotifier object, else return a CompiledMethod + result of compilation + +removeSelector: selector + Remove the given selector from the method dictionary, answer the + CompiledMethod attached to that selector + +removeSelector: selector ifAbsent: aBlock + Remove the given selector from the method dictionary, answer the + CompiledMethod attached to that selector. If the selector cannot + be found, answer the result of evaluating aBlock. + +selectorsAndMethodsDo: aBlock + Evaluate aBlock, passing for each evaluation a selector that's + defined in the receiver and the corresponding method. + + + +File: gst-base.info, Node: Behavior-pluggable behavior (not yet implemented), Next: Behavior-printing hierarchy, Prev: Behavior-method dictionary, Up: Behavior + +Behavior: pluggable behavior (not yet implemented) +-------------------------------------------------- + +compilerClass + Answer the class that can be used to compile parse trees, or nil + if there is none (as is the case now). Not used for methods if + parserClass answers nil, and for doits if evaluatorClass answers + nil. + +debuggerClass + Answer which class is to be used to debug a chain of contexts which + includes the receiver. nil means 'do not debug'; other classes are + sent #debuggingPriority and the one with the highest priority is + picked. + +decompilerClass + Answer the class that can be used to decompile methods, or nil if + there is none (as is the case now). + +evaluatorClass + Answer the class that can be used to evaluate doits, or nil if + there is none (as is the case now). + +parserClass + Answer the class that can be used to parse methods, or nil if + there is none (as is the case now). + + + +File: gst-base.info, Node: Behavior-printing hierarchy, Next: Behavior-support for lightweight classes, Prev: Behavior-pluggable behavior (not yet implemented), Up: Behavior + +Behavior: printing hierarchy +---------------------------- + +hierarchyIndent + Answer the indent to be used by #printHierarchy - 4 by default + +printHierarchy + Print my entire subclass hierarchy on the terminal. + +printSubclasses: level using: aBlock + I print my name, and then all my subclasses, each indented + according to its position in the hierarchy. I pass aBlock a class + name and a level + + + +File: gst-base.info, Node: Behavior-support for lightweight classes, Next: Behavior-testing functionality, Prev: Behavior-printing hierarchy, Up: Behavior + +Behavior: support for lightweight classes +----------------------------------------- + +article + Answer an article (`a' or `an') which is ok for the receiver's name + +asClass + Answer the first superclass that is a full-fledged Class object + +environment + Answer the namespace that this class belongs to - the same as the + superclass, since Behavior does not support namespaces yet. + +name + Answer the class name; this prints to the name of the superclass + enclosed in braces. This class name is used, for example, to print + the receiver. + +nameIn: aNamespace + Answer the class name when the class is referenced from aNamespace + - a dummy one, since Behavior does not support names. + +printOn: aStream in: aNamespace + Answer the class name when the class is referenced from aNamespace + - a dummy one, since Behavior does not support names. + + + +File: gst-base.info, Node: Behavior-testing functionality, Next: Behavior-testing the class hierarchy, Prev: Behavior-support for lightweight classes, Up: Behavior + +Behavior: testing functionality +------------------------------- + +isBehavior + Answer `true'. + + + +File: gst-base.info, Node: Behavior-testing the class hierarchy, Next: Behavior-testing the form of the instances, Prev: Behavior-testing functionality, Up: Behavior + +Behavior: testing the class hierarchy +------------------------------------- + +includesBehavior: aClass + Returns true if aClass is the receiver or a superclass of the + receiver. + +inheritsFrom: aClass + Returns true if aClass is a superclass of the receiver + +kindOfSubclass + Return a string indicating the type of class the receiver is + + + +File: gst-base.info, Node: Behavior-testing the form of the instances, Next: Behavior-testing the method dictionary, Prev: Behavior-testing the class hierarchy, Up: Behavior + +Behavior: testing the form of the instances +------------------------------------------- + +instSize + Answer how many fixed instance variables are reserved to each of + the receiver's instances + +isBits + Answer whether the instance variables of the receiver's instances + are bytes or words + +isBytes + Answer whether the instance variables of the receiver's instances + are bytes + +isFixed + Answer whether the receiver's instances have no indexed instance + variables + +isIdentity + Answer whether x = y implies x == y for instances of the receiver + +isImmediate + Answer whether, if x is an instance of the receiver, x copy == x + +isPointers + Answer whether the instance variables of the receiver's instances + are objects + +isVariable + Answer whether the receiver's instances have indexed instance + variables + +isWords + Answer whether the instance variables of the receiver's instances + are words + + + +File: gst-base.info, Node: Behavior-testing the method dictionary, Prev: Behavior-testing the form of the instances, Up: Behavior + +Behavior: testing the method dictionary +--------------------------------------- + +canUnderstand: selector + Returns true if the instances of the receiver understand the given + selector + +hasMethods + Return whether the receiver has any methods defined + +includesSelector: selector + Returns true if the local method dictionary contains the given + selector + +scopeHas: name ifTrue: aBlock + If methods understood by the receiver's instances have access to a + symbol named 'name', evaluate aBlock + +whichClassIncludesSelector: selector + Answer which class in the receiver's hierarchy contains the + implementation of selector used by instances of the class (nil if + none does) + +whichSelectorsAccess: instVarName + Answer a Set of selectors which access the given instance variable + +whichSelectorsAssign: instVarName + Answer a Set of selectors which read the given instance variable + +whichSelectorsRead: instVarName + Answer a Set of selectors which read the given instance variable + +whichSelectorsReferTo: anObject + Returns a Set of selectors that refer to anObject + +whichSelectorsReferToByteCode: aByteCode + Return the collection of selectors in the class which reference + the byte code, aByteCode + + + +File: gst-base.info, Node: BindingDictionary, Next: BlockClosure, Prev: Behavior, Up: Base classes + +BindingDictionary +================= + +Defined in namespace Smalltalk +Superclass: Dictionary +Category: Language-Implementation + I am a special form of dictionary that provides special ways to + access my keys, which typically begin with an uppercase letter; + also, my associations are actually VariableBinding instances. + + My keys are (expected to be) symbols, so I use == to match + searched keys to those in the dictionary - this is done expecting + that it brings a bit more speed. + +* Menu: + +* BindingDictionary-accessing:: (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 + +BindingDictionary: accessing +---------------------------- + +define: aSymbol + Define aSymbol as equal to nil inside the receiver. Fail if such + a variable already exists (use #at:put: if you don't want to fail) + +doesNotUnderstand: aMessage + Try to map unary selectors to read accesses to the Namespace, and + one-argument keyword selectors to write accesses. Note that: a) + this works only if the selector has an uppercase first letter; and + b) `aNamespace Variable: value' is the same as `aNamespace set: + #Variable to: value', not the same as `aNamespace at: #Variable + put: value' -- the latter always refers to the current namespace, + while the former won't define a new variable, instead searching in + superspaces (and raising an error if the variable cannot be found). + +environment + Answer the environment to which the receiver is connected. This + can be the class for a dictionary that holds class variables, or + the super-namespace. In general it is used to compute the + receiver's name. + +environment: anObject + Set the environment to which the receiver is connected. This can + be the class for a dictionary that holds class variables, or the + super-namespace. In general it is used to compute the receiver's + name. + +import: aSymbol from: aNamespace + Add to the receiver the symbol aSymbol, associated to the same + value as in aNamespace. Fail if aNamespace does not contain the + given key. + +name + Answer the receiver's name, which by default is the same as the + name of the receiver's environment. + +nameIn: aNamespace + Answer the receiver's name when referred to from aNamespace; by + default the computation is deferred to the receiver's environment. + + + +File: gst-base.info, Node: BindingDictionary-copying, Next: BindingDictionary-forward declarations, Prev: BindingDictionary-accessing, Up: BindingDictionary + +BindingDictionary: copying +-------------------------- + +copy + Answer the receiver. + +copyEmpty: newSize + Answer an empty copy of the receiver whose size is newSize + +copyEmptyForCollect + Answer an empty copy of the receiver which is filled in to compute + the result of #collect: + +deepCopy + Answer the receiver. + +shallowCopy + Answer the receiver. + + + +File: gst-base.info, Node: BindingDictionary-forward declarations, Next: BindingDictionary-printing, Prev: BindingDictionary-copying, Up: BindingDictionary + +BindingDictionary: forward declarations +--------------------------------------- + +add: aVariableBinding + Store value as associated to the given key. If any, recycle + Associations temporarily stored by the compiler inside the + `Undeclared' dictionary. + +at: key put: value + Store value as associated to the given key. If any, recycle + Associations temporarily stored by the compiler inside the + `Undeclared' dictionary. + + + +File: gst-base.info, Node: BindingDictionary-printing, Next: BindingDictionary-testing, Prev: BindingDictionary-forward declarations, Up: BindingDictionary + +BindingDictionary: printing +--------------------------- + +printOn: aStream in: aNamespace + Print the receiver's name when referred to from aNamespace; by + default the computation is deferred to the receiver's environment. + + + +File: gst-base.info, Node: BindingDictionary-testing, Prev: BindingDictionary-printing, Up: BindingDictionary + +BindingDictionary: testing +-------------------------- + +species + Answer `IdentityDictionary'. + + + +File: gst-base.info, Node: BlockClosure, Next: BlockContext, Prev: BindingDictionary, Up: Base classes + +BlockClosure +============ + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + I am a factotum class. My instances represent Smalltalk blocks, + portions of executeable code that have access to the environment + that they were declared in, take parameters, and can be passed + around as objects to be executed by methods outside the current + class. Block closures are sent a message to compute their value + and create a new execution context; this property can be used in + the construction of control flow methods. They also provide some + methods that are used in the creation of Processes from blocks. + +* Menu: + +* BlockClosure class-instance creation:: (class) +* BlockClosure class-testing:: (class) +* BlockClosure-accessing:: (instance) +* BlockClosure-built ins:: (instance) +* BlockClosure-control structures:: (instance) +* BlockClosure-exception handling:: (instance) +* BlockClosure-multiple process:: (instance) +* BlockClosure-overriding:: (instance) +* BlockClosure-testing:: (instance) +* BlockClosure-unwind protection:: (instance) + + +File: gst-base.info, Node: BlockClosure class-instance creation, Next: BlockClosure class-testing, Up: BlockClosure + +BlockClosure class: instance creation +------------------------------------- + +block: aCompiledBlock + Answer a BlockClosure that activates the passed CompiledBlock. + +numArgs: args numTemps: temps bytecodes: bytecodes depth: depth literals: literalArray + Answer a BlockClosure for a new CompiledBlock that is created using + the passed parameters. To make it work, you must put the + BlockClosure into a CompiledMethod's literals. + + + +File: gst-base.info, Node: BlockClosure class-testing, Next: BlockClosure-accessing, Prev: BlockClosure class-instance creation, Up: BlockClosure + +BlockClosure class: testing +--------------------------- + +isImmediate + Answer whether, if x is an instance of the receiver, x copy == x + + + +File: gst-base.info, Node: BlockClosure-accessing, Next: BlockClosure-built ins, Prev: BlockClosure class-testing, Up: BlockClosure + +BlockClosure: accessing +----------------------- + +argumentCount + Answer the number of arguments passed to the receiver + +block + Answer the CompiledBlock which contains the receiver's bytecodes + +block: aCompiledBlock + Set the CompiledBlock which contains the receiver's bytecodes + +finalIP + Answer the last instruction that can be executed by the receiver + +fixTemps + This should fix the values of the temporary variables used in the + block that are ordinarily shared with the method in which the block + is defined. Not defined yet, but it is not harmful that it isn't. + Answer the receiver. + +initialIP + Answer the initial instruction pointer into the receiver. + +method + Answer the CompiledMethod in which the receiver lies + +numArgs + Answer the number of arguments passed to the receiver + +numTemps + Answer the number of temporary variables used by the receiver + +outerContext + Answer the method/block context which is the immediate outer of + the receiver + +outerContext: containingContext + Set the method/block context which is the immediate outer of the + receiver + +receiver + Answer the object that is used as `self' when executing the + receiver (if nil, it might mean that the receiver is not valid + though...) + +receiver: anObject + Set the object that is used as `self' when executing the receiver + +stackDepth + Answer the number of stack slots needed for the receiver + + + +File: gst-base.info, Node: BlockClosure-built ins, Next: BlockClosure-control structures, Prev: BlockClosure-accessing, Up: BlockClosure + +BlockClosure: built ins +----------------------- + +blockCopy: outerContext + Generate a BlockClosure identical to the receiver, with the given + context as its outer context. + +value + Evaluate the receiver passing no parameters + +value: arg1 + Evaluate the receiver passing arg1 as the only parameter + +value: arg1 value: arg2 + Evaluate the receiver passing arg1 and arg2 as the parameters + +value: arg1 value: arg2 value: arg3 + Evaluate the receiver passing arg1, arg2 and arg3 as the parameters + +valueWithArguments: argumentsArray + Evaluate the receiver passing argArray's elements as the parameters + + + +File: gst-base.info, Node: BlockClosure-control structures, Next: BlockClosure-exception handling, Prev: BlockClosure-built ins, Up: BlockClosure + +BlockClosure: control structures +-------------------------------- + +repeat + Evaluate the receiver 'forever' (actually until a return is + executed or the process is terminated). + +whileFalse + Evaluate the receiver until it returns true + +whileFalse: aBlock + Evaluate the receiver. If it returns false, evaluate aBlock and re- + start + +whileTrue + Evaluate the receiver until it returns false + +whileTrue: aBlock + Evaluate the receiver. If it returns true, evaluate aBlock and re- + start + + + +File: gst-base.info, Node: BlockClosure-exception handling, Next: BlockClosure-multiple process, Prev: BlockClosure-control structures, Up: BlockClosure + +BlockClosure: exception handling +-------------------------------- + +ifError: aBlock + Evaluate the receiver; when #error: is called, pass to aBlock the + receiver and the parameter, and answer the result of evaluating + aBlock. If another exception is raised, it is passed to an outer + handler; if no exception is raised, the result of evaluating the + receiver is returned. + +on: anException do: aBlock + Evaluate the receiver; when anException is signaled, evaluate + aBlock passing a Signal describing the exception. Answer either + the result of evaluating the receiver or the parameter of a + Signal>>#return: + +on: e1 do: b1 on: e2 do: b2 + Evaluate the receiver; when e1 or e2 are signaled, evaluate + respectively b1 or b2, passing a Signal describing the exception. + Answer either the result of evaluating the receiver or the + argument of a Signal>>#return: + +on: e1 do: b1 on: e2 do: b2 on: e3 do: b3 + Evaluate the receiver; when e1, e2 or e3 are signaled, evaluate + respectively b1, b2 or b3, passing a Signal describing the + exception. Answer either the result of evaluating the receiver or + the parameter of a Signal>>#return: + +on: e1 do: b1 on: e2 do: b2 on: e3 do: b3 on: e4 do: b4 + Evaluate the receiver; when e1, e2, e3 or e4 are signaled, evaluate + respectively b1, b2, b3 or b4, passing a Signal describing the + exception. Answer either the result of evaluating the receiver or + the parameter of a Signal>>#return: + +on: e1 do: b1 on: e2 do: b2 on: e3 do: b3 on: e4 do: b4 on: e5 do: b5 + Evaluate the receiver; when e1, e2, e3, e4 or e5 are signaled, + evaluate respectively b1, b2, b3, b4 or b5, passing a Signal + describing the exception. Answer either the result of evaluating + the receiver or the parameter of a Signal>>#return: + + + +File: gst-base.info, Node: BlockClosure-multiple process, Next: BlockClosure-overriding, Prev: BlockClosure-exception handling, Up: BlockClosure + +BlockClosure: multiple process +------------------------------ + +fork + Create a new process executing the receiver and start it + +forkAt: priority + Create a new process executing the receiver with given priority + and start it + +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). + +newProcess + Create a new process executing the receiver in suspended state. + The priority is the same as for the calling process. The receiver + must not contain returns + +newProcessWith: anArray + Create a new process executing the receiver with the passed + arguments, and leave it in suspended state. The priority is the + same as for the calling process. The receiver must not contain + returns + +valueWithoutInterrupts + Evaluate aBlock and delay all interrupts that are requested to the + active process during its execution to after aBlock returns. + +valueWithoutPreemption + Evaluate the receiver with external interrupts disabled. This + effectively disables preemption as long as the block does not + explicitly yield control, wait on semaphores, and the like. + + + +File: gst-base.info, Node: BlockClosure-overriding, Next: BlockClosure-testing, Prev: BlockClosure-multiple process, Up: BlockClosure + +BlockClosure: overriding +------------------------ + +deepCopy + Answer the receiver. + +shallowCopy + Answer the receiver. + + + +File: gst-base.info, Node: BlockClosure-testing, Next: BlockClosure-unwind protection, Prev: BlockClosure-overriding, Up: BlockClosure + +BlockClosure: testing +--------------------- + +hasMethodReturn + Answer whether the block contains a method return + + + +File: gst-base.info, Node: BlockClosure-unwind protection, Prev: BlockClosure-testing, Up: BlockClosure + +BlockClosure: unwind protection +------------------------------- + +ensure: aBlock + Evaluate the receiver; when any exception is signaled exit + returning the result of evaluating aBlock; if no exception is + raised, return the result of evaluating aBlock when the receiver + has ended + +ifCurtailed: aBlock + Evaluate the receiver; if its execution triggers an unwind which + truncates the execution of the block (`curtails' the block), + evaluate aBlock. The three cases which can curtail the execution + of the receiver are: a non-local return in the receiver, a + non-local return in a block evaluated by the receiver which + returns past the receiver itself, and an exception raised and not + resumed during the execution of the receiver. + +valueWithUnwind + Evaluate the receiver. Any errors caused by the block will cause a + backtrace, but execution will continue in the method that sent + #valueWithUnwind, after that call. Example: [ 1 / 0 ] + valueWithUnwind. 'unwind works!' printNl. Important: this method + is public, but it is intended to be used in very special cases (as + a rule of thumb, use it only when the corresponding C code uses + the _gst_prepare_execution_environment and + _gst_finish_execution_environment functions). You should usually + rely on #ensure: and #on:do:. + + + +File: gst-base.info, Node: BlockContext, Next: Boolean, Prev: BlockClosure, Up: Base classes + +BlockContext +============ + +Defined in namespace Smalltalk +Superclass: ContextPart +Category: Language-Implementation + My instances represent executing Smalltalk blocks, which are + portions of executeable code that have access to the environment + that they were declared in, take parameters, and result from + BlockClosure objects created to be executed by methods outside the + current class. Block contexts are created by messages sent to + compute a closure's value. They contain a stack and also provide + some methods that can be used in inspection or debugging. + +* Menu: + +* BlockContext-accessing:: (instance) +* BlockContext-printing:: (instance) + + +File: gst-base.info, Node: BlockContext-accessing, Next: BlockContext-printing, Up: BlockContext + +BlockContext: accessing +----------------------- + +caller + Answer the context that called the receiver + +home + Answer the MethodContext to which the receiver refers, or nil if + it has been optimized away + +isBlock + Answer whether the receiver is a block context + + block + +isDisabled + Answers false, because contexts that are skipped when doing a + return are always MethodContexts. BlockContexts are removed from + the chain whenever a non-local return is done, because + MethodContexts need to stay there in case there is a non-local + return from the #ensure: block. + +isEnvironment + To create a valid execution environment for the interpreter even + before it starts, GST creates a fake context whose selector is nil + and which can be used as a marker for the current execution + environment. Answer whether the receiver is that kind of context + (always false, since those contexts are always MethodContexts). + +isUnwind + Answers whether the context must continue execution even after a + non-local return (a return from the enclosing method of a block, or + a call to the #continue: method of ContextPart). Such contexts are + created only by #ensure: and are always MethodContexts. + +nthOuterContext: n + Answer the n-th outer block/method context for the receiver + +outerContext + Answer the outer block/method context for the receiver + + + +File: gst-base.info, Node: BlockContext-printing, Prev: BlockContext-accessing, Up: BlockContext + +BlockContext: printing +---------------------- + +printOn: aStream + Print a representation for the receiver on aStream + + + +File: gst-base.info, Node: Boolean, Next: ByteArray, Prev: BlockContext, Up: Base classes + +Boolean +======= + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Data types + I have two instances in the Smalltalk system: true and false. I + provide methods that are conditional on boolean values, such as + conditional execution and loops, and conditional testing, such as + conditional and and conditional or. I should say that I appear to + provide those operations; my subclasses True and False actually + provide those operations. + +* Menu: + +* Boolean class-testing:: (class) +* Boolean-basic:: (instance) +* Boolean-C hacks:: (instance) +* Boolean-overriding:: (instance) +* Boolean-storing:: (instance) + + +File: gst-base.info, Node: Boolean class-testing, Next: Boolean-basic, Up: Boolean + +Boolean class: testing +---------------------- + +isIdentity + Answer whether x = y implies x == y for instances of the receiver + +isImmediate + Answer whether, if x is an instance of the receiver, x copy == x + + + +File: gst-base.info, Node: Boolean-basic, Next: Boolean-C hacks, Prev: Boolean class-testing, Up: Boolean + +Boolean: basic +-------------- + +& aBoolean + This method's functionality should be implemented by subclasses of + Boolean + +and: aBlock + This method's functionality should be implemented by subclasses of + Boolean + +eqv: aBoolean + This method's functionality should be implemented by subclasses of + Boolean + +ifFalse: falseBlock + This method's functionality should be implemented by subclasses of + Boolean + +ifFalse: falseBlock ifTrue: trueBlock + This method's functionality should be implemented by subclasses of + Boolean + +ifTrue: trueBlock + This method's functionality should be implemented by subclasses of + Boolean + +ifTrue: trueBlock ifFalse: falseBlock + This method's functionality should be implemented by subclasses of + Boolean + +not + This method's functionality should be implemented by subclasses of + Boolean + +or: aBlock + This method's functionality should be implemented by subclasses of + Boolean + +xor: aBoolean + This method's functionality should be implemented by subclasses of + Boolean + +| aBoolean + This method's functionality should be implemented by subclasses of + Boolean + + + +File: gst-base.info, Node: Boolean-C hacks, Next: Boolean-overriding, Prev: Boolean-basic, Up: Boolean + +Boolean: C hacks +---------------- + +asCBooleanValue + This method's functionality should be implemented by subclasses of + Boolean + + + +File: gst-base.info, Node: Boolean-overriding, Next: Boolean-storing, Prev: Boolean-C hacks, Up: Boolean + +Boolean: overriding +------------------- + +deepCopy + Answer the receiver. + +shallowCopy + Answer the receiver. + + + +File: gst-base.info, Node: Boolean-storing, Prev: Boolean-overriding, Up: Boolean + +Boolean: storing +---------------- + +storeOn: aStream + Store on aStream some Smalltalk code which compiles to the receiver + + + +File: gst-base.info, Node: ByteArray, Next: ByteStream, Prev: Boolean, Up: Base classes + +ByteArray +========= + +Defined in namespace Smalltalk +Superclass: ArrayedCollection +Category: Collections-Sequenceable + My instances are similar to strings in that they are both + represented as a sequence of bytes, but my individual elements are + integers, where as a String's elements are characters. + +* Menu: + +* ByteArray-built ins:: (instance) +* ByteArray-converting:: (instance) +* ByteArray-more advanced accessing:: (instance) + + +File: gst-base.info, Node: ByteArray-built ins, Next: ByteArray-converting, Up: ByteArray + +ByteArray: built ins +-------------------- + +asCData: aCType + Convert the receiver to a CObject with the given type + +byteAt: index + Answer the index-th indexed instance variable of the receiver + +byteAt: index put: value + Store the `value' byte in the index-th indexed instance variable + of the receiver + +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), + starting at the replaceStart location of aByteArray + +replaceFrom: start to: stop withString: aString startingAt: replaceStart + 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 replaceStart location of aString + + + +File: gst-base.info, Node: ByteArray-converting, Next: ByteArray-more advanced accessing, Prev: ByteArray-built ins, Up: ByteArray + +ByteArray: converting +--------------------- + +asString + Answer a String whose character's ASCII codes are the receiver's + contents + + + +File: gst-base.info, Node: ByteArray-more advanced accessing, Prev: ByteArray-converting, Up: ByteArray + +ByteArray: more advanced accessing +---------------------------------- + +charAt: index + Access the C char at the given index in the receiver. The value is + returned as a Smalltalk Character. Indices are 1-based just like + for other Smalltalk access. + +charAt: index put: value + Store as a C char the Smalltalk Character or Integer object + identified by `value', at the given index in the receiver, using + sizeof(char) bytes - i.e. 1 byte. Indices are 1-based just like + for other Smalltalk access. + +doubleAt: index + Access the C double at the given index in the receiver. Indices + are 1-based just like for other Smalltalk access. + +doubleAt: index put: value + Store the Smalltalk Float object identified by `value', at the + given index in the receiver, writing it like a C double. Indices + are 1-based just like for other Smalltalk access. + +floatAt: index + Access the C float at the given index in the receiver. Indices + are 1-based just like for other Smalltalk access. + +floatAt: index put: value + Store the Smalltalk Float object identified by `value', at the + given index in the receiver, writing it like a C float. Indices + are 1-based just like for other Smalltalk access. + +intAt: index + Access the C int at the given index in the receiver. Indices are + 1-based just like for other Smalltalk access. + +intAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(int) bytes. Indices are + 1-based just like for other Smalltalk access. + +longAt: index + Access the C long int at the given index in the receiver. Indices + are 1-based just like for other Smalltalk access. + +longAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(long) bytes. Indices + are 1-based just like for other Smalltalk access. + +objectAt: index + Access the Smalltalk object (OOP) at the given index in the + receiver. Indices are 1-based just like for other Smalltalk + access. + +objectAt: index put: value + Store a pointer (OOP) to the Smalltalk object identified by + `value', at the given index in the receiver. Indices are 1-based + just like for other Smalltalk access. + +shortAt: index + Access the C short int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +shortAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(short) bytes. Indices + are 1-based just like for other Smalltalk access. + +stringAt: index + Access the string pointed by the C `char *' at the given index in + the receiver. Indices are 1-based just like for other Smalltalk + access. + +stringAt: index put: value + Store the Smalltalk String object identified by `value', at the + given index in the receiver, writing it like a *FRESHLY ALLOCATED* + C string. It is the caller's responsibility to free it if + necessary. Indices are 1-based just like for other Smalltalk + access. + +ucharAt: index + Access the C unsigned char at the given index in the receiver. + The value is returned as a Smalltalk Character. Indices are + 1-based just like for other Smalltalk access. + +ucharAt: index put: value + Store as a C char the Smalltalk Character or Integer object + identified by `value', at the given index in the receiver, using + sizeof(char) bytes - i.e. 1 byte. Indices are 1-based just like + for other Smalltalk access. + +uintAt: index + Access the C unsigned int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +uintAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(int) bytes. Indices are + 1-based just like for other Smalltalk access. + +ulongAt: index + Access the C unsigned long int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +ulongAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(long) bytes. Indices + are 1-based just like for other Smalltalk access. + +unsignedCharAt: index + Access the C unsigned char at the given index in the receiver. + The value is returned as a Smalltalk Character. Indices are + 1-based just like for other Smalltalk access. + +unsignedCharAt: index put: value + Store as a C char the Smalltalk Character or Integer object + identified by `value', at the given index in the receiver, using + sizeof(char) bytes - i.e. 1 byte. Indices are 1-based just like + for other Smalltalk access. + +unsignedIntAt: index + Access the C unsigned int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +unsignedIntAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(int) bytes. Indices are + 1-based just like for other Smalltalk access. + +unsignedLongAt: index + Access the C unsigned long int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +unsignedLongAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(long) bytes. Indices + are 1-based just like for other Smalltalk access. + +unsignedShortAt: index + Access the C unsigned short int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +unsignedShortAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(short) bytes. Indices + are 1-based just like for other Smalltalk access. + +ushortAt: index + Access the C unsigned short int at the given index in the receiver. + Indices are 1-based just like for other Smalltalk access. + +ushortAt: index put: value + Store the Smalltalk Integer object identified by `value', at the + given index in the receiver, using sizeof(short) bytes. Indices + are 1-based just like for other Smalltalk access. + + + +File: gst-base.info, Node: ByteStream, Next: CAggregate, Prev: ByteArray, Up: Base classes + +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 + +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 + +nextLong + Return the next 4 bytes in the byte array, interpreted as a 32 bit + signed int + +nextPut: aChar + Store aChar on the byte array + +nextPutAll: aCollection + Write all the objects in aCollection to the receiver + +nextPutByte: anInteger + Store anInteger (range: -128..255) on the byte array + +nextPutByteArray: aByteArray + Store aByteArray on the byte array + +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 + +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 + +CAggregate +========== + +Defined in namespace Smalltalk +Superclass: CObject +Category: Language-C interface + +* Menu: + +* CAggregate class-accessing:: (class) +* CAggregate-accessing:: (instance) + + +File: gst-base.info, Node: CAggregate class-accessing, Next: CAggregate-accessing, Up: CAggregate + +CAggregate class: accessing +--------------------------- + +alignof + Answer the receiver's instances required aligment + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CAggregate-accessing, Prev: CAggregate class-accessing, Up: CAggregate + +CAggregate: accessing +--------------------- + +elementType + Answer the type over which the receiver is constructed. + + + +File: gst-base.info, Node: CallinProcess, Next: CArray, Prev: CAggregate, Up: Base classes + +CallinProcess +============= + +Defined in namespace Smalltalk +Superclass: Process +Category: Language-Processes + I represent a unit of computation for which external C code + requested execution, so I must store the returned value once my + computation terminates and I must not survive across image saves + (since those who invoked me no longer exist). I am otherwise + equivalent to a Process. + +* Menu: + + +File: gst-base.info, Node: CArray, Next: CArrayCType, Prev: CallinProcess, Up: Base classes + +CArray +====== + +Defined in namespace Smalltalk +Superclass: CAggregate +Category: Language-C interface + +* Menu: + +* CArray-accessing:: (instance) + + +File: gst-base.info, Node: CArray-accessing, Up: CArray + +CArray: accessing +----------------- + +alignof + Answer the receiver's required aligment + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CArrayCType, Next: CBoolean, Prev: CArray, Up: Base classes + +CArrayCType +=========== + +Defined in namespace Smalltalk +Superclass: CPtrCType +Category: Language-C interface + +* Menu: + +* CArrayCType class-instance creation:: (class) +* CArrayCType-accessing:: (instance) + + +File: gst-base.info, Node: CArrayCType class-instance creation, Next: CArrayCType-accessing, Up: CArrayCType + +CArrayCType class: instance creation +------------------------------------ + +elementType: aCType + This method should not be called for instances of this class. + +elementType: aCType numberOfElements: anInteger + Answer a new instance of CPtrCType that maps an array whose + elements are of the given CType, and whose size is exactly + anInteger elements (of course, anInteger only matters for + allocation, not for access, since no out-of-bounds protection is + provided for C objects). + + + +File: gst-base.info, Node: CArrayCType-accessing, Prev: CArrayCType class-instance creation, Up: CArrayCType + +CArrayCType: accessing +---------------------- + +alignof + Answer the alignment of the receiver's instances + +numberOfElements + Answer the number of elements in the receiver's instances + +sizeof + Answer the size of the receiver's instances + + + +File: gst-base.info, Node: CBoolean, Next: CByte, Prev: CArrayCType, Up: Base classes + +CBoolean +======== + +Defined in namespace Smalltalk +Superclass: CByte +Category: Language-C interface + I return true if a byte is not zero, false otherwise. + +* Menu: + +* CBoolean-accessing:: (instance) + + +File: gst-base.info, Node: CBoolean-accessing, Up: CBoolean + +CBoolean: accessing +------------------- + +value + Get the receiver's value - answer true if it is != 0, false if it + is 0. + +value: aBoolean + Set the receiver's value - it's the same as for CBytes, but we get + a Boolean, not a Character + + + +File: gst-base.info, Node: CByte, Next: CChar, Prev: CBoolean, Up: Base classes + +CByte +===== + +Defined in namespace Smalltalk +Superclass: CUChar +Category: Language-C interface + You're a marine. You adapt - you improvise - you overcome + + - Gunnery Sgt. Thomas Highway + Heartbreak Ridge + +* Menu: + +* CByte class-conversion:: (class) +* CByte-accessing:: (instance) + + +File: gst-base.info, Node: CByte class-conversion, Next: CByte-accessing, Up: CByte + +CByte class: conversion +----------------------- + +scalarIndex + Nothing special in the default case - answer a CType for the + receiver + +type + Nothing special in the default case - answer a CType for the + receiver + + + +File: gst-base.info, Node: CByte-accessing, Prev: CByte class-conversion, Up: CByte + +CByte: accessing +---------------- + +scalarIndex + Nothing special in the default case - answer the receiver's CType + +type + Answer a CType for the receiver + +value + Answer the value the receiver is pointing to. The returned value + is a SmallInteger + +value: aValue + Set the receiver to point to the value, aValue (a SmallInteger). + + + +File: gst-base.info, Node: CChar, Next: CCompound, Prev: CByte, Up: Base classes + +CChar +===== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CChar class-accessing:: (class) +* CChar-accessing:: (instance) + + +File: gst-base.info, Node: CChar class-accessing, Next: CChar-accessing, Up: CChar + +CChar class: accessing +---------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CChar-accessing, Prev: CChar class-accessing, Up: CChar + +CChar: accessing +---------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CCompound, Next: CDouble, Prev: CChar, Up: Base classes + +CCompound +========= + +Defined in namespace Smalltalk +Superclass: CObject +Category: Language-C interface + +* Menu: + +* CCompound class-instance creation:: (class) +* CCompound class-subclass creation:: (class) +* CCompound-instance creation:: (instance) + + +File: gst-base.info, Node: CCompound class-instance creation, Next: CCompound class-subclass creation, Up: CCompound + +CCompound class: instance creation +---------------------------------- + +new + Allocate a new instance of the receiver. To free the memory after + GC, remember to call #addToBeFinalized. + +type + Answer a CType for the receiver + + + +File: gst-base.info, Node: CCompound class-subclass creation, Next: CCompound-instance creation, Prev: CCompound class-instance creation, Up: CCompound + +CCompound class: subclass creation +---------------------------------- + +alignof + Answer 1, the alignment of an empty struct + +compileDeclaration: array + This method's functionality should be implemented by subclasses of + CCompound + +compileDeclaration: array inject: startOffset into: aBlock + Compile methods that implement the declaration in array. To + compute the offset after each field, the value of the old offset + plus the new field's size is passed to aBlock, together with the + new field's alignment requirements. + +compileSize: size align: alignment + Private - Compile sizeof and alignof methods + +computeAggregateType: type block: aBlock + Private - Called by computeTypeString:block: for pointers/arrays. + Format of type: (array int 3) or (ptr FooStruct) + +computeArrayType: type block: aBlock + Private - Called by computeAggregateType:block: for arrays + +computePtrType: type block: aBlock + Private - Called by computeAggregateType:block: for pointers + +computeTypeString: type block: aBlock + Private - Pass the size, alignment, and description of CType for + aBlock, given the field description in `type' (the second element + of each pair). + +emitInspectTo: str for: name + Private - Emit onto the given stream the code for adding the given + selector to the CCompound's inspector. + +initialize + Initialize the receiver's TypeMap + +newStruct: structName declaration: array + The old way to create a CStruct. Superseded by + #subclass:declaration:... + +sizeof + Answer 0, the size of an empty struct + +subclass: structName declaration: array + classVariableNames: cvn poolDictionaries: pd category: category + Create a new class with the given name that contains code to + implement the given C struct. All the parameters except `array' + are the same as for a standard class creation message; see + documentation for more information + + + +File: gst-base.info, Node: CCompound-instance creation, Prev: CCompound class-subclass creation, Up: CCompound + +CCompound: instance creation +---------------------------- + +inspect + Inspect the contents of the receiver + +inspectSelectorList + Answer a list of selectors whose return values should be inspected + by #inspect. + + + +File: gst-base.info, Node: CDouble, Next: CFloat, Prev: CCompound, Up: Base classes + +CDouble +======= + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CDouble class-accessing:: (class) +* CDouble-accessing:: (instance) + + +File: gst-base.info, Node: CDouble class-accessing, Next: CDouble-accessing, Up: CDouble + +CDouble class: accessing +------------------------ + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CDouble-accessing, Prev: CDouble class-accessing, Up: CDouble + +CDouble: accessing +------------------ + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CFloat, Next: CFunctionDescriptor, Prev: CDouble, Up: Base classes + +CFloat +====== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CFloat class-accessing:: (class) +* CFloat-accessing:: (instance) + + +File: gst-base.info, Node: CFloat class-accessing, Next: CFloat-accessing, Up: CFloat + +CFloat class: accessing +----------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CFloat-accessing, Prev: CFloat class-accessing, Up: CFloat + +CFloat: accessing +----------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CFunctionDescriptor, Next: Character, Prev: CFloat, Up: Base classes + +CFunctionDescriptor +=================== + +Defined in namespace Smalltalk +Superclass: Object +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: + +* CFunctionDescriptor class-instance creation:: (class) +* CFunctionDescriptor class-testing:: (class) +* CFunctionDescriptor-accessing:: (instance) +* CFunctionDescriptor-calling:: (instance) +* CFunctionDescriptor-printing:: (instance) + + +File: gst-base.info, Node: CFunctionDescriptor class-instance creation, Next: CFunctionDescriptor class-testing, Up: CFunctionDescriptor + +CFunctionDescriptor class: instance creation +-------------------------------------------- + +for: funcNameString returning: returnTypeSymbol withArgs: argsArray + Private - Answer a CFunctionDescriptor + + + +File: gst-base.info, Node: CFunctionDescriptor class-testing, Next: CFunctionDescriptor-accessing, Prev: CFunctionDescriptor class-instance creation, Up: CFunctionDescriptor + +CFunctionDescriptor class: testing +---------------------------------- + +addressOf: function + Answer whether a function is registered (on the C side) with the + given name or is dynamically loadable. + +isFunction: function + Answer whether a function is registered (on the C side) with the + given name. + + + +File: gst-base.info, Node: CFunctionDescriptor-accessing, Next: CFunctionDescriptor-calling, Prev: CFunctionDescriptor class-testing, Up: CFunctionDescriptor + +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 + + + +File: gst-base.info, Node: CFunctionDescriptor-calling, Next: CFunctionDescriptor-printing, Prev: CFunctionDescriptor-accessing, Up: CFunctionDescriptor + +CFunctionDescriptor: calling +---------------------------- + +asyncCallFrom: 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. + +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. + +callFrom: 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. + +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: CFunctionDescriptor-printing, Prev: CFunctionDescriptor-calling, Up: CFunctionDescriptor + +CFunctionDescriptor: printing +----------------------------- + +printOn: aStream + Print a representation of the receiver onto aStream + + + +File: gst-base.info, Node: Character, Next: CharacterArray, Prev: CFunctionDescriptor, Up: Base classes + +Character +========= + +Defined in namespace Smalltalk +Superclass: Magnitude +Category: Language-Data types + My instances represent the 256 characters of the character set. I + provide messages to translate between integers and character + objects, and provide names for some of the common unprintable + characters. + +* Menu: + +* Character class-built ins:: (class) +* Character class-constants:: (class) +* Character class-initializing lookup tables:: (class) +* Character class-instance creation:: (class) +* Character class-testing:: (class) +* Character-built ins:: (instance) +* Character-coercion methods:: (instance) +* Character-comparing:: (instance) +* Character-converting:: (instance) +* Character-printing:: (instance) +* Character-storing:: (instance) +* Character-testing:: (instance) +* Character-testing functionality:: (instance) + + +File: gst-base.info, Node: Character class-built ins, Next: Character class-constants, Up: Character + +Character class: built ins +-------------------------- + +asciiValue: anInteger + Returns the character object corresponding to anInteger. Error if + anInteger is not an integer, or not in 0..255. #codePoint:, + #asciiValue: and #value: are synonyms. + +codePoint: anInteger + Returns the character object corresponding to anInteger. Error if + anInteger is not an integer, or not in 0..255. #codePoint:, + #asciiValue: and #value: are synonyms. + +value: anInteger + Returns the character object corresponding to anInteger. Error if + anInteger is not an integer, or not in 0..255. #codePoint:, + #asciiValue: and #value: are synonyms. + + + +File: gst-base.info, Node: Character class-constants, Next: Character class-initializing lookup tables, Prev: Character class-built ins, Up: Character + +Character class: constants +-------------------------- + +backspace + Returns the character 'backspace' + +bell + Returns the character 'bel' + +cr + Returns the character 'cr' + +eof + Returns the character 'eof', also known as 'sub' + +eot + Returns the character 'eot', also known as 'Ctrl-D' + +esc + Returns the character 'esc' + +lf + Returns the character 'lf', also known as 'nl' + +newPage + Returns the character 'newPage', also known as 'ff' + +nl + Returns the character 'nl', also known as 'lf' + +nul + Returns the character 'nul' + +space + Returns the character 'space' + +tab + Returns the character 'tab' + + + +File: gst-base.info, Node: Character class-initializing lookup tables, Next: Character class-instance creation, Prev: Character class-constants, Up: Character + +Character class: initializing lookup tables +------------------------------------------- + +initialize + Initialize the lookup table which is used to make case and + digit-to-char conversions faster. Indices in Table are ASCII + values incremented by one. Indices 1-256 classify chars (0 = + nothing special, 2 = separator, 48 = digit, 55 = uppercase, 3 = + lowercase), indices 257-512 map to lowercase chars, indices + 513-768 map to uppercase chars. + + + +File: gst-base.info, Node: Character class-instance creation, Next: Character class-testing, Prev: Character class-initializing lookup tables, Up: Character + +Character class: instance creation +---------------------------------- + +digitValue: anInteger + Returns a character that corresponds to anInteger. 0-9 map to + $0-$9, 10-35 map to $A-$Z + + + +File: gst-base.info, Node: Character class-testing, Next: Character-built ins, Prev: Character class-instance creation, Up: Character + +Character class: testing +------------------------ + +isIdentity + Answer whether x = y implies x == y for instances of the receiver + +isImmediate + Answer whether, if x is an instance of the receiver, x copy == x + + + +File: gst-base.info, Node: Character-built ins, Next: Character-coercion methods, Prev: Character class-testing, Up: Character + +Character: built ins +-------------------- + += char + Boolean return value; true if the characters are equal + +asciiValue + Returns the integer value corresponding to self. #codePoint, + #asciiValue, #value, and #asInteger are synonyms. + +asInteger + Returns the integer value corresponding to self. #codePoint, + #asciiValue, #value, and #asInteger are synonyms. + +codePoint + Returns the integer value corresponding to self. #codePoint, + #asciiValue, #value, and #asInteger are synonyms. + +value + Returns the integer value corresponding to self. #codePoint, + #asciiValue, #value, and #asInteger are synonyms. + + + +File: gst-base.info, Node: Character-coercion methods, Next: Character-comparing, Prev: Character-built ins, Up: Character + +Character: coercion methods +--------------------------- + +asLowercase + Returns self as a lowercase character if it's an uppercase letter, + otherwise returns the character unchanged. + +asString + Returns the character self as a string. + +asSymbol + Returns the character self as a symbol. + +asUppercase + Returns self as a uppercase character if it's an lowercase letter, + otherwise returns the character unchanged. + + + +File: gst-base.info, Node: Character-comparing, Next: Character-converting, Prev: Character-coercion methods, Up: Character + +Character: comparing +-------------------- + +< aCharacter + Compare the character's ASCII value. Answer whether the receiver's + is the least. + +<= aCharacter + Compare the character's ASCII value. Answer whether the receiver's + is the least or their equal. + +> aCharacter + Compare the character's ASCII value. Answer whether the receiver's + is the greatest. + +>= aCharacter + Compare the character's ASCII value. Answer whether the receiver's + is the greatest or their equal. + + + +File: gst-base.info, Node: Character-converting, Next: Character-printing, Prev: Character-comparing, Up: Character + +Character: converting +--------------------- + +digitValue + Returns the value of self interpreted as a digit. Here, 'digit' + means either 0-9, or A-Z, which maps to 10-35. + + + +File: gst-base.info, Node: Character-printing, Next: Character-storing, Prev: Character-converting, Up: Character + +Character: printing +------------------- + +displayOn: aStream + Print a representation of the receiver on aStream. Unlike + #printOn:, this method strips the leading dollar. + +printOn: aStream + Store a representation of the receiver on aStream + + + +File: gst-base.info, Node: Character-storing, Next: Character-testing, Prev: Character-printing, Up: Character + +Character: storing +------------------ + +storeOn: aStream + Store Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Character-testing, Next: Character-testing functionality, Prev: Character-storing, Up: Character + +Character: testing +------------------ + +isAlphaNumeric + True if self is a letter or a digit + +isDigit + True if self is a 0-9 digit + +isLetter + True if self is an upper- or lowercase letter + +isLowercase + True if self is a lowercase letter + +isPunctuation + Returns true if self is one of '.,:;!?' + +isSeparator + Returns true if self is a space, cr, tab, nl, or newPage + +isUppercase + True if self is uppercase + +isVowel + Returns true if self is a, e, i, o, or u; case insensitive + + + +File: gst-base.info, Node: Character-testing functionality, Prev: Character-testing, Up: Character + +Character: testing functionality +-------------------------------- + +isCharacter + Answer True. We're definitely characters + + + +File: gst-base.info, Node: CharacterArray, Next: CInt, Prev: Character, Up: Base classes + +CharacterArray +============== + +Defined in namespace Smalltalk +Superclass: ArrayedCollection +Category: Language-Data types + My instances represent a generic textual (string) data type. I + provide accessing and manipulation methods for strings. + +* Menu: + +* CharacterArray class-basic:: (class) +* CharacterArray-basic:: (instance) +* CharacterArray-built ins:: (instance) +* CharacterArray-comparing:: (instance) +* CharacterArray-converting:: (instance) +* CharacterArray-printing:: (instance) +* CharacterArray-storing:: (instance) +* CharacterArray-string processing:: (instance) +* CharacterArray-testing functionality:: (instance) + + +File: gst-base.info, Node: CharacterArray class-basic, Next: CharacterArray-basic, Up: CharacterArray + +CharacterArray class: basic +--------------------------- + +fromString: aCharacterArray + Make up an instance of the receiver containing the same characters + as aCharacterArray, and answer it. + +lineDelimiter + Answer a CharacterArray which one can use as a line delimiter. + + + +File: gst-base.info, Node: CharacterArray-basic, Next: CharacterArray-built ins, Prev: CharacterArray class-basic, Up: CharacterArray + +CharacterArray: basic +--------------------- + +basicAt: index + Answer the index-th character of the receiver. This is an exception + to the `do not override' rule that allows storage optimization by + storing the characters as values instead of as objects. + +basicAt: index put: anObject + Set the index-th character of the receiver to be anObject. This + method must not be overridden; override at: instead. String + overrides it so that it looks like it contains character objects + even though it contains bytes + + + +File: gst-base.info, Node: CharacterArray-built ins, Next: CharacterArray-comparing, Prev: CharacterArray-basic, Up: CharacterArray + +CharacterArray: built ins +------------------------- + +valueAt: index + Answer the ascii value of index-th character variable of the + receiver + +valueAt: index put: value + Store (Character value: value) in the index-th indexed instance + variable of the receiver + + + +File: gst-base.info, Node: CharacterArray-comparing, Next: CharacterArray-converting, Prev: CharacterArray-built ins, Up: CharacterArray + +CharacterArray: comparing +------------------------- + +< aCharacterArray + Return true if the receiver is less than aCharacterArray, ignoring + case differences. + +<= aCharacterArray + Returns true if the receiver is less than or equal to + aCharacterArray, ignoring case differences. If is receiver is an + initial substring of aCharacterArray, it is considered to be less + than aCharacterArray. + +> aCharacterArray + Return true if the receiver is greater than aCharacterArray, + ignoring case differences. + +>= aCharacterArray + Returns true if the receiver is greater than or equal to + aCharacterArray, ignoring case differences. If is aCharacterArray + is an initial substring of the receiver, it is considered to be + less than the receiver. + +indexOf: aCharacterArray matchCase: aBoolean startingAt: anIndex + Answer an Interval of indices in the receiver which match the + aCharacterArray pattern. # in aCharacterArray means 'match any + character', * in aCharacterArray means 'match any sequence of + characters'. The first item of the returned in- terval is >= + anIndex. If aBoolean is false, the search is case-insen- sitive, + else it is case-sensitive. If no Interval matches the pattern, + answer nil. + +match: aCharacterArray + Answer whether aCharacterArray matches the pattern contained in the + receiver. # in the receiver means 'match any character', * in + receiver means 'match any sequence of characters'. + +match: aCharacterArray ignoreCase: aBoolean + Answer whether aCharacterArray matches the pattern contained in the + receiver. # in the receiver means 'match any character', * in + receiver means 'match any sequence of characters'. The case of + alphabetic characters is ignored if aBoolean is true. + +sameAs: aCharacterArray + 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-printing, Prev: CharacterArray-comparing, Up: CharacterArray + +CharacterArray: converting +-------------------------- + +asByteArray + Return the receiver, converted to a ByteArray of ASCII values + +asClassPoolKey + Return the receiver, ready to be put in a class pool dictionary + +asGlobalKey + Return the receiver, ready to be put in the Smalltalk dictionary + +asInteger + Parse an Integer number from the receiver until the input character + is invalid and answer the result at this point + +asLowercase + Returns a copy of self as a lowercase CharacterArray + +asNumber + Parse a Number from the receiver until the input character is + invalid and answer the result at this point + +asPoolKey + Return the receiver, ready to be put in a pool dictionary + +asString + But I already am a String! Really! + +asSymbol + Returns the symbol corresponding to the CharacterArray + +asUppercase + Returns a copy of self as an uppercase CharacterArray + +fileName + But I don't HAVE a file name! + +filePos + But I don't HAVE a file position! + +isNumeric + Answer whether the receiver denotes a number + +trimSeparators + Return a copy of the reciever without any spaces on front or back. + The implementation is protected against the `all blanks' case. + + + +File: gst-base.info, Node: CharacterArray-printing, Next: CharacterArray-storing, Prev: CharacterArray-converting, Up: CharacterArray + +CharacterArray: printing +------------------------ + +displayOn: aStream + Print a representation of the receiver on aStream. Unlike + #printOn:, this method strips extra quotes. + +displayString + Answer a String representing the receiver. For most objects this + is simply its #printString, but for CharacterArrays and characters, + superfluous dollars or extra pair of quotes are stripped. + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: CharacterArray-storing, Next: CharacterArray-string processing, Prev: CharacterArray-printing, Up: CharacterArray + +CharacterArray: storing +----------------------- + +storeOn: aStream + Print Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: CharacterArray-string processing, Next: CharacterArray-testing functionality, Prev: CharacterArray-storing, Up: CharacterArray + +CharacterArray: string processing +--------------------------------- + +bindWith: s1 + Answer the receiver with every %1 replaced by the displayString of + s1 + +bindWith: s1 with: s2 + Answer the receiver with every %1 or %2 replaced by s1 or s2, + respectively. s1 and s2 are `displayed' (i.e. their displayString + is used) upon replacement. + +bindWith: s1 with: s2 with: s3 + Answer the receiver with every %1, %2 or %3 replaced by s1, s2 or + s3, respectively. s1, s2 and s3 are `displayed' (i.e. their + displayString is used) upon replacement. + +bindWith: s1 with: s2 with: s3 with: s4 + Answer the receiver with every %1, %2, %3 or %4 replaced by s1, + s2, s3 or s4, respectively. s1, s2, s3 and s4 are `displayed' + (i.e. their displayString is used) upon replacement. + +bindWithArguments: anArray + Answer the receiver with every %n (1<=n<=9) replaced by the n-th + element of anArray. The replaced elements are `displayed' (i.e. + their displayString is used). In addition, the special pattern + %n is replaced with one of the two strings + depending on the n-th element of anArray being true or false. + +contractTo: smallSize + Either return myself, or a copy shortened to smallSize characters + by inserting an ellipsis (three dots: ...) + +subStrings + Answer an OrderedCollection of substrings of the receiver. A new + substring start at the start of the receiver, or after every + sequence of white space characters + +substrings + Answer an OrderedCollection of substrings of the receiver. A new + substring start at the start of the receiver, or after every + sequence of white space characters. This message is preserved for + backwards compatibility; the ANSI standard mandates `subStrings', + with an uppercase s. + +substrings: aCharacter + Answer an OrderedCollection of substrings of the receiver. A new + substring start at the start of the receiver, or after every + sequence of characters matching aCharacter. This message is + preserved for backwards compatibility; the ANSI standard mandates + `subStrings:', with an uppercase s. + +subStrings: aCharacter + Answer an OrderedCollection of substrings of the receiver. A new + substring start at the start of the receiver, or after every + sequence of characters matching aCharacter + + + +File: gst-base.info, Node: CharacterArray-testing functionality, Prev: CharacterArray-string processing, Up: CharacterArray + +CharacterArray: testing functionality +------------------------------------- + +isCharacterArray + Answer `true'. + + + +File: gst-base.info, Node: CInt, Next: Class, Prev: CharacterArray, Up: Base classes + +CInt +==== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CInt class-accessing:: (class) +* CInt-accessing:: (instance) + + +File: gst-base.info, Node: CInt class-accessing, Next: CInt-accessing, Up: CInt + +CInt class: accessing +--------------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CInt-accessing, Prev: CInt class-accessing, Up: CInt + +CInt: accessing +--------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: Class, Next: ClassDescription, Prev: CInt, Up: Base classes + +Class +===== + +Defined in namespace Smalltalk +Superclass: ClassDescription +Category: Language-Implementation + I am THE class object. My instances are the classes of the system. + I provide information commonly attributed to classes: namely, the + class name, class comment (you wouldn't be reading this if it + weren't for me), a list of the instance variables of the class, and + the class category. + +* Menu: + +* Class-accessing instances and variables:: (instance) +* Class-filing:: (instance) +* Class-instance creation:: (instance) +* Class-instance creation - alternative:: (instance) +* Class-printing:: (instance) +* Class-saving and loading:: (instance) +* Class-testing:: (instance) +* Class-testing functionality:: (instance) + + +File: gst-base.info, Node: Class-accessing instances and variables, Next: Class-filing, Up: Class + +Class: accessing instances and variables +---------------------------------------- + +addClassVarName: aString + Add a class variable with the given name to the class pool + dictionary + +addSharedPool: aDictionary + Add the given shared pool to the list of the class' pool + dictionaries + +allClassVarNames + Answer the names of the variables in the receiver's class pool + dictionary and in each of the superclasses' class pool dictionaries + +bindingFor: aString + Answer the variable binding for the class variable with the given + name + +category + Answer the class category + +category: aString + Change the class category to aString + +classPool + Answer the class pool dictionary + +classVarNames + Answer the names of the variables in the class pool dictionary + +comment + Answer the class comment + +comment: aString + Change the class name + +environment + Answer `environment'. + +environment: aNamespace + Set the receiver's environment to aNamespace and recompile + everything + +initialize + redefined in children (?) + +name + Answer the class name + +removeClassVarName: aString + Removes the class variable from the class, error if not present, or + still in use. + +removeSharedPool: aDictionary + Remove the given dictionary to the list of the class' pool + dictionaries + +sharedPools + Return the names of the shared pools defined by the class + + + +File: gst-base.info, Node: Class-filing, Next: Class-instance creation, Prev: Class-accessing instances and variables, Up: Class + +Class: filing +------------- + +fileOutDeclarationOn: aFileStream + File out class definition to aFileStream + +fileOutHeaderOn: aFileStream + Write date and time stamp to aFileStream + +fileOutOn: aFileStream + File out complete class description: class definition, class and + instance methods + + + +File: gst-base.info, Node: Class-instance creation, Next: Class-instance creation - alternative, Prev: Class-filing, Up: Class + +Class: instance creation +------------------------ + +extend + Redefine a version of the receiver in the current namespace. Note: + this method can bite you in various ways when sent to system + classes; read the section on namespaces in the manual for some + examples of the problems you can encounter. + +subclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a fixed subclass of the + receiver with the given name, instance variables, class variables, + pool dictionaries and category. If the class is already defined, + if necessary, recompile everything needed. + +variableByteSubclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a byte variable subclass of + the receiver with the given name, instance variables (must be "), + class variables, pool dictionaries and category. If the class is + already defined, if necessary, recompile everything needed. + +variableSubclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a variable pointer subclass of + the receiver with the given name, instance variables, class + variables, pool dictionaries and category. If the class is already + defined, if necessary, recompile everything needed. + +variableWordSubclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a word variable subclass of + the receiver with the given name, instance variables (must be "), + class variables, pool dictionaries and category. If the class is + already defined, if necessary, recompile everything needed. + + + +File: gst-base.info, Node: Class-instance creation - alternative, Next: Class-printing, Prev: Class-instance creation, Up: Class + +Class: instance creation - alternative +-------------------------------------- + +categoriesFor: method are: categories + Don't use this, it is only present to file in from IBM Smalltalk + +subclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableByteSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableByteSubclass: classNameString classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableLongSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableLongSubclass: classNameString classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + + + +File: gst-base.info, Node: Class-printing, Next: Class-saving and loading, Prev: Class-instance creation - alternative, Up: Class + +Class: printing +--------------- + +article + Answer an article (`a' or `an') which is ok for the receiver's name + +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: Class-saving and loading, Next: Class-testing, Prev: Class-printing, Up: Class + +Class: saving and loading +------------------------- + +binaryRepresentationVersion + Answer a number >= 0 which represents the current version of the + object's representation. The default implementation answers zero. + +convertFromVersion: version withFixedVariables: fixed + indexedVariables: indexed for: anObjectDumper + This method is called if a VersionableObjectProxy is attached to a + class. It receives the version number that was stored for the + object (or nil if the object did not use a VersionableObjectProxy), + the fixed instance variables, the indexed instance variables, and + the ObjectDumper that has read the object. The default + implementation ignores the version and simply fills in an instance + of the receiver with the given fixed and indexed instance + variables (nil if the class instances are of fixed size). If + instance variables were removed from the class, extras are + ignored; if the class is now fixed and used to be indexed, indexed + is not used. + +nonVersionedInstSize + Answer the number of instance variables that the class used to have + when objects were stored without using a VersionableObjectProxy. + The default implementation answers the current instSize. + + + +File: gst-base.info, Node: Class-testing, Next: Class-testing functionality, Prev: Class-saving and loading, Up: Class + +Class: testing +-------------- + += aClass + Returns true if the two class objects are to be considered equal. + + + +File: gst-base.info, Node: Class-testing functionality, Prev: Class-testing, Up: Class + +Class: testing functionality +---------------------------- + +asClass + Answer the receiver. + +isClass + Answer `true'. + + + +File: gst-base.info, Node: ClassDescription, Next: CLong, Prev: Class, Up: Base classes + +ClassDescription +================ + +Defined in namespace Smalltalk +Superclass: Behavior +Category: Language-Implementation + My instances provide methods that access classes by category, and + allow whole categories of classes to be filed out to external disk + files. + +* Menu: + +* ClassDescription-compiling:: (instance) +* ClassDescription-conversion:: (instance) +* ClassDescription-copying:: (instance) +* ClassDescription-filing:: (instance) +* ClassDescription-organization of messages and classes:: (instance) +* ClassDescription-printing:: (instance) + + +File: gst-base.info, Node: ClassDescription-compiling, Next: ClassDescription-conversion, Up: ClassDescription + +ClassDescription: compiling +--------------------------- + +compile: code classified: categoryName + Compile code in the receiver, assigning the method to the given + category. Answer the newly created CompiledMethod, or nil if an + error was found. + +compile: code classified: categoryName ifError: block + Compile method source and install in method category, + categoryName. If there are parsing errors, invoke exception + block, 'block' (see compile:ifError:). Return the method + +compile: code classified: categoryName notifying: requestor + Compile method source and install in method category, + categoryName. If there are parsing errors, send an error message + to requestor + + + +File: gst-base.info, Node: ClassDescription-conversion, Next: ClassDescription-copying, Prev: ClassDescription-compiling, Up: ClassDescription + +ClassDescription: conversion +---------------------------- + +asClass + This method's functionality should be implemented by subclasses of + ClassDescription + +asMetaclass + Answer the metaclass associated to the receiver + +binding + Answer a VariableBinding object whose value is the receiver + + + +File: gst-base.info, Node: ClassDescription-copying, Next: ClassDescription-filing, Prev: ClassDescription-conversion, Up: ClassDescription + +ClassDescription: copying +------------------------- + +copy: selector from: aClass + Copy the given selector from aClass, assigning it the same category + +copy: selector from: aClass classified: categoryName + Copy the given selector from aClass, assigning it the given + category + +copyAll: arrayOfSelectors from: class + Copy all the selectors in arrayOfSelectors from class, assigning + them the same category they have in class + +copyAll: arrayOfSelectors from: class classified: categoryName + Copy all the selectors in arrayOfSelectors from aClass, assigning + them the given category + +copyAllCategoriesFrom: aClass + Copy all the selectors in aClass, assigning them the original + category + +copyCategory: categoryName from: aClass + Copy all the selectors in from aClass that belong to the given + category + +copyCategory: categoryName from: aClass classified: newCategoryName + Copy all the selectors in from aClass that belong to the given + category, reclassifying them as belonging to the given category + + + +File: gst-base.info, Node: ClassDescription-filing, Next: ClassDescription-organization of messages and classes, Prev: ClassDescription-copying, Up: ClassDescription + +ClassDescription: filing +------------------------ + +fileOut: fileName + Open the given file and to file out a complete class description + to it + +fileOutCategory: categoryName to: fileName + File out all the methods belonging to the method category, + categoryName, to the fileName file + +fileOutCategory: category toStream: aFileStream + File out all the methods belonging to the method category, + categoryName, to aFileStream + +fileOutOn: aFileStream + File out complete class description: class definition, class and + instance methods + +fileOutSelector: selector to: fileName + File out the given selector to fileName + + + +File: gst-base.info, Node: ClassDescription-organization of messages and classes, Next: ClassDescription-printing, Prev: ClassDescription-filing, Up: ClassDescription + +ClassDescription: organization of messages and classes +------------------------------------------------------ + +classify: aSelector under: aString + Put the method identified by the selector aSelector under the + category given by aString. + +createGetMethod: what + Create a method accessing the variable `what'. + +createGetMethod: what default: value + Create a method accessing the variable `what', with a default value + of `value', using lazy initialization + +createSetMethod: what + Create a method which sets the variable `what'. + +defineAsyncCFunc: cFuncNameString + withSelectorArgs: selectorAndArgs args: argsArray See + documentation. Too complex to describe it here ;-) + +defineCFunc: cFuncNameString + withSelectorArgs: selectorAndArgs returning: returnTypeSymbol + args: argsArray See documentation. Too complex to describe it + here ;-) + +removeCategory: aString + Remove from the receiver every method belonging to the given + category + +whichCategoryIncludesSelector: selector + Answer the category for the given selector, or nil if the selector + is not found + + + +File: gst-base.info, Node: ClassDescription-printing, Prev: ClassDescription-organization of messages and classes, Up: ClassDescription + +ClassDescription: printing +-------------------------- + +classVariableString + This method's functionality should be implemented by subclasses of + ClassDescription + +instanceVariableString + Answer a string containing the name of the receiver's instance + variables. + +nameIn: aNamespace + Answer the class name when the class is referenced from aNamespace + +printOn: aStream in: aNamespace + Print on aStream the class name when the class is referenced from + aNamespace + +sharedVariableString + This method's functionality should be implemented by subclasses of + ClassDescription + + + +File: gst-base.info, Node: CLong, Next: CObject, Prev: ClassDescription, Up: Base classes + +CLong +===== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CLong class-accessing:: (class) +* CLong-accessing:: (instance) + + +File: gst-base.info, Node: CLong class-accessing, Next: CLong-accessing, Up: CLong + +CLong class: accessing +---------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CLong-accessing, Prev: CLong class-accessing, Up: CLong + +CLong: accessing +---------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CObject, Next: Collection, Prev: CLong, Up: Base classes + +CObject +======= + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-C interface + I am not part of the standard Smalltalk kernel class hierarchy. + My instances contain values that are not interpreted by the + Smalltalk system; they frequently hold "pointers" to data outside + of the Smalltalk environment. The C callout mechanism allows my + instances to be transformed into their corresponding C values for + use in external routines. + +* Menu: + +* CObject class-conversion:: (class) +* CObject class-instance creation:: (class) +* CObject-accessing:: (instance) +* CObject-C data access:: (instance) +* CObject-conversion:: (instance) +* CObject-finalization:: (instance) +* CObject-pointer-like behavior:: (instance) + + +File: gst-base.info, Node: CObject class-conversion, Next: CObject class-instance creation, Up: CObject + +CObject class: conversion +------------------------- + +scalarIndex + Nothing special in the default case - answer a CType for the + receiver + +type + Nothing special in the default case - answer a CType for the + receiver + + + +File: gst-base.info, Node: CObject class-instance creation, Next: CObject-accessing, Prev: CObject class-conversion, Up: CObject + +CObject class: instance creation +-------------------------------- + +address: anInteger + Answer a new object pointing to the passed address, anInteger + +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 + +new + Answer a new object pointing to NULL. + +new: nBytes + Allocate nBytes bytes and return an instance of the receiver + + + +File: gst-base.info, Node: CObject-accessing, Next: CObject-C data access, Prev: CObject class-instance creation, Up: CObject + +CObject: accessing +------------------ + +address + Answer the address the receiver is pointing to. + +address: anInteger + Set the receiver to point to the passed address, anInteger + +printOn: aStream + Print a representation of the receiver + +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 + +CObject: C data access +---------------------- + +at: byteOffset put: aValue type: aType + Store aValue as data of the given type from byteOffset bytes after + the pointer stored in the receiver + +at: byteOffset type: aType + Answer some data of the given type from byteOffset bytes after the + pointer stored in the receiver + +free + Free the receiver's pointer and set it to null. Big trouble hits + you if the receiver doesn't point to the base of a malloc-ed area. + + + +File: gst-base.info, Node: CObject-conversion, Next: CObject-finalization, Prev: CObject-C data access, Up: CObject + +CObject: conversion +------------------- + +castTo: aType + Answer another CObject, pointing to the same address as the + receiver, but belonging to the aType CType. + +narrow + This method is called on CObjects returned by a C call-out whose + return type is specified as a CType; it mostly allows one to + change the class of the returned CObject. By default it does + nothing, and that's why it is not called when #cObject is used to + specify the return type. + +scalarIndex + Nothing special in the default case - answer the receiver's CType + +type + Answer a CType for the receiver + + + +File: gst-base.info, Node: CObject-finalization, Next: CObject-pointer-like behavior, Prev: CObject-conversion, Up: CObject + +CObject: finalization +--------------------- + +finalize + To make the VM call this, use #addToBeFinalized. It frees + automatically any memory pointed to by the CObject. It is not + automatically enabled because big trouble hits you if you use + #free and the receiver doesn't point to the base of a malloc-ed + area. + + + +File: gst-base.info, Node: CObject-pointer-like behavior, Prev: CObject-finalization, Up: CObject + +CObject: pointer-like behavior +------------------------------ + ++ anInteger + Return another instance of the receiver's class which points at + &receiver[anInteger] (or, if you prefer, what `receiver + + anInteger' does in C). + +- intOrPtr + If intOrPtr is an integer, return another instance of the + receiver's class pointing at &receiver[-anInteger] (or, if you + prefer, what `receiver - anInteger' does in C). If it is the same + class as the receiver, return the difference in chars, i.e. in + bytes, between the two pointed addresses (or, if you prefer, what + `receiver - anotherCharPtr' does in C) + +addressAt: anIndex + Return a new CObject of the element type, corresponding to an + object that is anIndex places past the receiver (remember that + CObjects represent pointers and that C pointers behave like + arrays). anIndex is zero-based, just like with all other C-style + accessing. + +at: anIndex + Dereference a pointer that is anIndex places past the receiver + (remember that CObjects represent pointers and that C pointers + behave like arrays). anIndex is zero-based, just like with all + other C-style accessing. + +at: anIndex put: aValue + Store anIndex places past the receiver the passed Smalltalk object + or CObject `aValue'; if it is a CObject is dereferenced: that is, + this method is equivalent either to cobj[anIndex]=aValue or + cobj[anIndex]=*aValue. anIndex is zero-based, just like with all + other C-style accessing. In both cases, aValue should be of the + element type or of the corresponding Smalltalk type (that is, a + String is ok for an array of CStrings) to avoid typing problems + which however will not be signaled because C is untyped. + +decr + Adjust the pointer by sizeof(dereferencedType) bytes down (i.e. + -receiver) + +decrBy: anInteger + Adjust the pointer by anInteger elements down (i.e. receiver -= + anInteger) + +incr + Adjust the pointer by sizeof(dereferencedType) bytes up (i.e. + ++receiver) + +incrBy: anInteger + Adjust the pointer by anInteger elements up (i.e. receiver += + anInteger) + + + +File: gst-base.info, Node: Collection, Next: CompiledBlock, Prev: CObject, Up: Base classes + +Collection +========== + +Defined in namespace Smalltalk +Superclass: Object +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 the objects are stored or organized; I say nothing about + this. I merely provide some object creation and access routines + for general collections of objects. + +* Menu: + +* Collection class-instance creation:: (class) +* Collection-adding:: (instance) +* Collection-converting:: (instance) +* Collection-copying Collections:: (instance) +* Collection-enumeration:: (instance) +* Collection-finalization:: (instance) +* Collection-printing:: (instance) +* Collection-removing:: (instance) +* Collection-storing:: (instance) +* Collection-testing collections:: (instance) + + +File: gst-base.info, Node: Collection class-instance creation, Next: Collection-adding, Up: Collection + +Collection class: instance creation +----------------------------------- + +with: anObject + Answer a collection whose only element is anObject + +with: firstObject with: secondObject + Answer a collection whose only elements are the parameters in the + order they were passed + +with: firstObject with: secondObject with: thirdObject + Answer a collection whose only elements are the parameters in the + order they were passed + +with: firstObject with: secondObject with: thirdObject with: fourthObject + Answer a collection whose only elements are the parameters in the + order they were passed + +with: firstObject with: secondObject with: thirdObject with: fourthObject with: fifthObject + Answer a collection whose only elements are the parameters in the + order they were passed + +withAll: aCollection + Answer a collection whose elements are all those in aCollection + + + +File: gst-base.info, Node: Collection-adding, Next: Collection-converting, Prev: Collection class-instance creation, Up: Collection + +Collection: adding +------------------ + +add: newObject + Add newObject to the receiver, answer it + +addAll: aCollection + Adds all the elements of 'aCollection' to the receiver, answer + aCollection + + + +File: gst-base.info, Node: Collection-converting, Next: Collection-copying Collections, Prev: Collection-adding, Up: Collection + +Collection: converting +---------------------- + +asArray + Answer an Array containing all the elements in the receiver + +asBag + Answer a Bag containing all the elements in the receiver + +asByteArray + Answer a ByteArray containing all the elements in the receiver + +asOrderedCollection + Answer an OrderedCollection containing all the elements in the + receiver + + order + +asRunArray + Answer the receiver converted to a RunArray. If the receiver is not + ordered the order of the elements in the RunArray might not be the + #do: order. + +asSet + Answer a Set containing all the elements in the receiver with no + duplicates + +asSortedCollection + Answer a SortedCollection containing all the elements in the + receiver with the default sort block - [ :a :b | a <= b ] + +asSortedCollection: aBlock + Answer a SortedCollection whose elements are the elements of the + receiver, sorted according to the sort block aBlock + + + +File: gst-base.info, Node: Collection-copying Collections, Next: Collection-enumeration, Prev: Collection-converting, Up: Collection + +Collection: copying Collections +------------------------------- + +copyReplacing: targetObject withObject: newObject + Copy replacing each object which is = to targetObject with + newObject + +copyWith: newElement + Answer a copy of the receiver to which newElement is added + +copyWithout: oldElement + Answer a copy of the receiver to which all occurrences of + oldElement are removed + + + +File: gst-base.info, Node: Collection-enumeration, Next: Collection-finalization, Prev: Collection-copying Collections, Up: Collection + +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 + before attempting to iterate on it; its presence reduces the + number of overrides needed by collections who try to amortize + their execution times. The default implementation does nothing, + so it is optimized out by the virtual machine and so it loses very + little on the performance side. Note that descendants of + Collection have to call it explicitly since #do: is abstract in + Collection. + +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. + +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. + +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: Collection-finalization, Next: Collection-printing, Prev: Collection-enumeration, Up: Collection + +Collection: finalization +------------------------ + +mourn: anObject + Private - anObject has been found to have a weak key, remove it + and possibly finalize the key. + + + +File: gst-base.info, Node: Collection-printing, Next: Collection-removing, Prev: Collection-finalization, Up: Collection + +Collection: printing +-------------------- + +inspect + Print all the instance variables and objects in the receiver on the + Transcript + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: Collection-removing, Next: Collection-storing, Prev: Collection-printing, Up: Collection + +Collection: removing +-------------------- + +empty + Remove everything from the receiver. + +remove: oldObject + Remove oldObject from the receiver. If absent, fail, else answer + oldObject. + +remove: oldObject ifAbsent: anExceptionBlock + Remove oldObject from the receiver. If absent, evaluate + anExceptionBlock and answer the result, else answer oldObject. + +removeAll: aCollection + Remove each object in aCollection, answer aCollection, fail if some + of them is absent. Warning: this could leave the collection in a + semi-updated state. + +removeAll: aCollection ifAbsent: aBlock + Remove each object in aCollection, answer aCollection; if some + element is absent, pass it to aBlock. + + + +File: gst-base.info, Node: Collection-storing, Next: Collection-testing collections, Prev: Collection-removing, Up: Collection + +Collection: storing +------------------- + +storeOn: aStream + Store Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Collection-testing collections, Prev: Collection-storing, Up: Collection + +Collection: testing collections +------------------------------- + +capacity + Answer how many elements the receiver can hold before having to + grow. + +identityIncludes: anObject + Answer whether we include the anObject object + +includes: anObject + Answer whether we include anObject + +isEmpty + Answer whether we are (still) empty + +notEmpty + Answer whether we include at least one object + +occurrencesOf: anObject + Answer how many occurrences of anObject we include + +size + Answer how many objects we include + + + +File: gst-base.info, Node: CompiledBlock, Next: CompiledCode, Prev: Collection, Up: Base classes + +CompiledBlock +============= + +Defined in namespace Smalltalk +Superclass: CompiledCode +Category: Language-Implementation + I represent a block that has been compiled. + +* Menu: + +* CompiledBlock class-instance creation:: (class) +* CompiledBlock-accessing:: (instance) +* CompiledBlock-basic:: (instance) +* CompiledBlock-printing:: (instance) +* CompiledBlock-saving and loading:: (instance) + + +File: gst-base.info, Node: CompiledBlock class-instance creation, Next: CompiledBlock-accessing, Up: CompiledBlock + +CompiledBlock class: instance creation +-------------------------------------- + +newMethod: numBytecodes header: anInteger method: outerMethod + Answer a new CompiledMethod with room for the given bytes and the + given header + +numArgs: args numTemps: temps bytecodes: bytecodes depth: depth literals: literalArray + Answer an (almost) full fledged CompiledBlock. To make it + complete, you must either set the new object's `method' variable, + or put it into a BlockClosure and put the BlockClosure into a + CompiledMethod's literals. The clean-ness of the block is + automatically computed. + + + +File: gst-base.info, Node: CompiledBlock-accessing, Next: CompiledBlock-basic, Prev: CompiledBlock class-instance creation, Up: CompiledBlock + +CompiledBlock: accessing +------------------------ + +flags + Answer the `cleanness' of the block. 0 = clean; 1 = access to + receiver variables and/or self; 2-30 = access to variables that + are 1-29 contexts away; 31 = return from method or push thisContext + +method + Answer the CompiledMethod in which the receiver lies + +methodClass + Answer the class in which the receiver is installed. + +methodClass: methodClass + Set the receiver's class instance variable + +numArgs + Answer the number of arguments passed to the receiver + +numLiterals + Answer the number of literals for the receiver + +numTemps + Answer the number of temporary variables used by the receiver + +selector + Answer the selector through which the method is called + +selector: aSymbol + Set the selector through which the method is called + +stackDepth + Answer the number of stack slots needed for the receiver + + + +File: gst-base.info, Node: CompiledBlock-basic, Next: CompiledBlock-printing, Prev: CompiledBlock-accessing, Up: CompiledBlock + +CompiledBlock: basic +-------------------- + += aMethod + Answer whether the receiver and aMethod are equal + +methodCategory + Answer the method category + +methodCategory: aCategory + Set the method category to the given string + +methodSourceCode + Answer the method source code (a FileSegment or String or nil) + +methodSourceFile + Answer the file where the method source code is stored + +methodSourcePos + Answer the location where the method source code is stored in the + methodSourceFile + +methodSourceString + Answer the method source code as a string + + + +File: gst-base.info, Node: CompiledBlock-printing, Next: CompiledBlock-saving and loading, Prev: CompiledBlock-basic, Up: CompiledBlock + +CompiledBlock: printing +----------------------- + +printOn: aStream + Print the receiver's class and selector on aStream + + + +File: gst-base.info, Node: CompiledBlock-saving and loading, Prev: CompiledBlock-printing, Up: CompiledBlock + +CompiledBlock: saving and loading +--------------------------------- + + to + +binaryRepresentationObject + This method is implemented to allow for a PluggableProxy to be used + with CompiledBlocks. Answer a DirectedMessage which sends + #blockAt: to the CompiledMethod containing the receiver. + + + +File: gst-base.info, Node: CompiledCode, Next: CompiledMethod, Prev: CompiledBlock, Up: Base classes + +CompiledCode +============ + +Defined in namespace Smalltalk +Superclass: ArrayedCollection +Category: Language-Implementation + I represent code that has been compiled. I am an abstract + superclass for blocks and methods + +* Menu: + +* CompiledCode class-cache flushing:: (class) +* CompiledCode class-instance creation:: (class) +* CompiledCode-accessing:: (instance) +* CompiledCode-basic:: (instance) +* CompiledCode-copying:: (instance) +* CompiledCode-debugging:: (instance) +* CompiledCode-decoding bytecodes:: (instance) +* CompiledCode-testing accesses:: (instance) +* CompiledCode-translation:: (instance) + + +File: gst-base.info, Node: CompiledCode class-cache flushing, Next: CompiledCode class-instance creation, Up: CompiledCode + +CompiledCode class: cache flushing +---------------------------------- + +flushTranslatorCache + Answer any kind of cache mantained by a just-in-time code + translator in the virtual machine (if any). Do nothing for now. + + + +File: gst-base.info, Node: CompiledCode class-instance creation, Next: CompiledCode-accessing, Prev: CompiledCode class-cache flushing, Up: CompiledCode + +CompiledCode class: instance creation +------------------------------------- + +newMethod: numBytecodes header: anInteger literals: literals + Answer a new CompiledMethod with room for the given bytes and the + given header + +newMethod: numBytecodes header: anInteger numLiterals: numLiterals + Answer a new CompiledMethod with room for the given bytes and the + given header + + + +File: gst-base.info, Node: CompiledCode-accessing, Next: CompiledCode-basic, Prev: CompiledCode class-instance creation, Up: CompiledCode + +CompiledCode: accessing +----------------------- + +at: anIndex put: aBytecode + Store aBytecode as the anIndex-th bytecode + +blockAt: anIndex + Answer the CompiledBlock attached to the anIndex-th literal, + assuming that the literal is a BlockClosure. + +bytecodeAt: anIndex + Answer the anIndex-th bytecode + +bytecodeAt: anIndex put: aBytecode + Store aBytecode as the anIndex-th bytecode + +flags + Private - Answer the optimization flags for the receiver + +literalAt: anIndex + Answer the anIndex-th literal + +literalAt: anInteger put: aValue + Store aValue as the anIndex-th literal + +literals + Answer `literals'. + +methodClass + Answer the class in which the receiver is installed. + +methodClass: methodClass + Set the receiver's class instance variable + +numArgs + Answer the number of arguments for the receiver + +numLiterals + Answer the number of literals for the receiver + +numTemps + Answer the number of temporaries for the receiver + +primitive + Answer the primitive called by the receiver + +selector + Answer the selector through which the method is called + +selector: aSymbol + Set the selector through which the method is called + +stackDepth + Answer the number of stack slots needed for the receiver + + + +File: gst-base.info, Node: CompiledCode-basic, Next: CompiledCode-copying, Prev: CompiledCode-accessing, Up: CompiledCode + +CompiledCode: basic +------------------- + += aMethod + Answer whether the receiver and aMethod are equal + +hash + Answer an hash value for the receiver + +methodCategory + Answer the method category + +methodCategory: aCategory + Set the method category to the given string + +methodSourceCode + Answer the method source code (a FileSegment or String or nil) + +methodSourceFile + Answer the file where the method source code is stored + +methodSourcePos + Answer the location where the method source code is stored in the + methodSourceFile + +methodSourceString + Answer the method source code as a string + + + +File: gst-base.info, Node: CompiledCode-copying, Next: CompiledCode-debugging, Prev: CompiledCode-basic, Up: CompiledCode + +CompiledCode: copying +--------------------- + +deepCopy + Answer a deep copy of the receiver + + + +File: gst-base.info, Node: CompiledCode-debugging, Next: CompiledCode-decoding bytecodes, Prev: CompiledCode-copying, Up: CompiledCode + +CompiledCode: debugging +----------------------- + +inspect + Print the contents of the receiver in a verbose way. + + + +File: gst-base.info, Node: CompiledCode-decoding bytecodes, Next: CompiledCode-testing accesses, Prev: CompiledCode-debugging, Up: CompiledCode + +CompiledCode: decoding bytecodes +-------------------------------- + +dispatchTo: anObject with: param + Disassemble the bytecodes and tell anObject about them in the form + of message sends. param is given as an argument to every message + send. + + + +File: gst-base.info, Node: CompiledCode-testing accesses, Next: CompiledCode-translation, Prev: CompiledCode-decoding bytecodes, Up: CompiledCode + +CompiledCode: testing accesses +------------------------------ + +accesses: instVarIndex + Answer whether the receiver accesses the instance variable with + the given index + +assigns: instVarIndex + Answer whether the receiver writes to the instance variable with + the given index + +containsLiteral: anObject + Answer if the receiver contains a literal which is equal to + anObject. + +hasBytecode: byte between: firstIndex and: lastIndex + Answer whether the receiver includes the `byte' bytecode in any of + the indices between firstIndex and lastIndex. + +jumpDestinationAt: anIndex + Answer where the jump at bytecode index `anIndex' lands + +reads: instVarIndex + Answer whether the receiver reads the instance variable with the + given index + +refersTo: anObject + Answer whether the receiver refers to the given object + +sourceCodeMap + Answer an array which maps bytecode indices to source code line + numbers. 0 values represent invalid instruction pointer indices. + + + +File: gst-base.info, Node: CompiledCode-translation, Prev: CompiledCode-testing accesses, Up: CompiledCode + +CompiledCode: translation +------------------------- + +discardTranslation + Flush the just-in-time translated code for the receiver (if any). + + + +File: gst-base.info, Node: CompiledMethod, Next: ContextPart, Prev: CompiledCode, Up: Base classes + +CompiledMethod +============== + +Defined in namespace Smalltalk +Superclass: CompiledCode +Category: Language-Implementation + I represent methods that have been compiled. I can recompile + methods from their source code, I can invoke Emacs to edit the + source code for one of my instances, and I know how to access + components of my instances. + +* Menu: + +* CompiledMethod class-instance creation:: (class) +* CompiledMethod class-lean images:: (class) +* CompiledMethod-accessing:: (instance) +* CompiledMethod-basic:: (instance) +* CompiledMethod-printing:: (instance) +* CompiledMethod-saving and loading:: (instance) +* CompiledMethod-testing:: (instance) + + +File: gst-base.info, Node: CompiledMethod class-instance creation, Next: CompiledMethod class-lean images, Up: CompiledMethod + +CompiledMethod class: instance creation +--------------------------------------- + +literals: lits numArgs: numArg numTemps: numTemp + primitive: primIndex bytecodes: bytecodes depth: depth Answer a + full fledged CompiledMethod. Construct the method header from the + parameters, and set the literals and bytecodes to the provided + ones. Also, the bytecodes are optimized and any embedded + CompiledBlocks modified to refer to these literals and to the + newly created CompiledMethod. + + + +File: gst-base.info, Node: CompiledMethod class-lean images, Next: CompiledMethod-accessing, Prev: CompiledMethod class-instance creation, Up: CompiledMethod + +CompiledMethod class: lean images +--------------------------------- + +stripSourceCode + Remove all the references to method source code from the system + + + +File: gst-base.info, Node: CompiledMethod-accessing, Next: CompiledMethod-basic, Prev: CompiledMethod class-lean images, Up: CompiledMethod + +CompiledMethod: accessing +------------------------- + +allBlocksDo: aBlock + Evaluate aBlock, passing to it all the CompiledBlocks it holds + +allLiterals + Answer the literals referred to by the receiver and all the blocks + in it + +flags + Private - Answer the optimization flags for the receiver + +methodClass + Answer the class in which the receiver is installed. + +methodClass: methodClass + Set the receiver's class instance variable + +numArgs + Answer the number of arguments for the receiver + +numTemps + Answer the number of temporaries for the receiver + +primitive + Answer the primitive called by the receiver + +selector + Answer the selector through which the method is called + +selector: aSymbol + Set the selector through which the method is called + +stackDepth + Answer the number of stack slots needed for the receiver + +withAllBlocksDo: aBlock + Evaluate aBlock, passing the receiver and all the CompiledBlocks it + holds + +withNewMethodClass: class + Answer either the receiver or a copy of it, with the method class + set to class + +withNewMethodClass: class selector: selector + Answer either the receiver or a copy of it, with the method class + set to class + + + +File: gst-base.info, Node: CompiledMethod-basic, Next: CompiledMethod-printing, Prev: CompiledMethod-accessing, Up: CompiledMethod + +CompiledMethod: basic +--------------------- + += aMethod + Answer whether the receiver and aMethod are equal + +hash + Answer an hash value for the receiver + +methodCategory + Answer the method category + +methodCategory: aCategory + Set the method category to the given string + +methodSourceCode + Answer the method source code (a FileSegment or String or nil) + +methodSourceFile + Answer the file where the method source code is stored + +methodSourcePos + Answer the location where the method source code is stored in the + methodSourceFile + +methodSourceString + Answer the method source code as a string + + + +File: gst-base.info, Node: CompiledMethod-printing, Next: CompiledMethod-saving and loading, Prev: CompiledMethod-basic, Up: CompiledMethod + +CompiledMethod: printing +------------------------ + +printOn: aStream + Print the receiver's class and selector on aStream + +storeOn: aStream + Print code to create the receiver on aStream + + + +File: gst-base.info, Node: CompiledMethod-saving and loading, Next: CompiledMethod-testing, Prev: CompiledMethod-printing, Up: CompiledMethod + +CompiledMethod: saving and loading +---------------------------------- + + to + +binaryRepresentationObject + This method is implemented to allow for a PluggableProxy to be used + with CompiledMethods. Answer a DirectedMessage which sends #>> to + the class object containing the receiver. + + + +File: gst-base.info, Node: CompiledMethod-testing, Prev: CompiledMethod-saving and loading, Up: CompiledMethod + +CompiledMethod: testing +----------------------- + +accesses: instVarIndex + Answer whether the receiver or the blocks it contains accesses the + instance variable with the given index + +assigns: instVarIndex + Answer whether the receiver or the blocks it contains writes to + the instance variable with the given index + +reads: instVarIndex + Answer whether the receiver or the blocks it contains reads to the + instance variable with the given index + + + +File: gst-base.info, Node: ContextPart, Next: CoreException, Prev: CompiledMethod, Up: Base classes + +ContextPart +=========== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + My instances represent executing Smalltalk code, which represent + the local environment of executable code. They contain a stack and + also provide some methods that can be used in inspection or + debugging. + +* Menu: + +* ContextPart class-exception handling:: (class) +* ContextPart-accessing:: (instance) +* ContextPart-built ins:: (instance) +* ContextPart-copying:: (instance) +* ContextPart-debugging:: (instance) +* ContextPart-enumerating:: (instance) +* ContextPart-exception handling:: (instance) +* ContextPart-printing:: (instance) + + +File: gst-base.info, Node: ContextPart class-exception handling, Next: ContextPart-accessing, Up: ContextPart + +ContextPart class: exception handling +------------------------------------- + +backtrace + Print a backtrace from the caller to the bottom of the stack on the + Transcript + +backtraceOn: aStream + 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. + + + +File: gst-base.info, Node: ContextPart-accessing, Next: ContextPart-built ins, Prev: ContextPart class-exception handling, Up: ContextPart + +ContextPart: accessing +---------------------- + +client + Answer the client of this context, that is, the object that sent + the message that created this context. Fail if the receiver has no + parent + +environment + To create a valid execution environment for the interpreter even + before it starts, GST creates a fake context whose selector is nil + and which can be used as a marker for the current execution + environment. This method answers that context. For processes, it + answers the process block itself + +home + Answer the MethodContext to which the receiver refers + +initialIP + Answer the value of the instruction pointer when execution starts + in the current context + +ip + Answer the current instruction pointer into the receiver + +ip: newIP + Set the instruction pointer for the receiver + +isBlock + Answer whether the receiver is a block context + +isDisabled + Answers whether the context is skipped when doing a return. + Contexts are marked as disabled whenever a non-local return is + done (either by returning from the enclosing method of a block, or + with the #continue: method of ContextPart) and there are unwind + contexts such as those created by #ensure:. All non-unwind + contexts are then marked as disabled. + +isEnvironment + To create a valid execution environment for the interpreter even + before it starts, GST creates a fake context whose selector is nil + and which can be used as a marker for the current execution + environment. Answer whether the receiver is that kind of context. + +isProcess + Answer whether the receiver represents a process context, i.e. a + context created by BlockClosure>>#newProcess. Such a context can + be recognized because it has no parent but its flags are different + from those of the contexts created by the VM's + prepareExecutionEnvironment function. + +isUnwind + Answers whether the context must continue execution even after a + non-local return (a return from the enclosing method of a block, or + a call to the #continue: method of ContextPart). Such contexts are + created by #ensure:. + +method + Return the CompiledMethod being executed + +methodClass + Return the class in which the CompiledMethod being executed is + defined + +numArgs + Answer the number of arguments passed to the receiver + +numTemps + Answer the number of temporaries used by the receiver + +parentContext + Answer the context that called the receiver + +parentContext: aContext + Set the context to which the receiver will return + +receiver + Return the receiver (self) for the method being executed + +selector + Return the selector for the method being executed + +size + Answer the number of valid fields for the receiver. Any read + access from (self size + 1) to (self basicSize) has undefined + results - even crashing + +sp + Answer the current stack pointer into the receiver + +sp: newSP + Set the stack pointer for the receiver. + +validSize + Answer how many elements in the receiver should be inspected + + + +File: gst-base.info, Node: ContextPart-built ins, Next: ContextPart-copying, Prev: ContextPart-accessing, Up: ContextPart + +ContextPart: built ins +---------------------- + +continue: anObject + Resume execution from the receiver, faking that the context on top + of it in the execution chain has returned anObject. The receiver + must belong to the same process as the executing context, + otherwise the results are not predictable. All #ensure: (and + possibly #ifCurtailed:) blocks between the currently executing + context and the receiver are evaluated (which is not what would + happen if you directly bashed at the parent context of + thisContext). + + + +File: gst-base.info, Node: ContextPart-copying, Next: ContextPart-debugging, Prev: ContextPart-built ins, Up: ContextPart + +ContextPart: copying +-------------------- + +deepCopy + Answer a shallow copy of the receiver - duplicating e.g. the + method and the instance variables that have been pushed is almost + surely not the right thing. + + + +File: gst-base.info, Node: ContextPart-debugging, Next: ContextPart-enumerating, Prev: ContextPart-copying, Up: ContextPart + +ContextPart: debugging +---------------------- + +debuggerClass + Answer which debugger should be used to debug the current context + chain. The class with the highest debugging priority is picked + among those mentioned in the chain. + +isInternalExceptionHandlingContext + Answer whether the receiver is a context that should be hidden to + the user when presenting a backtrace + + + +File: gst-base.info, Node: ContextPart-enumerating, Next: ContextPart-exception handling, Prev: ContextPart-debugging, Up: ContextPart + +ContextPart: enumerating +------------------------ + +scanBacktraceFor: selectors do: aBlock + Scan the backtrace for contexts whose selector is among those + listed in selectors; if one is found, invoke aBlock passing the + selector. + + + +File: gst-base.info, Node: ContextPart-exception handling, Next: ContextPart-printing, Prev: ContextPart-enumerating, Up: ContextPart + +ContextPart: exception handling +------------------------------- + +mark + Add the receiver as a possible unwind point + + + +File: gst-base.info, Node: ContextPart-printing, Prev: ContextPart-exception handling, Up: ContextPart + +ContextPart: printing +--------------------- + +backtrace + Print a backtrace from the receiver to the bottom of the stack on + the Transcript. + +backtraceOn: aStream + Print a backtrace from the caller to the bottom of the stack on + aStream. + + + +File: gst-base.info, Node: CoreException, Next: CPtr, Prev: ContextPart, Up: Base classes + +CoreException +============= + +Defined in namespace Smalltalk +Superclass: TrappableEvent +Category: Language-Exceptions + My instances describe a single event that can be trapped using + #on:do:..., contain whether such execution can be resumed after + such an event, a description of what happened, and a block that is + used as an handler by default. Using my methods you can raise + exceptions and create new exceptions. Exceptions are organized in + a kind of hierarchy (different from the class hierarchy): + intercepting an exception will intercept all its children too. + + CoreExceptions are different from ANSI Exceptions in that the + signaled exception is not an instance of the CoreException, + instead it belongs to a different class, Signal. ANSI Exceptions + inherit from Signal but hold on to a CoreException via a + class-instance variable. + +* Menu: + +* CoreException class-instance creation:: (class) +* CoreException-accessing:: (instance) +* CoreException-basic:: (instance) +* CoreException-enumerating:: (instance) +* CoreException-exception handling:: (instance) +* CoreException-instance creation:: (instance) + + +File: gst-base.info, Node: CoreException class-instance creation, Next: CoreException-accessing, Up: CoreException + +CoreException class: instance creation +-------------------------------------- + +new + Create a new exception whose parent is ExAll + + + +File: gst-base.info, Node: CoreException-accessing, Next: CoreException-basic, Prev: CoreException class-instance creation, Up: CoreException + +CoreException: accessing +------------------------ + +defaultHandler + Answer the default handler for the receiver + +defaultHandler: aBlock + Set the default handler of the receiver to aBlock. A Signal object + will be passed to aBlock + +description + Answer a description of the receiver + +description: aString + Set the description of the receiver to aString + +isResumable + Answer true if the receiver is resumable + +isResumable: aBoolean + Set the resumable flag of the receiver to aBoolean + +parent + Answer the parent of the receiver + +signalClass + Answer the subclass of Signal to be passed to handler blocks that + handle the receiver + +signalClass: aClass + Set which subclass of Signal is to be passed to handler blocks + that handle the receiver + + + +File: gst-base.info, Node: CoreException-basic, Next: CoreException-enumerating, Prev: CoreException-accessing, Up: CoreException + +CoreException: basic +-------------------- + +postCopy + Modify the receiver so that the description is deep copied + + + +File: gst-base.info, Node: CoreException-enumerating, Next: CoreException-exception handling, Prev: CoreException-basic, Up: CoreException + +CoreException: enumerating +-------------------------- + +allExceptionsDo: aBlock + Private - Evaluate aBlock for every exception in the receiver. As + it contains just one exception, evaluate it just once, passing the + receiver + +goodness: exception + Answer how good the receiver is at handling the given exception. A + negative value indicates that the receiver is not able to handle + the exception. + +handles: exceptionOrSignal + Answer whether the receiver handles `exceptionOrSignal'. + + + +File: gst-base.info, Node: CoreException-exception handling, Next: CoreException-instance creation, Prev: CoreException-enumerating, Up: CoreException + +CoreException: exception handling +--------------------------------- + +signal + Raise the exception described by the receiver, passing no + parameters + +signalWith: arg + Raise the exception described by the receiver, passing the + parameter arg + +signalWith: arg with: arg2 + Raise the exception described by the receiver, passing the + parameters arg and arg2 + +signalWithArguments: args + Raise the exception described by the receiver, passing the + parameters in args + + + +File: gst-base.info, Node: CoreException-instance creation, Prev: CoreException-exception handling, Up: CoreException + +CoreException: instance creation +-------------------------------- + +newChild + Answer a child exception of the receiver. Its properties are set + to those of the receiver + + + +File: gst-base.info, Node: CPtr, Next: CPtrCType, Prev: CoreException, Up: Base classes + +CPtr +==== + +Defined in namespace Smalltalk +Superclass: CAggregate +Category: Language-C interface + +* Menu: + +* CPtr-accessing:: (instance) + + +File: gst-base.info, Node: CPtr-accessing, Up: CPtr + +CPtr: accessing +--------------- + +alignof + Answer the receiver's required aligment + +sizeof + Answer the receiver's size + +value + Answer the address of the location pointed to by the receiver. + +value: anObject + Set the address of the location pointed to by the receiver to + anObject, which can be either an Integer or a CObject. if + anObject is an Integer, it is interpreted as a 32-bit or 64-bit + address. If it is a CObject, its address is stored. + + + +File: gst-base.info, Node: CPtrCType, Next: CScalar, Prev: CPtr, Up: Base classes + +CPtrCType +========= + +Defined in namespace Smalltalk +Superclass: CType +Category: Language-C interface + +* Menu: + +* CPtrCType class-instance creation:: (class) +* CPtrCType-accessing:: (instance) + + +File: gst-base.info, Node: CPtrCType class-instance creation, Next: CPtrCType-accessing, Up: CPtrCType + +CPtrCType class: instance creation +---------------------------------- + +elementType: aCType + Answer a new instance of CPtrCType that maps pointers to the given + CType + + + +File: gst-base.info, Node: CPtrCType-accessing, Prev: CPtrCType class-instance creation, Up: CPtrCType + +CPtrCType: accessing +-------------------- + +elementType + Answer the type of the elements in the receiver's instances + +new: size + Allocate space for `size' objects like those that the receiver + points to, and with the type (class) identified by the receiver. + It is the caller's responsibility to free the memory allocated for + it. + + + +File: gst-base.info, Node: CScalar, Next: CScalarCType, Prev: CPtrCType, Up: Base classes + +CScalar +======= + +Defined in namespace Smalltalk +Superclass: CObject +Category: Language-C interface + +* Menu: + +* CScalar class-instance creation:: (class) +* CScalar-accessing:: (instance) + + +File: gst-base.info, Node: CScalar class-instance creation, Next: CScalar-accessing, Up: CScalar + +CScalar class: instance creation +-------------------------------- + +type + Answer a CType for the receiver - for example, CByteType if the + receiver is CByte. + +value: anObject + Answer a newly allocated CObject containing the passed value, + anObject. Remember to call #addToBeFinalized if you want the + CObject to be automatically freed + + + +File: gst-base.info, Node: CScalar-accessing, Prev: CScalar class-instance creation, Up: CScalar + +CScalar: accessing +------------------ + +cObjStoredType + Private - Provide a conversion from a CObject to a Smalltalk object + to be stored by #at:put: + +value + Answer the value the receiver is pointing to. The exact returned + value depends on the receiver's class + +value: aValue + Set the receiver to point to the value, aValue. The exact meaning + of aValue depends on the receiver's class + + + +File: gst-base.info, Node: CScalarCType, Next: CShort, Prev: CScalar, Up: Base classes + +CScalarCType +============ + +Defined in namespace Smalltalk +Superclass: CType +Category: Language-C interface + +* Menu: + +* CScalarCType-accessing:: (instance) +* CScalarCType-storing:: (instance) + + +File: gst-base.info, Node: CScalarCType-accessing, Next: CScalarCType-storing, Up: CScalarCType + +CScalarCType: accessing +----------------------- + +valueType + valueType is used as a means to communicate to the interpreter the + underlying type of the data. For scalars, it is supplied by the + CObject subclass. + + + +File: gst-base.info, Node: CScalarCType-storing, Prev: CScalarCType-accessing, Up: CScalarCType + +CScalarCType: storing +--------------------- + +storeOn: aStream + Store Smalltalk code that compiles to the receiver + + + +File: gst-base.info, Node: CShort, Next: CSmalltalk, Prev: CScalarCType, Up: Base classes + +CShort +====== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CShort class-accessing:: (class) +* CShort-accessing:: (instance) + + +File: gst-base.info, Node: CShort class-accessing, Next: CShort-accessing, Up: CShort + +CShort class: accessing +----------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CShort-accessing, Prev: CShort class-accessing, Up: CShort + +CShort: accessing +----------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CSmalltalk, Next: CString, Prev: CShort, Up: Base classes + +CSmalltalk +========== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CSmalltalk class-accessing:: (class) +* CSmalltalk-accessing:: (instance) + + +File: gst-base.info, Node: CSmalltalk class-accessing, Next: CSmalltalk-accessing, Up: CSmalltalk + +CSmalltalk class: accessing +--------------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CSmalltalk-accessing, Prev: CSmalltalk class-accessing, Up: CSmalltalk + +CSmalltalk: accessing +--------------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CString, Next: CStringCType, Prev: CSmalltalk, Up: Base classes + +CString +======= + +Defined in namespace Smalltalk +Superclass: CPtr +Category: Language-C interface + Technically, CString is really a pointer to type char. However, + it's so darn useful as a distinct datatype, and it is a separate + datatype in Smalltalk, so we allow developers to express their + semantics more precisely by using a more descriptive type. + + In general, I behave like a cross between an array of characters + and a pointer to a character. I provide the protocol for both + data types. My #value method returns a Smalltalk String, as you + would expect for a scalar datatype. + + +* Menu: + +* CString class-instance creation:: (class) +* CString-accessing:: (instance) + + +File: gst-base.info, Node: CString class-instance creation, Next: CString-accessing, Up: CString + +CString class: instance creation +-------------------------------- + +type + Answer a CType for the receiver - for example, CByteType if the + receiver is CByte. + +value: anObject + Answer a newly allocated CObject containing the passed value, + anObject. Remember to call #addToBeFinalized if you want the + CObject to be automatically freed + + + +File: gst-base.info, Node: CString-accessing, Prev: CString class-instance creation, Up: CString + +CString: accessing +------------------ + +cObjStoredType + Private - Provide a conversion from a CObject to a Smalltalk object + to be stored by #at:put: + +value + Answer the value the receiver is pointing to. The exact returned + value depends on the receiver's class + +value: aValue + Set the receiver to point to the value, aValue. The exact meaning + of aValue depends on the receiver's class + + + +File: gst-base.info, Node: CStringCType, Next: CStruct, Prev: CString, Up: Base classes + +CStringCType +============ + +Defined in namespace Smalltalk +Superclass: CScalarCType +Category: Language-C interface + +* Menu: + +* CStringCType-accessing:: (instance) + + +File: gst-base.info, Node: CStringCType-accessing, Up: CStringCType + +CStringCType: accessing +----------------------- + +elementType + Answer the type of the elements in the receiver's instances + + + +File: gst-base.info, Node: CStruct, Next: CType, Prev: CStringCType, Up: Base classes + +CStruct +======= + +Defined in namespace Smalltalk +Superclass: CCompound +Category: Language-C interface + +* Menu: + +* CStruct class-subclass creation:: (class) + + +File: gst-base.info, Node: CStruct class-subclass creation, Up: CStruct + +CStruct class: subclass creation +-------------------------------- + +compileDeclaration: array + Compile methods that implement the declaration in array. + + + +File: gst-base.info, Node: CType, Next: CUChar, Prev: CStruct, Up: Base classes + +CType +===== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-C interface + I am not part of the standard Smalltalk kernel class hierarchy. I + contain type information used by subclasses of CObject, which + represents external C data items. + + My only instance variable, cObjectType, is used to hold onto the + CObject subclass that gets created for a given CType. Used + primarily in the C part of the interpreter because internally it + cannot execute methods to get values, so it has a simple way to + access instance variable which holds the desired subclass. + + My subclasses have instances which represent the actual data + types; for the scalar types, there is only one instance created of + each, but for the aggregate types, there is at least one instance + per base type and/or number of elements. + +* Menu: + +* CType class-C instance creation:: (class) +* CType-accessing:: (instance) +* CType-C instance creation:: (instance) +* CType-storing:: (instance) + + +File: gst-base.info, Node: CType class-C instance creation, Next: CType-accessing, Up: CType + +CType class: C instance creation +-------------------------------- + +cObjectType: aCObjectSubclass + Create a new CType for the given subclass of CObject + + + +File: gst-base.info, Node: CType-accessing, Next: CType-C instance creation, Prev: CType class-C instance creation, Up: CType + +CType: accessing +---------------- + +alignof + Answer the size of the receiver's instances + +arrayType: size + Answer a CArrayCType which represents an array with the given size + of CObjects whose type is in turn represented by the receiver + +cObjectType + Answer the CObject subclass whose instance is created when new is + sent to the receiver + +ptrType + Answer a CPtrCType which represents a pointer to CObjects whose + type is in turn represented by the receiver + +sizeof + Answer the size of the receiver's instances + +valueType + valueType is used as a means to communicate to the interpreter the + underlying type of the data. For anything but scalars, it's just + 'self' + + + +File: gst-base.info, Node: CType-C instance creation, Next: CType-storing, Prev: CType-accessing, Up: CType + +CType: C instance creation +-------------------------- + +address: cObjOrInt + Create a new CObject with the type (class) identified by the + receiver, pointing to the given address (identified by an Integer + or CObject). + +new + Allocate a new CObject with the type (class) identified by the + receiver. It is the caller's responsibility to free the memory + allocated for it. + + + +File: gst-base.info, Node: CType-storing, Prev: CType-C instance creation, Up: CType + +CType: storing +-------------- + +storeOn: aStream + Store Smalltalk code that compiles to the receiver + + + +File: gst-base.info, Node: CUChar, Next: CUInt, Prev: CType, Up: Base classes + +CUChar +====== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CUChar class-getting info:: (class) +* CUChar-accessing:: (instance) + + +File: gst-base.info, Node: CUChar class-getting info, Next: CUChar-accessing, Up: CUChar + +CUChar class: getting info +-------------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CUChar-accessing, Prev: CUChar class-getting info, Up: CUChar + +CUChar: accessing +----------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CUInt, Next: CULong, Prev: CUChar, Up: Base classes + +CUInt +===== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CUInt class-accessing:: (class) +* CUInt-accessing:: (instance) + + +File: gst-base.info, Node: CUInt class-accessing, Next: CUInt-accessing, Up: CUInt + +CUInt class: accessing +---------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CUInt-accessing, Prev: CUInt class-accessing, Up: CUInt + +CUInt: accessing +---------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CULong, Next: CUnion, Prev: CUInt, Up: Base classes + +CULong +====== + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CULong class-accessing:: (class) +* CULong-accessing:: (instance) + + +File: gst-base.info, Node: CULong class-accessing, Next: CULong-accessing, Up: CULong + +CULong class: accessing +----------------------- + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CULong-accessing, Prev: CULong class-accessing, Up: CULong + +CULong: accessing +----------------- + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: CUnion, Next: CUShort, Prev: CULong, Up: Base classes + +CUnion +====== + +Defined in namespace Smalltalk +Superclass: CCompound +Category: Language-C interface + +* Menu: + +* CUnion class-subclass creation:: (class) + + +File: gst-base.info, Node: CUnion class-subclass creation, Up: CUnion + +CUnion class: subclass creation +------------------------------- + +compileDeclaration: array + Compile methods that implement the declaration in array. + + + +File: gst-base.info, Node: CUShort, Next: Date, Prev: CUnion, Up: Base classes + +CUShort +======= + +Defined in namespace Smalltalk +Superclass: CScalar +Category: Language-C interface + +* Menu: + +* CUShort class-accessing:: (class) +* CUShort-accessing:: (instance) + + +File: gst-base.info, Node: CUShort class-accessing, Next: CUShort-accessing, Up: CUShort + +CUShort class: accessing +------------------------ + +alignof + Answer the receiver's instances required aligment + +scalarIndex + Private - Answer an index referring to the receiver's instances + scalar type + +sizeof + Answer the receiver's instances size + + + +File: gst-base.info, Node: CUShort-accessing, Prev: CUShort class-accessing, Up: CUShort + +CUShort: accessing +------------------ + +alignof + Answer the receiver's required aligment + +scalarIndex + Private - Answer an index referring to the receiver's scalar type + +sizeof + Answer the receiver's size + + + +File: gst-base.info, Node: Date, Next: DateTime, Prev: CUShort, Up: Base classes + +Date +==== + +Defined in namespace Smalltalk +Superclass: Magnitude +Category: Language-Data types + My instances represent dates. My base date is defined to be Jan + 1, 1901. I provide methods for instance creation (including via + "symbolic" dates, such as "Date newDay: 14 month: #Feb year: 1990". + + PLEASE BE WARNED - use this class only for dates after 1582 AD; + that's the beginning of the epoch. Dates before 1582 will not be + correctly printed. In addition, since ten days were lost from + October 5 through October 15, operations between a Gregorian date + (after 15-Oct-1582) and a Julian date (before 5-Oct-1582) will + give incorrect results; or, 4-Oct-1582 + 2 days will yield + 6-Oct-1582 (a non-existent day!), not 16-Oct-1582. + + In fact, if you pass a year < 1582 to a method like + #newDay:month:year: it will assume that it is a two-digit year + (e.g. 90=1990, 1000=2900). The only way to create Julian calendar + dates is with the #fromDays: instance creation method. + +* Menu: + +* Date class-basic:: (class) +* Date class-instance creation (ANSI):: (class) +* Date class-instance creation (Blue Book):: (class) +* Date-basic:: (instance) +* Date-compatibility (non-ANSI):: (instance) +* Date-date computations:: (instance) +* Date-printing:: (instance) +* Date-storing:: (instance) +* Date-testing:: (instance) + + +File: gst-base.info, Node: Date class-basic, Next: Date class-instance creation (ANSI), Up: Date + +Date class: basic +----------------- + +abbreviationOfDay: dayIndex + Answer the abbreviated name of the day of week corresponding to + the given index + +dayOfWeek: dayName + Answer the index of the day of week corresponding to the given name + +daysInMonth: monthName forYear: yearInteger + Answer the number of days in the given (named) month for the given + year + +daysInYear: i + Answer the number of days in the given year + +indexOfMonth: monthName + Answer the index of the month corresponding to the given name + +initDayNameDict + Initialize the DayNameDict to the names of the days + +initialize + Initialize the receiver + +initMonthNameDict + Initialize the MonthNameDict to the names of the months + +nameOfDay: dayIndex + Answer the name of the day of week corresponding to the given index + +nameOfMonth: monthIndex + Answer the name of the month corresponding to the given index + +shortNameOfMonth: monthIndex + Answer the name of the month corresponding to the given index + + + +File: gst-base.info, Node: Date class-instance creation (ANSI), Next: Date class-instance creation (Blue Book), Prev: Date class-basic, Up: Date + +Date class: instance creation (ANSI) +------------------------------------ + +year: y day: d hour: h minute: min second: s + Answer a Date denoting the d-th day of the given year + +year: y month: m day: d hour: h minute: min second: s + Answer a Date denoting the d-th day of the given (as a number) + month and year + + + +File: gst-base.info, Node: Date class-instance creation (Blue Book), Next: Date-basic, Prev: Date class-instance creation (ANSI), Up: Date + +Date class: instance creation (Blue Book) +----------------------------------------- + +dateAndTimeNow + Answer an array containing the current date and time + +fromDays: dayCount + Answer a Date denoting dayCount days past 1/1/1901 + +fromJulian: jd + Answer a Date denoting the jd-th day in the astronomical Julian + calendar. + +fromSeconds: time + Answer a Date denoting the date time seconds past Jan 1st, 1901 + +newDay: day month: monthName year: yearInteger + Answer a Date denoting the dayCount day of the given (named) month + and year + +newDay: day monthIndex: monthIndex year: yearInteger + Answer a Date denoting the dayCount day of the given (as a number) + month and year + +newDay: dayCount year: yearInteger + Answer a Date denoting the dayCount day of the yearInteger year + +readFrom: aStream + Parse an instance of the receiver from aStream + +today + Answer a Date denoting the current date in local time + +utcDateAndTimeNow + Answer an array containing the current date and time in Coordinated + Universal Time (UTC) + +utcToday + Answer a Date denoting the current date in Coordinated Universal + Time (UTC) + + + +File: gst-base.info, Node: Date-basic, Next: Date-compatibility (non-ANSI), Prev: Date class-instance creation (Blue Book), Up: Date + +Date: basic +----------- + +addDays: dayCount + Answer a new Date pointing dayCount past the receiver + +subtractDate: aDate + Answer the number of days between aDate and the receiver (negative + if the receiver is before aDate) + +subtractDays: dayCount + Answer a new Date pointing dayCount before the receiver + + + +File: gst-base.info, Node: Date-compatibility (non-ANSI), Next: Date-date computations, Prev: Date-basic, Up: Date + +Date: compatibility (non-ANSI) +------------------------------ + +day + Answer the day represented by the receiver + +dayName + Answer the day of week of the receiver as a Symbol + +shortMonthName + Answer the abbreviated name of the month represented by the + receiver + + + +File: gst-base.info, Node: Date-date computations, Next: Date-printing, Prev: Date-compatibility (non-ANSI), Up: Date + +Date: date computations +----------------------- + +asSeconds + Answer the date as the number of seconds from 1/1/1901. + +dayOfMonth + Answer the day represented by the receiver (same as #day) + +dayOfWeek + Answer the day of week of the receiver. 1 = Monday, 7 = Sunday + +dayOfWeekAbbreviation + Answer the day of week of the receiver as a Symbol + +dayOfWeekName + Answer the day of week of the receiver as a Symbol + +dayOfYear + Answer the days passed since 31/12 of last year; e.g. New Year's + Day is 1 + +daysFromBaseDay + Answer the days passed since 1/1/1901 + +daysInMonth + Answer the days in the month represented by the receiver + +daysInYear + Answer the days in the year represented by the receiver + +daysLeftInMonth + Answer the days to the end of the month represented by the receiver + +daysLeftInYear + Answer the days to the end of the year represented by the receiver + +firstDayOfMonth + Answer a Date representing the first day of the month represented + by the receiver + +isLeapYear + Answer whether the receiver refers to a date in a leap year. + +lastDayOfMonth + Answer a Date representing the last day of the month represented + by the receiver + +month + Answer the month represented by the receiver + +monthAbbreviation + Answer the abbreviated name of the month represented by the + receiver + +monthName + Answer the name of the month represented by the receiver + +year + Answer the year represented by the receiver + + + +File: gst-base.info, Node: Date-printing, Next: Date-storing, Prev: Date-date computations, Up: Date + +Date: printing +-------------- + +printOn: aStream + Print a representation for the receiver on aStream + + + +File: gst-base.info, Node: Date-storing, Next: Date-testing, Prev: Date-printing, Up: Date + +Date: storing +------------- + +storeOn: aStream + Store on aStream Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: Date-testing, Prev: Date-storing, Up: Date + +Date: testing +------------- + +< aDate + Answer whether the receiver indicates a date preceding aDate + += aDate + Answer whether the receiver indicates the same date as aDate + +hash + Answer an hash value for the receievr + + + +File: gst-base.info, Node: DateTime, Next: Delay, Prev: Date, Up: Base classes + +DateTime +======== + +Defined in namespace Smalltalk +Superclass: Date +Category: Language-Data types + My instances represent timestamps. + +* Menu: + +* DateTime class-information:: (class) +* DateTime class-instance creation:: (class) +* DateTime class-instance creation (non-ANSI):: (class) +* DateTime-basic:: (instance) +* DateTime-computations:: (instance) +* DateTime-printing:: (instance) +* DateTime-splitting in dates & times:: (instance) +* DateTime-storing:: (instance) +* DateTime-testing:: (instance) +* DateTime-time zones:: (instance) + + +File: gst-base.info, Node: DateTime class-information, Next: DateTime class-instance creation, Up: DateTime + +DateTime class: information +--------------------------- + +clockPrecision + Answer `ClockPrecision'. + +initialize + Initialize the receiver's class variables + + + +File: gst-base.info, Node: DateTime class-instance creation, Next: DateTime class-instance creation (non-ANSI), Prev: DateTime class-information, Up: DateTime + +DateTime class: instance creation +--------------------------------- + +now + Answer an instance of the receiver referring to the current date + and time. + +readFrom: aStream + Parse an instance of the receiver from aStream + +year: y day: d hour: h minute: min second: s + Answer a DateTime denoting the d-th day of the given year, and + setting the time part to the given hour, minute, and second + +year: y day: d hour: h minute: min second: s offset: ofs + Answer a DateTime denoting the d-th day of the given year. Set + the offset field to ofs (a Duration), and the time part to the + given hour, minute, and second + +year: y month: m day: d hour: h minute: min second: s + Answer a DateTime denoting the d-th day of the given (as a number) + month and year, setting the time part to the given hour, minute, + and second + +year: y month: m day: d hour: h minute: min second: s offset: ofs + Answer a DateTime denoting the d-th day of the given (as a number) + month and year. Set the offset field to ofs (a Duration), and the + the time part to the given hour, minute, and second + + + +File: gst-base.info, Node: DateTime class-instance creation (non-ANSI), Next: DateTime-basic, Prev: DateTime class-instance creation, Up: DateTime + +DateTime class: instance creation (non-ANSI) +-------------------------------------------- + +fromDays: days seconds: secs offset: ofs + Answer a DateTime denoting the d-th day of the given (as a number) + month and year. Set the offset field to ofs (a Duration), and the + the time part to the given hour, minute, and second + + + +File: gst-base.info, Node: DateTime-basic, Next: DateTime-computations, Prev: DateTime class-instance creation (non-ANSI), Up: DateTime + +DateTime: basic +--------------- + ++ aDuration + Answer a new Date pointing dayCount past the receiver + +- aDateTimeOrDuration + Answer a new Date pointing dayCount before the receiver + + + +File: gst-base.info, Node: DateTime-computations, Next: DateTime-printing, Prev: DateTime-basic, Up: DateTime + +DateTime: computations +---------------------- + +asSeconds + Answer the date as the number of seconds from 1/1/1901. + +dayOfWeek + Answer the day of week of the receiver. Unlike Dates, DateAndTimes + have 1 = Sunday, 7 = Saturday + +hour + Answer the hour in a 24-hour clock + +hour12 + Answer the hour in a 12-hour clock + +hour24 + Answer the hour in a 24-hour clock + +meridianAbbreviation + Answer either #AM (for anti-meridian) or #PM (for post-meridian) + +minute + Answer the minute + +second + Answer the month represented by the receiver + + + +File: gst-base.info, Node: DateTime-printing, Next: DateTime-splitting in dates & times, Prev: DateTime-computations, Up: DateTime + +DateTime: printing +------------------ + +printOn: aStream + Print a representation for the receiver on aStream + + + +File: gst-base.info, Node: DateTime-splitting in dates & times, Next: DateTime-storing, Prev: DateTime-printing, Up: DateTime + +DateTime: splitting in dates & times +------------------------------------ + +asDate + Answer a Date referring to the same day as the receiver + +asTime + Answer a Time referring to the same time (from midnight) as the + receiver + +at: anIndex + Since in the past timestamps were referred to as Arrays containing + a Date and a Time (in this order), this method provides access to + DateTime objects like if they were two-element Arrays. + + + +File: gst-base.info, Node: DateTime-storing, Next: DateTime-testing, Prev: DateTime-splitting in dates & times, Up: DateTime + +DateTime: storing +----------------- + +storeOn: aStream + Store on aStream Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: DateTime-testing, Next: DateTime-time zones, Prev: DateTime-storing, Up: DateTime + +DateTime: testing +----------------- + +< aDateTime + Answer whether the receiver indicates a date preceding aDate + += aDateTime + Answer whether the receiver indicates the same date as aDate + +hash + Answer an hash value for the receievr + + + +File: gst-base.info, Node: DateTime-time zones, Prev: DateTime-testing, Up: DateTime + +DateTime: time zones +-------------------- + +asLocal + Answer the receiver, since DateTime objects store themselves in + Local time + +asUTC + Convert the receiver to UTC time, and answer a new DateTime object. + +offset + Answer the receiver's offset from UTC to local time (e.g. +3600 + seconds for Central Europe Time, -3600*6 seconds for Eastern + Standard Time). The offset is expressed as a Duration + +offset: anOffset + Answer a copy of the receiver with the offset from UTC to local + time changed to anOffset (a Duration). + +timeZoneAbbreviation + Answer an abbreviated indication of the receiver's offset, + expressed as `shhmm', where `hh' is the number of hours and `mm' + is the number of minutes between UTC and local time, and `s' can + be `+' for the Eastern hemisphere and `-' for the Western + hemisphere. + +timeZoneName + Answer the time zone name for the receiver (currently, it is + simply `GMT +xxxx', where `xxxx' is the receiver's + #timeZoneAbbreviation). + + + +File: gst-base.info, Node: Delay, Next: DelayedAdaptor, Prev: DateTime, Up: Base classes + +Delay +===== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes + I am the ultimate agent for frustration in the world. I cause + things to wait (typically much more than is appropriate, but it is + those losing operating systems' fault). When a process sends one + of my instances a wait message, that process goes to sleep for the + interval specified when the instance was created. + +* Menu: + +* Delay class-general inquiries:: (class) +* Delay class-initialization:: (class) +* Delay class-instance creation:: (class) +* Delay-accessing:: (instance) +* Delay-comparing:: (instance) +* Delay-process delay:: (instance) + + +File: gst-base.info, Node: Delay class-general inquiries, Next: Delay class-initialization, Up: Delay + +Delay class: general inquiries +------------------------------ + +millisecondClockValue + Private - Answer the number of milliseconds since midnight + + + +File: gst-base.info, Node: Delay class-initialization, Next: Delay class-instance creation, Prev: Delay class-general inquiries, Up: Delay + +Delay class: initialization +--------------------------- + +initialize + Private - Initialize the receiver and the associated process + + + +File: gst-base.info, Node: Delay class-instance creation, Next: Delay-accessing, Prev: Delay class-initialization, Up: Delay + +Delay class: instance creation +------------------------------ + +forMilliseconds: millisecondCount + Answer a Delay waiting for millisecondCount milliseconds + +forSeconds: secondCount + Answer a Delay waiting for secondCount seconds + +untilMilliseconds: millisecondCount + Answer a Delay waiting for millisecondCount milliseconds after + midnight + + + +File: gst-base.info, Node: Delay-accessing, Next: Delay-comparing, Prev: Delay class-instance creation, Up: Delay + +Delay: accessing +---------------- + +resumptionTime + Answer the time when a process waiting on a Delay will resume + + + +File: gst-base.info, Node: Delay-comparing, Next: Delay-process delay, Prev: Delay-accessing, Up: Delay + +Delay: comparing +---------------- + += aDelay + Answer whether the receiver and aDelay denote the same delay + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: Delay-process delay, Prev: Delay-comparing, Up: Delay + +Delay: process delay +-------------------- + +wait + Wait until the amount of time represented by the instance of Delay + elapses + + + +File: gst-base.info, Node: DelayedAdaptor, Next: Dictionary, Prev: Delay, Up: Base classes + +DelayedAdaptor +============== + +Defined in namespace Smalltalk +Superclass: PluggableAdaptor +Category: Language-Data types + I can be used where many expensive updates must be performed. My + in- stances buffer the last value that was set, and only actually + set the value when the #trigger message is sent. Apart from this, + I'm equi- valent to PluggableAdaptor. + +* Menu: + +* DelayedAdaptor-accessing:: (instance) + + +File: gst-base.info, Node: DelayedAdaptor-accessing, Up: DelayedAdaptor + +DelayedAdaptor: accessing +------------------------- + +trigger + Really set the value of the receiver. + +value + Get the value of the receiver. + +value: anObject + Set the value of the receiver - actually, the value is cached and + is not set until the #trigger method is sent. + + + +File: gst-base.info, Node: Dictionary, Next: DirectedMessage, Prev: DelayedAdaptor, Up: Base classes + +Dictionary +========== + +Defined in namespace Smalltalk +Superclass: HashedCollection +Category: Collections-Keyed + I implement a dictionary, which is an object that is indexed by + unique objects (typcially instances of Symbol), and associates + another object with that index. I use the equality operator = to + determine equality of indices. + +* Menu: + +* Dictionary class-instance creation:: (class) +* Dictionary-accessing:: (instance) +* Dictionary-awful ST-80 compatibility hacks:: (instance) +* Dictionary-dictionary enumerating:: (instance) +* Dictionary-dictionary removing:: (instance) +* Dictionary-dictionary testing:: (instance) +* Dictionary-polymorphism hacks:: (instance) +* Dictionary-printing:: (instance) +* Dictionary-rehashing:: (instance) +* Dictionary-storing:: (instance) +* Dictionary-testing:: (instance) + + +File: gst-base.info, Node: Dictionary class-instance creation, Next: Dictionary-accessing, Up: Dictionary + +Dictionary class: instance creation +----------------------------------- + +new + Create a new dictionary with a default size + + + +File: gst-base.info, Node: Dictionary-accessing, Next: Dictionary-awful ST-80 compatibility hacks, Prev: Dictionary class-instance creation, Up: Dictionary + +Dictionary: accessing +--------------------- + +add: newObject + Add the newObject association to the receiver + +associationAt: key + Answer the key/value Association for the given key. Fail if the key + is not found + +associationAt: key ifAbsent: aBlock + Answer the key/value Association for the given key. Evaluate aBlock + (answering the result) if the key is not found + +at: key + Answer the value associated to the given key. Fail if the key is + not found + +at: key ifAbsent: aBlock + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found + +at: aKey ifAbsentPut: aBlock + Answer the value associated to the given key. If the key is not + found, evaluate aBlock and associate the result to aKey before + returning. + +at: aKey ifPresent: aBlock + If aKey is absent, answer nil. Else, evaluate aBlock passing the + associated value and answer the result of the invocation + +at: key put: value + Store value as associated to the given key + +keyAtValue: value + Answer the key associated to the given value, or nil if the value + is not found + +keyAtValue: value ifAbsent: exceptionBlock + Answer the key associated to the given value. Evaluate + exceptionBlock (answering the result) if the value is not found. + IMPORTANT: == is used to compare values + +keys + Answer a kind of Set containing the keys of the receiver + +values + Answer an Array containing the values of the receiver + + + +File: gst-base.info, Node: Dictionary-awful ST-80 compatibility hacks, Next: Dictionary-dictionary enumerating, Prev: Dictionary-accessing, Up: Dictionary + +Dictionary: awful ST-80 compatibility hacks +------------------------------------------- + +findKeyIndex: key + Tries to see if key exists as a the key of an indexed variable. As + soon as nil or an association with the correct key is found, the + index of that slot is answered + + + +File: gst-base.info, Node: Dictionary-dictionary enumerating, Next: Dictionary-dictionary removing, Prev: Dictionary-awful ST-80 compatibility hacks, Up: Dictionary + +Dictionary: dictionary enumerating +---------------------------------- + +associationsDo: aBlock + Pass each association in the dictionary to aBlock + +collect: aBlock + Answer a new dictionary where the keys are the same and the values + are obtained by passing each value to aBlock and collecting the + return values + +do: aBlock + Pass each value in the dictionary to aBlock + +keysAndValuesDo: aBlock + Pass each key/value pair in the dictionary as two distinct + parameters to aBlock + +keysDo: aBlock + Pass each key in the dictionary to aBlock + +reject: aBlock + Answer a new dictionary containing the key/value pairs for which + aBlock returns false. aBlock only receives the value part of the + pairs. + +select: aBlock + Answer a new dictionary containing the key/value pairs for which + aBlock returns true. aBlock only receives the value part of the + pairs. + + + +File: gst-base.info, Node: Dictionary-dictionary removing, Next: Dictionary-dictionary testing, Prev: Dictionary-dictionary enumerating, Up: Dictionary + +Dictionary: dictionary removing +------------------------------- + +remove: anAssociation + Remove anAssociation's key from the dictionary + +remove: anAssociation ifAbsent: aBlock + Remove anAssociation's key from the dictionary + +removeAllKeys: keys + Remove all the keys in keys, without raising any errors + +removeAllKeys: keys ifAbsent: aBlock + Remove all the keys in keys, passing the missing keys as parameters + to aBlock as they're encountered + +removeKey: key + Remove the passed key from the dictionary, fail if it is not found + +removeKey: key ifAbsent: aBlock + Remove the passed key from the dictionary, answer the result of + evaluating aBlock if it is not found + + + +File: gst-base.info, Node: Dictionary-dictionary testing, Next: Dictionary-polymorphism hacks, Prev: Dictionary-dictionary removing, Up: Dictionary + +Dictionary: dictionary testing +------------------------------ + +includes: anObject + Answer whether the receiver contains anObject as one of its values + +includesAssociation: anAssociation + Answer whether the receiver contains the key which is + anAssociation's key and its value is anAssociation's value + +includesKey: key + Answer whether the receiver contains the given key + +occurrencesOf: aValue + Answer whether the number of occurrences of aValue as one of the + receiver's values + + + +File: gst-base.info, Node: Dictionary-polymorphism hacks, Next: Dictionary-printing, Prev: Dictionary-dictionary testing, Up: Dictionary + +Dictionary: polymorphism hacks +------------------------------ + +withAllSuperspaces + This method is needed by the compiler + + + +File: gst-base.info, Node: Dictionary-printing, Next: Dictionary-rehashing, Prev: Dictionary-polymorphism hacks, Up: Dictionary + +Dictionary: printing +-------------------- + +inspect + Print all the instance variables and objects in the receiver on the + Transcript + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: Dictionary-rehashing, Next: Dictionary-storing, Prev: Dictionary-printing, Up: Dictionary + +Dictionary: rehashing +--------------------- + +rehash + Rehash the receiver + + + +File: gst-base.info, Node: Dictionary-storing, Next: Dictionary-testing, Prev: Dictionary-rehashing, Up: Dictionary + +Dictionary: storing +------------------- + +storeOn: aStream + Print Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Dictionary-testing, Prev: Dictionary-storing, Up: Dictionary + +Dictionary: testing +------------------- + += aDictionary + Answer whether the receiver and aDictionary are equal + +hash + Answer the hash value for the receiver + + + +File: gst-base.info, Node: DirectedMessage, Next: Directory, Prev: Dictionary, Up: Base classes + +DirectedMessage +=============== + +Defined in namespace Smalltalk +Superclass: Message +Category: Language-Implementation + I represent a message send: I contain the receiver, selector and + arguments for a message. + +* Menu: + +* DirectedMessage class-creating instances:: (class) +* DirectedMessage-accessing:: (instance) +* DirectedMessage-basic:: (instance) +* DirectedMessage-multiple process:: (instance) +* DirectedMessage-saving and loading:: (instance) + + +File: gst-base.info, Node: DirectedMessage class-creating instances, Next: DirectedMessage-accessing, Up: DirectedMessage + +DirectedMessage class: creating instances +----------------------------------------- + +selector: aSymbol arguments: anArray + This method should not be called for instances of this class. + +selector: aSymbol arguments: anArray receiver: anObject + Create a new instance of the receiver + + + +File: gst-base.info, Node: DirectedMessage-accessing, Next: DirectedMessage-basic, Prev: DirectedMessage class-creating instances, Up: DirectedMessage + +DirectedMessage: accessing +-------------------------- + +receiver + Answer the receiver + +receiver: anObject + Change the receiver + + + +File: gst-base.info, Node: DirectedMessage-basic, Next: DirectedMessage-multiple process, Prev: DirectedMessage-accessing, Up: DirectedMessage + +DirectedMessage: basic +---------------------- + +printOn: aStream + Print a representation of the receiver on aStream + +send + Send the message + +value + Send the message (this message provides interoperability between + DirectedMessages and blocks) + + + +File: gst-base.info, Node: DirectedMessage-multiple process, Next: DirectedMessage-saving and loading, Prev: DirectedMessage-basic, Up: DirectedMessage + +DirectedMessage: multiple process +--------------------------------- + +fork + Create a new process executing the receiver and start it + +forkAt: priority + Create a new process executing the receiver with given priority + and start it + +newProcess + Create a new process executing the receiver in suspended state. + The priority is the same as for the calling process. The receiver + must not contain returns + + + +File: gst-base.info, Node: DirectedMessage-saving and loading, Prev: DirectedMessage-multiple process, Up: DirectedMessage + +DirectedMessage: saving and loading +----------------------------------- + +reconstructOriginalObject + This method is used when DirectedMessages are used together with + PluggableProxies (see ObjectDumper). It sends the receiver to + reconstruct the object that was originally stored. + + + +File: gst-base.info, Node: Directory, Next: DLD, Prev: DirectedMessage, Up: Base classes + +Directory +========= + +Defined in namespace Smalltalk +Superclass: File +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 of File and Directory. In addition I have the notion of + a current working directory (which alas must be a real directory + and not a virtual one). + +* Menu: + +* Directory class-C functions:: (class) +* 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-C functions, Next: Directory class-file name management, Up: Directory + +Directory class: C functions +---------------------------- + +primWorking: dirName + C call-out to chdir. Do not modify! + +working + C call-out to getCurDirName. Do not modify! + + + +File: gst-base.info, Node: Directory class-file name management, Next: Directory class-file operations, Prev: Directory class-C functions, Up: Directory + +Directory class: file name management +------------------------------------- + +append: fileName to: directory + Answer the name of a file named `fileName' which resides in a + directory named `directory'. + +pathSeparator + Answer (as a Character) the character used to separate directory + names + +pathSeparatorString + Answer (in a String) the character used to separate directory names + + + +File: gst-base.info, Node: Directory class-file operations, Next: Directory class-reading system defaults, Prev: Directory class-file name management, Up: Directory + +Directory class: file operations +-------------------------------- + +create: dirName + Create a directory named dirName. + +working: dirName + Change the current working directory to dirName. + + + +File: gst-base.info, Node: Directory class-reading system defaults, Next: Directory-accessing, Prev: Directory class-file operations, Up: Directory + +Directory class: reading system defaults +---------------------------------------- + +home + Answer the path to the user's home directory + +image + Answer the path to GNU Smalltalk's image file + +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 + +localKernel + Answer the path in which a local version of the GNU Smalltalk + kernel's Smalltalk source files were found + +module + Answer the path to GNU Smalltalk's dynamically loaded modules + +systemKernel + Answer the path to the GNU Smalltalk kernel's Smalltalk source + files + +temporary + Answer the path in which temporary files can be created. This is + read from the environment, and guessed if that fails. + + + +File: gst-base.info, Node: Directory-accessing, Next: Directory-enumerating, Prev: Directory class-reading system defaults, Up: Directory + +Directory: accessing +-------------------- + +at: aName + Answer a File object for a file named `aName' residing 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. + +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. + + + +File: gst-base.info, Node: Directory-enumerating, Prev: Directory-accessing, Up: Directory + +Directory: enumerating +---------------------- + +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 + +DLD +=== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-C interface + ...and Gandalf said: "Many folk like to know beforehand what is to + be set on the table; but those who have laboured to prepare the + feast like to keep their secret; for wonder makes the words of + praise louder." + + I am just an ancillary class used to reference some C functions. + Most of my actual functionality is used by redefinitions of methods + in CFunctionDescriptor. + +* Menu: + +* DLD class-C functions:: (class) +* DLD class-dynamic linking:: (class) + + +File: gst-base.info, Node: DLD class-C functions, Next: DLD class-dynamic linking, Up: DLD + +DLD class: C functions +---------------------- + +defineCFunc: aName as: aFuncAddr + C call-out to defineCFunc. Do not modify! + +library: libHandle getFunc: aFuncString + C call-out to dldGetFunc. Do not modify! + +linkFile: aFileName + C call-out to dldLink. Do not modify! + + + +File: gst-base.info, Node: DLD class-dynamic linking, Prev: DLD class-C functions, Up: DLD + +DLD class: dynamic linking +-------------------------- + +addLibrary: library + Add library to the search path of libraries to be used by DLD. + +addModule: library + Add library to the list of modules to be loaded when the image is + started. The gst_initModule function in the library is called, + but the library will not be put in the search path used whenever a + C function is requested but not registered. + +defineExternFunc: aFuncName + This method calls #primDefineExternFunc: to try to link to a + function with the given name, and answers whether the linkage was + successful. You can redefine this method to restrict the ability + to do dynamic linking. + +initialize + Private - Initialize the receiver's class variables + +libraryList + Answer a copy of the search path of libraries to be used by DLD + +moduleList + Answer a copy of the modules reloaded when the image is started + +primDefineExternFunc: aFuncName + This method tries to link to a function with the given name, and + answers whether the linkage was successful. It should not be + overridden. + +update: aspect + Called on startup - Make DLD re-link and reset the addresses of + all the externally defined functions + + + +File: gst-base.info, Node: DumperProxy, Next: Duration, Prev: DLD, Up: Base classes + +DumperProxy +=========== + +Defined in namespace Smalltalk +Superclass: Object +Category: Streams-Files + I am an helper class for ObjectDumper. When an object cannot be + saved in the standard way, you can register a subclass of me to + provide special means to save that object. + +* Menu: + +* DumperProxy class-accessing:: (class) +* DumperProxy class-instance creation:: (class) +* DumperProxy-saving and restoring:: (instance) + + +File: gst-base.info, Node: DumperProxy class-accessing, Next: DumperProxy class-instance creation, Up: DumperProxy + +DumperProxy class: accessing +---------------------------- + +acceptUsageForClass: aClass + The receiver was asked to be used as a proxy for the class aClass. + Answer whether the registration is fine. By default, answer true + +loadFrom: anObjectDumper + Reload a proxy stored in anObjectDumper and reconstruct the object + + + +File: gst-base.info, Node: DumperProxy class-instance creation, Next: DumperProxy-saving and restoring, Prev: DumperProxy class-accessing, Up: DumperProxy + +DumperProxy class: instance creation +------------------------------------ + +on: anObject + Answer a proxy to be used to save anObject. This method MUST be + overridden and anObject must NOT be stored in the object's + instance variables unless you override #dumpTo:, because that + would result in an infinite loop! + + + +File: gst-base.info, Node: DumperProxy-saving and restoring, Prev: DumperProxy class-instance creation, Up: DumperProxy + +DumperProxy: saving and restoring +--------------------------------- + +dumpTo: anObjectDumper + Dump the proxy to anObjectDumper - the #loadFrom: class method + will reconstruct the original object. + +object + Reconstruct the object stored in the proxy and answer it + + + +File: gst-base.info, Node: Duration, Next: Error, Prev: DumperProxy, Up: Base classes + +Duration +======== + +Defined in namespace Smalltalk +Superclass: Time +Category: Language-Data types + My instances represent differences between timestamps. + +* Menu: + +* Duration class-instance creation:: (class) +* Duration class-instance creation (non ANSI):: (class) +* Duration-arithmetics:: (instance) + + +File: gst-base.info, Node: Duration class-instance creation, Next: Duration class-instance creation (non ANSI), Up: Duration + +Duration class: instance creation +--------------------------------- + +days: d + Answer a duration of `d' days + +days: d hours: h minutes: m seconds: s + Answer a duration of `d' days and the given number of hours, + minutes, and seconds. + +initialize + Initialize the receiver's instance variables + +zero + Answer a duration of zero seconds. + + + +File: gst-base.info, Node: Duration class-instance creation (non ANSI), Next: Duration-arithmetics, Prev: Duration class-instance creation, Up: Duration + +Duration class: instance creation (non ANSI) +-------------------------------------------- + +fromDays: days seconds: secs offset: unused + Answer a duration of `d' days and `secs' seconds. The last + parameter is unused; this message is available for interoperability + with the DateTime class. + + + +File: gst-base.info, Node: Duration-arithmetics, Prev: Duration class-instance creation (non ANSI), Up: Duration + +Duration: arithmetics +--------------------- + +* factor + Answer a Duration that is `factor' times longer than the receiver + ++ aDuration + Answer a Duration that is the sum of the receiver and aDuration's + lengths. + +- aDuration + Answer a Duration that is the difference of the receiver and + aDuration's lengths. + +/ factorOrDuration + If the parameter is a Duration, answer the ratio between the + receiver and factorOrDuration. Else divide the receiver by + factorOrDuration (a Number) and answer a new Duration that is + correspondingly shorter. + +abs + Answer a Duration that is as long as the receiver, but always in + the future. + +days + Answer the number of days in the receiver + +negated + Answer a Duration that is as long as the receiver, but with past + and future exchanged. + +negative + Answer whether the receiver is in the past. + +positive + Answer whether the receiver is a zero-second duration or is in the + future. + +printOn: aStream + Print a represention of the receiver on aStream. + + + +File: gst-base.info, Node: Error, Next: Exception, Prev: Duration, Up: Base classes + +Error +===== + +Defined in namespace Smalltalk +Superclass: Exception +Category: Language-Exceptions + Error represents a fatal error. Instances of it are not resumable. + +* Menu: + +* Error-exception description:: (instance) + + +File: gst-base.info, Node: Error-exception description, Up: Error + +Error: exception description +---------------------------- + +description + Answer a textual description of the exception. + +isResumable + Answer false. Error exceptions are by default unresumable; + subclasses can override this method if desired. + + + +File: gst-base.info, Node: Exception, Next: ExceptionSet, Prev: Error, Up: Base classes + +Exception +========= + +Defined in namespace Smalltalk +Superclass: Signal +Category: Language-Exceptions + An Exception defines the characteristics of an exceptional event + in a different way than CoreExceptions. Instead of creating an + hierarchy of objects and setting attributes of the objects, you + create an hierarchy of classes and override methods in those + classes; instances of those classes are passed to the handlers + instead of instances of the common class Signal. + + Internally, Exception and every subclass of it hold onto a + CoreException, so the two mechanisms are actually interchangeable. + +* Menu: + +* Exception class-comparison:: (class) +* Exception class-creating ExceptionCollections:: (class) +* Exception class-initialization:: (class) +* Exception class-instance creation:: (class) +* Exception class-interoperability with TrappableEvents:: (class) +* Exception-comparison:: (instance) +* Exception-exception description:: (instance) +* Exception-exception signaling:: (instance) + + +File: gst-base.info, Node: Exception class-comparison, Next: Exception class-creating ExceptionCollections, Up: Exception + +Exception class: comparison +--------------------------- + +goodness: anException + Answer how good the receiver is at handling the given exception. A + negative value indicates that the receiver is not able to handle + the exception. + +handles: anException + Answer whether the receiver handles `anException'. + + + +File: gst-base.info, Node: Exception class-creating ExceptionCollections, Next: Exception class-initialization, Prev: Exception class-comparison, Up: Exception + +Exception class: creating ExceptionCollections +---------------------------------------------- + +, aTrappableEvent + Answer an ExceptionCollection containing all the exceptions in the + receiver and all the exceptions in aTrappableEvent + + + +File: gst-base.info, Node: Exception class-initialization, Next: Exception class-instance creation, Prev: Exception class-creating ExceptionCollections, Up: Exception + +Exception class: initialization +------------------------------- + +initialize + Initialize the `links' between the core exception handling system + and the ANSI exception handling system. + + + +File: gst-base.info, Node: Exception class-instance creation, Next: Exception class-interoperability with TrappableEvents, Prev: Exception class-initialization, Up: Exception + +Exception class: instance creation +---------------------------------- + +new + Create an instance of the receiver, which you will be able to + signal later. + +signal + Create an instance of the receiver, give it default attributes, + and signal it immediately. + +signal: messageText + Create an instance of the receiver, set its message text, and + signal it immediately. + + + +File: gst-base.info, Node: Exception class-interoperability with TrappableEvents, Next: Exception-comparison, Prev: Exception class-instance creation, Up: Exception + +Exception class: interoperability with TrappableEvents +------------------------------------------------------ + +allExceptionsDo: aBlock + Private - Pass the coreException to aBlock + +coreException + Private - Answer the coreException which represents instances of + the receiver + +whenSignalledIn: onDoBlock do: handlerBlock exitBlock: exitBlock + Private - Create an ExceptionHandler from the arguments and + register it + + + +File: gst-base.info, Node: Exception-comparison, Next: Exception-exception description, Prev: Exception class-interoperability with TrappableEvents, Up: Exception + +Exception: comparison +--------------------- + += anObject + Answer whether the receiver is equal to anObject. This is true if + either the receiver or its coreException are the same object as + anObject. + +hash + Answer an hash value for the receiver. + + + +File: gst-base.info, Node: Exception-exception description, Next: Exception-exception signaling, Prev: Exception-comparison, Up: Exception + +Exception: exception description +-------------------------------- + +defaultAction + Execute the default action that is attached to the receiver. + +description + Answer a textual description of the exception. + +isResumable + Answer true. Exceptions are by default resumable. + + + +File: gst-base.info, Node: Exception-exception signaling, Prev: Exception-exception description, Up: Exception + +Exception: exception signaling +------------------------------ + +signal + Raise the exceptional event represented by the receiver + +signal: messageText + Raise the exceptional event represented by the receiver, setting + its message text to messageText. + + + +File: gst-base.info, Node: ExceptionSet, Next: False, Prev: Exception, Up: Base classes + +ExceptionSet +============ + +Defined in namespace Smalltalk +Superclass: TrappableEvent +Category: Language-Exceptions + My instances are not real exceptions: they can only be used as + arguments to #on:do:... methods in BlockClosure. They act as + shortcuts that allows you to use the same handler for many + exceptions without having to write duplicate code + +* Menu: + +* ExceptionSet class-instance creation:: (class) +* ExceptionSet-enumerating:: (instance) + + +File: gst-base.info, Node: ExceptionSet class-instance creation, Next: ExceptionSet-enumerating, Up: ExceptionSet + +ExceptionSet class: instance creation +------------------------------------- + +new + Private - Answer a new, empty ExceptionSet + + + +File: gst-base.info, Node: ExceptionSet-enumerating, Prev: ExceptionSet class-instance creation, Up: ExceptionSet + +ExceptionSet: enumerating +------------------------- + +allExceptionsDo: aBlock + Private - Evaluate aBlock for every exception in the receiver. + Answer the receiver + +goodness: exception + Answer how good the receiver is at handling the given exception. A + negative value indicates that the receiver is not able to handle + the exception. + +handles: exception + Answer whether the receiver handles `exception'. + + + +File: gst-base.info, Node: False, Next: File, Prev: ExceptionSet, Up: Base classes + +False +===== + +Defined in namespace Smalltalk +Superclass: Boolean +Category: Language-Data types + I always tell lies. I have a single instance in the system, which + represents the value false. + +* Menu: + +* False-basic:: (instance) +* False-C hacks:: (instance) +* False-printing:: (instance) + + +File: gst-base.info, Node: False-basic, Next: False-C hacks, Up: False + +False: basic +------------ + +& aBoolean + We are false - anded with anything, we always answer false + +and: aBlock + We are false - anded with anything, we always answer false + +eqv: aBoolean + Answer whether the receiver and aBoolean represent the same + boolean value + +ifFalse: falseBlock + We are false - evaluate the falseBlock + +ifFalse: falseBlock ifTrue: trueBlock + We are false - evaluate the falseBlock + +ifTrue: trueBlock + We are false - answer nil + +ifTrue: trueBlock ifFalse: falseBlock + We are false - evaluate the falseBlock + +not + We are false - answer true + +or: aBlock + We are false - ored with anything, we always answer the other + operand, so evaluate aBlock + +xor: aBoolean + Answer whether the receiver and aBoolean represent different + boolean values + +| aBoolean + We are false - ored with anything, we always answer the other + operand + + + +File: gst-base.info, Node: False-C hacks, Next: False-printing, Prev: False-basic, Up: False + +False: C hacks +-------------- + +asCBooleanValue + Answer `0'. + + + +File: gst-base.info, Node: False-printing, Prev: False-C hacks, Up: False + +False: printing +--------------- + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: File, Next: FileDescriptor, Prev: False, Up: Base classes + +File +==== + +Defined in namespace Smalltalk +Superclass: Object +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: + +* File class-C functions:: (class) +* File class-file name management:: (class) +* File class-file operations:: (class) +* File class-instance creation:: (class) +* File class-reading system defaults:: (class) +* File class-testing:: (class) +* File-accessing:: (instance) +* File-file name management:: (instance) +* File-file operations:: (instance) +* File-testing:: (instance) + + +File: gst-base.info, Node: File class-C functions, Next: File class-file name management, Up: File + +File class: C functions +----------------------- + +errno + C call-out to errno. Do not modify! + +stringError: errno + C call-out to strerror. Do not modify! + + + +File: gst-base.info, Node: File class-file name management, Next: File class-file operations, Prev: File class-C functions, Up: File + +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. + +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 class: file operations +--------------------------- + +checkError + Return whether an error had been reported or not. If there had + been one, raise an exception too + +checkError: errno + The error with the C code `errno' has been reported. If errno >= + 1, raise an exception + +remove: fileName + Remove the file with the given path name + +rename: oldFileName to: newFileName + Rename the file with the given path name oldFileName to newFileName + + + +File: gst-base.info, Node: File class-instance creation, Next: File class-reading system defaults, Prev: File class-file operations, Up: File + +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 + +on: aVFSHandler + Answer a new file with the given path. The handler that returns + the information is aVFSHandler + + + +File: gst-base.info, Node: File class-reading system defaults, Next: File class-testing, Prev: File class-instance creation, Up: File + +File class: reading system defaults +----------------------------------- + +image + Answer the full path to the image being used. + + + +File: gst-base.info, Node: File class-testing, Next: File-accessing, Prev: File class-reading system defaults, Up: File + +File class: testing +------------------- + +exists: fileName + Answer whether a file with the given name exists + +isAccessible: fileName + Answer whether a directory with the given name exists and can be + accessed + +isExecutable: fileName + Answer whether a file with the given name exists and can be + executed + +isReadable: fileName + Answer whether a file with the given name exists and is readable + +isWriteable: fileName + Answer whether a file with the given name exists and is writeable + + + +File: gst-base.info, Node: File-accessing, Next: File-file name management, Prev: File class-testing, Up: File + +File: 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). + +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). + +name + Answer the name of the file identified by the receiver + +refresh + Refresh the statistics for the receiver + +size + Answer the size of the file identified by the receiver + + + +File: gst-base.info, Node: File-file name management, Next: File-file operations, Prev: File-accessing, Up: File + +File: file name management +-------------------------- + +extension + Answer the extension of 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 + +stripExtension + Answer the path (if any) and file name of the receiver + +stripFileName + Answer the path of the receiver, always including a directory name + (possibly `.') and the final directory separator + +stripPath + Answer the file name and extension (if any) of the receiver + + + +File: gst-base.info, Node: File-file operations, Next: File-testing, Prev: File-file name management, Up: File + +File: file operations +--------------------- + +contents + Open a read-only FileStream on the receiver, read its contents, + close the stream and answer the contents + +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. + +openDescriptor: mode + Open the receiver in the given mode (as answered by FileStream's + class constant methods). Upon failure, evaluate aBlock. + +readStream + Open a read-only FileStream on the receiver + +remove + Remove the file identified by the receiver + +renameTo: newName + Remove the file identified by the receiver + +writeStream + Open a write-only FileStream on the receiver + + + +File: gst-base.info, Node: File-testing, Prev: File-file operations, Up: File + +File: testing +------------- + +exists + Answer whether a file with the name contained in the receiver does + exist. + +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. + +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. + +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 + + + +File: gst-base.info, Node: FileDescriptor, Next: FileSegment, Prev: File, Up: Base classes + +FileDescriptor +============== + +Defined in namespace Smalltalk +Superclass: ByteStream +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). + In addition, they accept a virtual filesystem path like + `configure.gz#ugz' which can be used to transparently extract or + decompress files from archives, or do arbitrary processing on the + files. + +* Menu: + +* FileDescriptor class-initialization:: (class) +* FileDescriptor class-instance creation:: (class) +* FileDescriptor-accessing:: (instance) +* FileDescriptor-basic:: (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-printing:: (instance) +* FileDescriptor-testing:: (instance) + + +File: gst-base.info, Node: FileDescriptor class-initialization, Next: FileDescriptor class-instance creation, Up: FileDescriptor + +FileDescriptor class: initialization +------------------------------------ + +initialize + Initialize the receiver's class variables + +update: aspect + Close open files before quitting + + + +File: gst-base.info, Node: FileDescriptor class-instance creation, Next: FileDescriptor-accessing, Prev: FileDescriptor class-initialization, Up: FileDescriptor + +FileDescriptor class: instance creation +--------------------------------------- + +append + Open for writing. The file is created if it does not exist. The + stream is positioned at the end of the file. + +create + Open for reading and writing. The file is created if it does not + exist, otherwise it is truncated. The stream is positioned at the + beginning of the file. + +fopen: fileName mode: fileMode + Open fileName in the required mode - answered by #append, #create, + #readWrite, #read or #write - and fail if the file cannot be + opened. Else answer a new FileStream. For mode anyway you can use + any standard C non-binary fopen mode. The file will be + automatically closed upon GC if the object is not referenced + anymore, but it is better to close it as soon as you're finished + with it anyway, using #close. To keep a file open even when no + references exist anymore, send it #removeToBeFinalized + +fopen: fileName mode: fileMode ifFail: aBlock + Open fileName in the required mode - answered by #append, #create, + #readWrite, #read or #write - and evaluate aBlock if the file + cannot be opened. Else answer a new FileStream. For mode anyway + you can use any The file will be automatically closed upon GC if + the object is not referenced anymore, but it is better to close it + as soon as you're finished with it anyway, using #close. To keep a + file open even when no references exist anymore, send it + #removeToBeFinalized + +on: fd + Open a FileDescriptor on the given file descriptor. Read-write + access is assumed. + +open: fileName + Open fileName in read-write mode - fail if the file cannot be + opened. Else answer a new FileStream. The file will be + automatically closed upon GC if the object is not referenced + anymore, but you should close it with #close anyway. To keep a + file open, send it #removeToBeFinalized + +open: fileName mode: fileMode + Open fileName in the required mode - answered by #append, #create, + #readWrite, #read or #write - and fail if the file cannot be + opened. Else answer a new FileStream. For mode anyway you can use + any standard C non-binary fopen mode. fileName can be a `virtual + filesystem' path, including URLs and '#' suffixes that are + inspected by the virtual filesystem layers and replaced with tasks + such as un-gzipping a file or extracting a file from an archive. + The file will be automatically closed upon GC if the object is not + referenced anymore, but it is better to close it as soon as you're + finished with it anyway, using #close. To keep a file open even + when no references exist anymore, send it #removeToBeFinalized + +open: fileName mode: fileMode ifFail: aBlock + Open fileName in the required mode - answered by #append, #create, + #readWrite, #read or #write - and evaluate aBlock if the file + cannot be opened. Else answer a new instance of the receiver. For + mode anyway you can use any standard C non-binary fopen mode. + fileName can be a `virtual filesystem' path, including URLs and + '#' suffixes that are inspected by the virtual filesystem layers + and replaced with tasks such as un-gzipping a file or extracting a + file from an archive. The file will be automatically closed upon + GC if the object is not referenced anymore, but it is better to + close it as soon as you're finished with it anyway, using #close. + To keep a file open even when no references exist anymore, send it + #removeToBeFinalized + +openTemporaryFile: baseName + Open for writing a file whose name starts with baseName, followed + by six random alphanumeric characters. The file is created with + mode read/write and permissions 0666 or 0600 on most recent + operating systems (beware, the former behavior might constitute a + security problem). The file is opened with the O_EXCL flag, + guaranteeing that when the method returns successfully we are the + only user. + +popen: commandName dir: direction + Open a pipe on the given command and fail if the file cannot be + opened. Else answer a new FileStream. The pipe will not be + automatically closed upon GC, even if the object is not referenced + anymore, because when you close a pipe you have to wait for the + associated process to terminate. To enforce automatic closing of + the pipe, send it #addToBeFinalized. direction is returned by + #read or #write ('r' or 'w') and is interpreted from the point of + view of Smalltalk: reading means Smalltalk reads the standard + output of the command, writing means Smalltalk writes the standard + input of the command. The other channel (stdin when reading, + stdout when writing) is the same as GST's, unless commandName + alters it. + +popen: commandName dir: direction ifFail: aBlock + Open a pipe on the given command and evaluate aBlock file cannot + be opened. Else answer a new FileStream. The pipe will not be + automatically closed upon GC, even if the object is not referenced + anymore, because when you close a pipe you have to wait for the + associated process to terminate. To enforce automatic closing of + the pipe, send it #addToBeFinalized. direction is interpreted + from the point of view of Smalltalk: reading means that Smalltalk + reads the standard output of the command, writing means that + Smalltalk writes the standard input of the command + +read + Open text file for reading. The stream is positioned at the + beginning of the file. + +readWrite + Open for reading and writing. The stream is positioned at the + beginning of the file. + +write + Truncate file to zero length or create text file for writing. The + stream is positioned at the beginning of the file. + + + +File: gst-base.info, Node: FileDescriptor-accessing, Next: FileDescriptor-basic, Prev: FileDescriptor class-instance creation, Up: FileDescriptor + +FileDescriptor: accessing +------------------------- + +canRead + Answer whether the file is open and we can read from it + +canWrite + Answer whether the file is open and we can write from it + +ensureReadable + If the file is open, wait until data can be read from it. The wait + allows other Processes to run. + +ensureWriteable + If the file is open, wait until we can write to it. The wait + allows other Processes to run. + +exceptionalCondition + Answer whether the file is open and an exceptional condition (such + as presence of out of band data) has occurred on it + +fd + Return the OS file descriptor of the file + +isOpen + Answer whether the file is still open + +isPipe + Answer whether the file is a pipe or an actual disk file + +name + Return the name of the file + +waitForException + If the file is open, wait until an exceptional condition (such as + presence of out of band data) has occurred on it. The wait allows + other Processes to run. + + + +File: gst-base.info, Node: FileDescriptor-basic, Next: FileDescriptor-built ins, Prev: FileDescriptor-accessing, Up: FileDescriptor + +FileDescriptor: basic +--------------------- + +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 + +size + Return the current size of the file, in bytes + +truncate + Truncate the file at the current position + + + +File: gst-base.info, Node: FileDescriptor-built ins, Next: FileDescriptor-class type methods, Prev: FileDescriptor-basic, Up: FileDescriptor + +FileDescriptor: built ins +------------------------- + +fileOp: ioFuncIndex + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +fileOp: ioFuncIndex with: arg1 + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex with: arg1 ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +fileOp: ioFuncIndex with: arg1 with: arg2 + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex with: arg1 with: arg2 ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + + + +File: gst-base.info, Node: FileDescriptor-class type methods, Next: FileDescriptor-initialize-release, Prev: FileDescriptor-built ins, Up: FileDescriptor + +FileDescriptor: class type methods +---------------------------------- + +isBinary + We answer characters, so answer false + +isExternalStream + We stream on an external entity (a file), so answer true + +isText + We answer characters, so answer true + + + +File: gst-base.info, Node: FileDescriptor-initialize-release, Next: FileDescriptor-low-level access, Prev: FileDescriptor-class type methods, Up: FileDescriptor + +FileDescriptor: initialize-release +---------------------------------- + +initialize + Initialize the receiver's instance variables + +newBuffer + Private - Answer a String to be used as the receiver's buffer + +nextHunk + Answer the next buffers worth of stuff in the Stream represented + by the receiver. Do at most one actual input operation. + + + +File: gst-base.info, Node: FileDescriptor-low-level access, Next: FileDescriptor-overriding inherited methods, Prev: FileDescriptor-initialize-release, Up: FileDescriptor + +FileDescriptor: low-level access +-------------------------------- + +read: byteArray + Ignoring any buffering, try to fill byteArray with the contents of + the file + +read: byteArray from: position to: end + Ignoring any buffering, try to fill the given range of byteArray + with the contents of the file + +read: byteArray numBytes: anInteger + Ignoring any buffering, try to fill anInteger bytes of byteArray + 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 + +FileDescriptor: overriding inherited methods +-------------------------------------------- + +isEmpty + Answer whether the receiver is empty + +next: anInteger + Return the next 'anInteger' characters from the stream, as a + String. + +nextByteArray: anInteger + Return the next 'anInteger' bytes from the stream, as a ByteArray. + +nextPutAll: aCollection + Put all the characters in aCollection in the file + +reverseContents + Return the contents of the file from the last byte to the first + +setToEnd + Reset the file pointer to the end of the file + +skip: anInteger + Skip anInteger bytes in the file + + + +File: gst-base.info, Node: FileDescriptor-printing, Next: FileDescriptor-testing, Prev: FileDescriptor-overriding inherited methods, Up: FileDescriptor + +FileDescriptor: printing +------------------------ + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: FileDescriptor-testing, Prev: FileDescriptor-printing, Up: FileDescriptor + +FileDescriptor: testing +----------------------- + +atEnd + Answer whether data has come to an end + + + +File: gst-base.info, Node: FileSegment, Next: FileStream, Prev: FileDescriptor, Up: Base classes + +FileSegment +=========== + +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. + +* Menu: + +* FileSegment class-basic:: (class) +* FileSegment class-installing:: (class) +* FileSegment-basic:: (instance) +* FileSegment-equality:: (instance) + + +File: gst-base.info, Node: FileSegment class-basic, Next: FileSegment class-installing, Up: FileSegment + +FileSegment class: basic +------------------------ + +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 + + + +File: gst-base.info, Node: FileSegment class-installing, Next: FileSegment-basic, Prev: FileSegment class-basic, Up: FileSegment + +FileSegment class: installing +----------------------------- + +relocateFrom: startPath to: endPath + Remove startPath from all paths that start with it, and replace it + with endPath. Needed to support $(DESTDIR) when installing + + + +File: gst-base.info, Node: FileSegment-basic, Next: FileSegment-equality, Prev: FileSegment class-installing, Up: FileSegment + +FileSegment: basic +------------------ + +asString + Answer a String containing the required segment of the file + +fileName + Answer the name of the file containing the segment + +filePos + Answer the position in the file where the segment starts + +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. + +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: FileSegment-equality, Prev: FileSegment-basic, Up: FileSegment + +FileSegment: equality +--------------------- + += aFileSegment + Answer whether the receiver and aFileSegment are equal. + +hash + Answer an hash value for the receiver. + + + +File: gst-base.info, Node: FileStream, Next: Float, Prev: FileSegment, Up: Base classes + +FileStream +========== + +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). + +* Menu: + +* FileStream class-file-in:: (class) +* FileStream class-standard streams:: (class) +* FileStream-basic:: (instance) +* FileStream-buffering:: (instance) +* FileStream-filing in:: (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 + +FileStream class: file-in +------------------------- + +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. + +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. + +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). + +generateMakefileOnto: aStream + Generate a make file for the file-ins since record was last set to + true. Store it on aStream + +initialize + Private - Initialize the receiver's class variables + +record: recordFlag + Set whether Smalltalk should record information aboutnested + 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: FileStream class-standard streams, Next: FileStream-basic, Prev: FileStream class-file-in, Up: FileStream + +FileStream class: standard streams +---------------------------------- + +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. + +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. + +stdout + Answer a FileStream that is attached the Smalltalk program's + standard output file handle; this is used for normal output from + the program. + + + +File: gst-base.info, Node: FileStream-basic, Next: FileStream-buffering, Prev: FileStream class-standard streams, Up: FileStream + +FileStream: basic +----------------- + +copyFrom: from to: to + Answer the contents of the file between the two given positions + +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 + 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 + +position: n + Set the file pointer to the zero-based position n + +size + Return the current size of the file, in bytes + +truncate + Truncate the file at the current position + + + +File: gst-base.info, Node: FileStream-buffering, Next: FileStream-filing in, Prev: FileStream-basic, Up: FileStream + +FileStream: buffering +--------------------- + +basicFlush + Private - Flush the output buffer, fail if it is empty + +bufferSize + Answer the file's current buffer + +bufferSize: bufSize + Flush the file and set the buffer's size to bufSize + +clean + Synchronize the file descriptor's state with the object's state. + +fill + Private - Fill the input buffer + +flush + Flush the output buffer + +newBuffer + Private - Answer a String to be used as the receiver's buffer + +nextHunk + Answer the next buffers worth of stuff in the Stream represented + by the receiver. Do at most one actual input operation. + +pendingWrite + Answer whether the output buffer is full + + + +File: gst-base.info, Node: FileStream-filing in, Next: FileStream-overriding inherited methods, Prev: FileStream-buffering, Up: FileStream + +FileStream: filing in +--------------------- + +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. + +fileInLine: lineNum fileName: aString at: charPosInt + Private - Much like a preprocessor #line directive; it is used by + the Emacs Smalltalk mode. + + + +File: gst-base.info, Node: FileStream-overriding inherited methods, Next: FileStream-testing, Prev: FileStream-filing in, Up: FileStream + +FileStream: overriding inherited methods +---------------------------------------- + +next: anInteger + Return the next 'anInteger' characters from the stream, as a + String. + +nextByteArray: anInteger + Return the next 'anInteger' bytes from the stream, as a ByteArray. + +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. + +nextPutAll: aCollection + Put all the characters in aCollection in the file + +nextPutAllFlush: aCollection + Put all the characters in aCollection in the file, then flush the + file buffers + + + +File: gst-base.info, Node: FileStream-testing, Prev: FileStream-overriding inherited methods, Up: FileStream + +FileStream: testing +------------------- + +atEnd + Answer whether data has come to an end + + + +File: gst-base.info, Node: Float, Next: FloatD, Prev: FileStream, Up: Base classes + +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-printing:: (instance) +* Float-storing:: (instance) +* Float-testing:: (instance) +* Float-testing functionality:: (instance) + + +File: gst-base.info, Node: Float class-byte-order dependancies, Next: Float class-characterization, Up: Float + +Float class: byte-order dependancies +------------------------------------ + +signByte + Answer the byte of the receiver that contains the exponent + + + +File: gst-base.info, Node: Float class-characterization, Next: Float-arithmetic, Prev: Float class-byte-order dependancies, Up: Float + +Float class: characterization +----------------------------- + +denormalized + Answer whether instances of the receiver can be in denormalized + form. + +e + Returns the value of e. Hope is that it is precise enough + +epsilon + Return the smallest Float x for which is 1 + x ~= 1 + +fmin + Return the smallest Float that is > 0. + +fminDenormalized + Return the smallest Float that is > 0 if denormalized values are + supported, else return 0. + +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 + +pi + Returns the value of pi. Hope is that it is precise enough + +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. + + + +File: gst-base.info, Node: Float-arithmetic, Next: Float-basic, Prev: Float class-characterization, Up: Float + +Float: arithmetic +----------------- + +integerPart + Return the receiver's integer part + +negated + Return the negation of the receiver. Unlike 0-self, this converts + correctly signed zeros. + + + +File: gst-base.info, Node: Float-basic, Next: Float-built ins, Prev: Float-arithmetic, Up: Float + +Float: basic +------------ + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: Float-built ins, Next: Float-coercing, Prev: Float-basic, Up: Float + +Float: built ins +---------------- + +arcCos + Answer the arc-cosine of the receiver + +arcSin + Answer the arc-sine of the receiver + +arcTan + Answer the arc-tangent of the receiver + +ceiling + Answer the integer part of the receiver, truncated towards + +infinity + +cos + Answer the cosine of the receiver + +exp + Answer 'e' (2.718281828459...) raised to the receiver + +floor + Answer the integer part of the receiver, truncated towards + -infinity + +ln + Answer the logarithm of the receiver in base 'e' + (2.718281828459...) + +primHash + Private - Answer an hash value for the receiver + +raisedTo: aNumber + Answer the receiver raised to its aNumber power + +sin + Answer the sine of the receiver + +sqrt + Answer the square root of the receiver + +tan + Answer the tangent of the receiver + + + +File: gst-base.info, Node: Float-coercing, Next: Float-printing, Prev: Float-built ins, Up: Float + +Float: coercing +--------------- + +asExactFraction + Convert the receiver into a fraction with optimal approximation, + but with usually huge terms. + +asFloat + Just defined for completeness. Return the receiver. + +asFraction + Convert the receiver into a fraction with a good (but undefined) + approximation + +estimatedLog + Answer an estimate of (self abs floorLog: 10) + +truncated + Convert the receiver to an Integer. Only used for LargeIntegers, + there are primitives for the other cases. + + + +File: gst-base.info, Node: Float-printing, Next: Float-storing, Prev: Float-coercing, Up: Float + +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 + +Float: storing +-------------- + +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 + +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, Prev: Float-testing, Up: Float + +Float: testing functionality +---------------------------- + +isFloat + Answer `true'. + + + +File: gst-base.info, Node: FloatD, Next: FloatE, Prev: Float, Up: Base classes + +FloatD +====== + +Defined in namespace Smalltalk +Superclass: Float +Category: Language-Data types + My instances represent floating point numbers that have 64 bits of + precision (well, less than that in precision; they are precisely + the same as C's "double" datatype). Besides the standard + numerical operations, I provide transcendental operations too. + +* Menu: + +* FloatD class-byte-order dependancies:: (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 dependancies, Next: FloatD class-characterization, Up: FloatD + +FloatD class: byte-order dependancies +------------------------------------- + +signByte + Answer the byte of the receiver that contains the exponent + + + +File: gst-base.info, Node: FloatD class-characterization, Next: FloatD class-converting, Prev: FloatD class-byte-order dependancies, Up: FloatD + +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 + + + +File: gst-base.info, Node: FloatD class-converting, Next: FloatD-built ins, Prev: FloatD class-characterization, Up: FloatD + +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 + +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 + +<= 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 + +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 + 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: FloatD-coercing, Prev: FloatD-built ins, Up: FloatD + +FloatD: coercing +---------------- + +asFloatD + 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: FloatE, Next: FloatQ, Prev: FloatD, Up: Base classes + +FloatE +====== + +Defined in namespace Smalltalk +Superclass: Float +Category: Language-Data types + My instances represent floating point numbers that have 64 bits of + precision (well, less than that in precision; they are precisely + the same as C's "double" datatype). Besides the standard + numerical operations, I provide transcendental operations too. + +* Menu: + +* FloatE class-byte-order dependancies:: (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-characterization, Up: FloatE + +FloatE class: byte-order dependancies +------------------------------------- + +signByte + Answer the byte of the receiver that contains the exponent + + + +File: gst-base.info, Node: FloatE class-characterization, Next: FloatE class-converting, Prev: FloatE class-byte-order dependancies, Up: FloatE + +FloatE class: characterization +------------------------------ + +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. + +e + Returns the value of e. Hope is that it is precise enough + +emax + Return the maximum allowable exponent for a FloatE that is finite. + +emin + Return the maximum allowable exponent for a FloatE that is finite. + +fmax + Return the largest normalized FloatE that is not infinite. + +fminNormalized + Return the smallest normalized FloatE that is > 0 + +infinity + Return a FloatE 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 FloatE that represents a mathematically indeterminate + value (e.g. Inf - Inf, Inf / Inf). + +negativeInfinity + Return a FloatE 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: FloatE class-converting, Next: FloatE-built ins, Prev: FloatE class-characterization, Up: FloatE + +FloatE class: converting +------------------------ + +coerce: aNumber + Answer aNumber converted to a FloatE + + + +File: gst-base.info, Node: FloatE-built ins, Next: FloatE-coercing, Prev: FloatE class-converting, Up: FloatE + +FloatE: 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 FloatE + +< 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 + +asFloatQ + Answer the receiver converted to a FloatQ + +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: FloatE-coercing, Prev: FloatE-built ins, Up: FloatE + +FloatE: coercing +---------------- + +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 + +FloatQ +====== + +Defined in namespace Smalltalk +Superclass: Float +Category: Language-Data types + My instances represent floating point numbers that have 64 bits of + precision (well, less than that in precision; they are precisely + the same as C's "double" datatype). Besides the standard + numerical operations, I provide transcendental operations too. + +* Menu: + +* FloatQ class-byte-order dependancies:: (class) +* FloatQ class-characterization:: (class) +* FloatQ class-converting:: (class) +* FloatQ-built ins:: (instance) +* FloatQ-coercing:: (instance) + + +File: gst-base.info, Node: FloatQ class-byte-order dependancies, Next: FloatQ class-characterization, Up: FloatQ + +FloatQ class: byte-order dependancies +------------------------------------- + +signByte + Answer the byte of the receiver that contains the exponent + + + +File: gst-base.info, Node: FloatQ class-characterization, Next: FloatQ class-converting, Prev: FloatQ class-byte-order dependancies, Up: FloatQ + +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 + +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 + +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, Prev: FloatQ-built ins, Up: FloatQ + +FloatQ: coercing +---------------- + +asFloatQ + 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: Fraction, Next: Halt, Prev: FloatQ, Up: Base classes + +Fraction +======== + +Defined in namespace Smalltalk +Superclass: Number +Category: Language-Data types + I represent rational numbers in the form (p/q) where p and q are + integers. The arithmetic operations *, +, -, /, on fractions, + all return a reduced fraction. + +* Menu: + +* Fraction class-converting:: (class) +* Fraction class-instance creation:: (class) +* Fraction-accessing:: (instance) +* Fraction-arithmetic:: (instance) +* Fraction-coercing:: (instance) +* Fraction-comparing:: (instance) +* Fraction-converting:: (instance) +* Fraction-optimized cases:: (instance) +* Fraction-printing:: (instance) +* Fraction-testing:: (instance) + + +File: gst-base.info, Node: Fraction class-converting, Next: Fraction class-instance creation, Up: Fraction + +Fraction class: converting +-------------------------- + +coerce: aNumber + Answer aNumber converted to a Fraction + + + +File: gst-base.info, Node: Fraction class-instance creation, Next: Fraction-accessing, Prev: Fraction class-converting, Up: Fraction + +Fraction class: instance creation +--------------------------------- + +initialize + Initialize the receiver's class variables + +numerator: nInteger denominator: dInteger + Answer a new instance of fraction (nInteger/dInteger) + + + +File: gst-base.info, Node: Fraction-accessing, Next: Fraction-arithmetic, Prev: Fraction class-instance creation, Up: Fraction + +Fraction: accessing +------------------- + +denominator + Answer the receiver's denominator + +numerator + Answer the receiver's numerator + + + +File: gst-base.info, Node: Fraction-arithmetic, Next: Fraction-coercing, Prev: Fraction-accessing, Up: Fraction + +Fraction: arithmetic +-------------------- + +* aNumber + Multiply two numbers and answer the result. + ++ aNumber + Sum two numbers and answer the result. + +- aNumber + Subtract aNumber from the receiver and answer the result. + +/ aNumber + Divide the receiver by aNumber and answer the result. + +// aNumber + Return the integer quotient of dividing the receiver by aNumber + with truncation towards negative infinity. + +\\ aNumber + Return the remainder from dividing the receiver by aNumber, (using + //). + +estimatedLog + Answer an estimate of (self abs floorLog: 10) + + + +File: gst-base.info, Node: Fraction-coercing, Next: Fraction-comparing, Prev: Fraction-arithmetic, Up: Fraction + +Fraction: coercing +------------------ + +ceiling + Truncate the receiver towards positive infinity and return the + truncated result + +coerce: aNumber + Coerce aNumber to the receiver's class + +floor + Truncate the receiver towards negative infinity and return the + truncated result + +generality + Return the receiver's generality + +truncated + Truncate the receiver and return the truncated result + +unity + Coerce 1 to the receiver's class + +zero + Coerce 0 to the receiver's class + + diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-10 smalltalk-2.1.7/doc/gst-base.info-10 --- smalltalk-2.1.6/doc/gst-base.info-10 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-10 1970-01-01 01:00:00.000000000 +0100 @@ -1,1757 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: PackageLoader class-accessing, Next: PackageLoader class-loading, Up: PackageLoader - -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 - -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:) - -prerequisitesFor: package - Answer a Set of Strings containing the prerequisites for the given - package - -refreshDependencies - Reload the `packages.xml' file in the image and kernel directories - - - -File: gst-base.info, Node: PackageLoader class-loading, Next: PackageLoader class-testing, Prev: PackageLoader class-accessing, Up: PackageLoader - -PackageLoader class: loading ----------------------------- - -extractDependenciesFor: packagesList onError: aBlock - Answer an OrderedCollection containing all the packages which you - have to load to enable the packages in packagesList, in an - appropriate order. For example PackageLoader - extractDependenciesFor: #('BloxTestSuite' 'Blox' 'Browser') on a - newly built image will evaluate to an OrderedCollection containing - 'Kernel', 'Blox', 'BloxTestSuite' and 'Browser'. Note that Blox - has been moved before BloxTestSuite. Pass an error message to - aBlock if one or more packages need prerequisites which are not - available. - -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 - -PackageLoader class: testing ----------------------------- - -canLoad: package - Answer whether all the needed pre-requisites for package are - available. - - - -File: gst-base.info, Node: PluggableAdaptor, Next: PluggableProxy, Prev: PackageLoader, Up: Base classes - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - - - -File: gst-base.info, Node: Point-accessing, Next: Point-arithmetic, Prev: Point class-instance creation, Up: Point - -Point: accessing ----------------- - -x - Answer the x coordinate - -x: aNumber - Set the x coordinate to aNumber - -x: anXNumber y: aYNumber - Set the x and y coordinate to anXNumber and aYNumber, respectively - -y - Answer the y coordinate - -y: aNumber - Set the y coordinate to aNumber - - - -File: gst-base.info, Node: Point-arithmetic, Next: Point-comparing, Prev: Point-accessing, Up: Point - -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 - -- delta - Subtract delta, which can be a Number or a Point, from the receiver - -/ scale - Divide the receiver by scale, which can be a Number or a Point, - with no loss of precision - -// 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: Point-comparing, Next: Point-converting, Prev: Point-arithmetic, Up: Point - -Point: comparing ----------------- - -< aPoint - Answer whether the receiver is higher and to the left of aPoint - -<= aPoint - Answer whether aPoint is equal to the receiver, or the receiver is - higher and to the left of aPoint - -= aPoint - Answer whether the receiver is equal to aPoint - -> aPoint - Answer whether the receiver is lower and to the right of aPoint - ->= 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 - -min: aPoint - Answer self if it is higher and to the left of aPoint, aPoint - otherwise - - - -File: gst-base.info, Node: Point-converting, Next: Point-point functions, Prev: Point-comparing, Up: Point - -Point: converting ------------------ - -asPoint - Answer the receiver. - -asRectangle - Answer an empty rectangle whose origin is self - -corner: aPoint - Answer a Rectangle whose origin is the receiver and whose corner - is aPoint - -extent: aPoint - Answer a Rectangle whose origin is the receiver and whose extent - is aPoint - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: Point-point functions, Next: Point-printing, Prev: Point-converting, Up: Point - -Point: point functions ----------------------- - -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 - -dist: aPoint - Answer the distance between the receiver and aPoint - -dotProduct: aPoint - Answer the dot product between the receiver and aPoint - -grid: aPoint - Answer a new point whose coordinates are rounded towards the - nearest multiple of aPoint - -normal - Rotate the Point 90degrees clockwise and get the unit vector - -transpose - Answer a new point whose coordinates are the receiver's coordinates - exchanged (x becomes y, y becomes x) - -truncatedGrid: aPoint - Answer a new point whose coordinates are rounded towards -infinity, - to a multiple of grid (which must be a Point) - - - -File: gst-base.info, Node: Point-printing, Next: Point-storing, Prev: Point-point functions, Up: Point - -Point: printing ---------------- - -printOn: aStream - Print a representation for the receiver on aStream - - - -File: gst-base.info, Node: Point-storing, Next: Point-truncation and round off, Prev: Point-printing, Up: Point - -Point: storing --------------- - -storeOn: aStream - Print Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: Point-truncation and round off, Prev: Point-storing, Up: Point - -Point: truncation and round off -------------------------------- - -rounded - Answer a new point whose coordinates are rounded to the nearest - integer - -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: PositionableStream, Next: Process, Prev: Point, Up: Base classes - -PositionableStream -================== - -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. - -* Menu: - -* PositionableStream class-instance creation:: (class) -* PositionableStream-accessing-reading:: (instance) -* PositionableStream-class type methods:: (instance) -* PositionableStream-positioning:: (instance) -* PositionableStream-testing:: (instance) -* PositionableStream-truncating:: (instance) - - -File: gst-base.info, Node: PositionableStream class-instance creation, Next: PositionableStream-accessing-reading, Up: PositionableStream - -PositionableStream class: instance creation -------------------------------------------- - -on: aCollection - Answer an instance of the receiver streaming on the whole contents - 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: PositionableStream-accessing-reading, Next: PositionableStream-class type methods, Prev: PositionableStream class-instance creation, Up: PositionableStream - -PositionableStream: accessing-reading -------------------------------------- - -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. - -copyFrom: start to: end - Answer the collection on which the receiver is streaming, from the - start-th item to the end-th - -next - Answer the next item of the receiver. Returns nil when at end of - stream. - -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. - -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: PositionableStream-class type methods, Next: PositionableStream-positioning, Prev: PositionableStream-accessing-reading, Up: PositionableStream - -PositionableStream: class type methods --------------------------------------- - -isExternalStream - We stream on a collection residing in the image, so answer false - -species - The collections returned by #upTo: etc. are the same kind as those - returned by the collection with methods such as #select: - - - -File: gst-base.info, Node: PositionableStream-positioning, Next: PositionableStream-testing, Prev: PositionableStream-class type methods, Up: PositionableStream - -PositionableStream: positioning -------------------------------- - -basicPosition: anInteger - Move the stream pointer to the anInteger-th object - -position - Answer the current value of the stream pointer - -position: anInteger - Move the stream pointer to the anInteger-th object - -reset - Move the stream back to its first element. For write-only streams, - the stream is truncated there. - -setToEnd - Move the current position to the end of the stream. - -size - Answer the size of data on which we are streaming. - -skip: anInteger - Move the current position by anInteger places, either forwards or - backwards. - -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). - - - -File: gst-base.info, Node: PositionableStream-testing, Next: PositionableStream-truncating, Prev: PositionableStream-positioning, Up: PositionableStream - -PositionableStream: testing ---------------------------- - -atEnd - Answer whether the objects in the stream have reached an end - -basicAtEnd - Answer whether the objects in the stream have reached an end. - This method must NOT be overridden. - -isEmpty - Answer whether the stream has no objects - - - -File: gst-base.info, Node: PositionableStream-truncating, Prev: PositionableStream-testing, Up: PositionableStream - -PositionableStream: truncating ------------------------------- - -truncate - Truncate the receiver to the current position - only valid for - writing streams - - - -File: gst-base.info, Node: Process, Next: ProcessorScheduler, Prev: PositionableStream, Up: Base classes - -Process -======= - -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. - -* Menu: - -* Process-accessing:: (instance) -* Process-basic:: (instance) -* Process-builtins:: (instance) -* Process-printing:: (instance) - - -File: gst-base.info, Node: Process-accessing, Next: Process-basic, Up: Process - -Process: accessing ------------------- - -externalInterruptsEnabled - Answer whether the receiver is executed with interrupts enabled - -name - Answer the user-friendly name of the process. - -name: aString - Give the name aString to the process - -priority - Answer the receiver's priority - -priority: anInteger - Change the receiver's priority to anInteger - -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. - -setPriorityFrom: activePriority to: anInteger suspend: aBoolean - Change the priority to anInteger. If aBoolean is true, suspend - the process after having done so; if it is false, check if it is - nicer to relinquish control from the running process (based on the - priority of the active process, that is passed in activePriority) - and if this is the case, preempt it. - -suspendedContext - Answer the context that the process was executing at the time it - was suspended. - -valueWithoutInterrupts: aBlock - Evaluate aBlock and delay all interrupts that are requested during - its execution to after aBlock returns. - - - -File: gst-base.info, Node: Process-basic, Next: Process-builtins, Prev: Process-accessing, Up: Process - -Process: basic --------------- - -lowerPriority - Lower a bit the priority of the receiver. A #lowerPriority will - cancel a previous #raisePriority, and vice versa. - -primTerminate - Terminate the receiver - This is nothing more than prohibiting to - resume the process, then suspending it. - -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:. - -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 - -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. - - - -File: gst-base.info, Node: Process-builtins, Next: Process-printing, Prev: Process-basic, Up: Process - -Process: builtins ------------------ - -resume - Resume the receiver's execution - -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. - -yield - Yield control from the receiver to other processes - - - -File: gst-base.info, Node: Process-printing, Prev: Process-builtins, Up: Process - -Process: printing ------------------ - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-base.info, Node: ProcessorScheduler, Next: Promise, Prev: Process, Up: Base classes - -ProcessorScheduler -================== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Processes - I provide methods that control the execution of processes. - -* 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: ProcessorScheduler class-instance creation, Next: ProcessorScheduler-basic, Up: ProcessorScheduler - -ProcessorScheduler class: instance creation -------------------------------------------- - -new - Error--new instances of ProcessorScheduler should not be created. - - - -File: gst-base.info, Node: ProcessorScheduler-basic, Next: ProcessorScheduler-built ins, Prev: ProcessorScheduler class-instance creation, Up: ProcessorScheduler - -ProcessorScheduler: basic -------------------------- - -activePriority - Answer the active process' priority - -activeProcess - Answer the active process - -changePriorityListOf: aProcess to: aPriority suspend: aBoolean - Private - Move aProcess to the execution list for aPriority, - answer the new execution list - -processesAt: aPriority - Answer a linked list of processes at the given priority - -terminateActive - Terminate the active process - -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). - -yield - Let the active process yield control to other processes - - - -File: gst-base.info, Node: ProcessorScheduler-built ins, Next: ProcessorScheduler-idle tasks, Prev: ProcessorScheduler-basic, Up: ProcessorScheduler - -ProcessorScheduler: built ins ------------------------------ - - 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: ProcessorScheduler-idle tasks, Next: ProcessorScheduler-printing, Prev: ProcessorScheduler-built ins, Up: ProcessorScheduler - -ProcessorScheduler: idle tasks ------------------------------- - -idle - Private - Call the next idle task - -idleAdd: aBlock - Register aBlock to be executed when things are idle - -initialize - Private - Start the finalization process. - -update: aSymbol - Private - If we left some work behind when the image was saved, do - it now. - - - -File: gst-base.info, Node: ProcessorScheduler-printing, Next: ProcessorScheduler-priorities, Prev: ProcessorScheduler-idle tasks, Up: ProcessorScheduler - -ProcessorScheduler: printing ----------------------------- - -printOn: aStream - Store onto aStream a printed representation of the receiver - - - -File: gst-base.info, Node: ProcessorScheduler-priorities, Next: ProcessorScheduler-storing, Prev: ProcessorScheduler-printing, Up: ProcessorScheduler - -ProcessorScheduler: priorities ------------------------------- - -highestPriority - Answer the highest valid priority - -highIOPriority - Answer the priority for system high-priority I/O processes, such - as a process handling input from a network. - -lowestPriority - Answer the lowest 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. - -priorityName: priority - Private - Answer a name for the given process priority - -rockBottomPriority - Answer the lowest valid priority - -systemBackgroundPriority - Answer the priority for system background-priority processes. - Examples are an incremental garbage collector or status checker. - -timingPriority - Answer the priority for system real-time processes. - -unpreemptedPriority - Answer the highest priority avilable in the system; never create a - process with this priority, instead use - BlockClosure>>#valueWithoutPreemption. - -userBackgroundPriority - Answer the priority for user background-priority processes - -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. - -userSchedulingPriority - Answer the priority for user standard-priority processes - - - -File: gst-base.info, Node: ProcessorScheduler-storing, Next: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-priorities, Up: ProcessorScheduler - -ProcessorScheduler: storing ---------------------------- - -storeOn: aStream - Store onto aStream a Smalltalk expression which evaluates to the - receiver - - - -File: gst-base.info, Node: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-storing, Up: ProcessorScheduler - -ProcessorScheduler: timed invocation ------------------------------------- - -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 - Private - signal 'aSemaphore' when the given C signal occurs - - - -File: gst-base.info, Node: Promise, Next: Random, Prev: ProcessorScheduler, Up: Base classes - -Promise -======= - -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. - -* Menu: - -* Promise class-creating instances:: (class) -* Promise-accessing:: (instance) -* Promise-initializing:: (instance) -* Promise-printing:: (instance) - - -File: gst-base.info, Node: Promise class-creating instances, Next: Promise-accessing, Up: Promise - -Promise class: creating instances ---------------------------------- - -null - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: Promise-accessing, Next: Promise-initializing, Prev: Promise class-creating instances, Up: Promise - -Promise: accessing ------------------- - -hasValue - Answer whether we already have a value. - -value - Get the value of the receiver. - -value: anObject - Set the value of the receiver. - - - -File: gst-base.info, Node: Promise-initializing, Next: Promise-printing, Prev: Promise-accessing, Up: Promise - -Promise: initializing ---------------------- - -initialize - Private - set the initial state of the receiver - - - -File: gst-base.info, Node: Promise-printing, Prev: Promise-initializing, Up: Promise - -Promise: printing ------------------ - -printOn: aStream - Print a representation of the receiver - - - -File: gst-base.info, Node: Random, Next: ReadStream, Prev: Promise, Up: Base classes - -Random -====== - -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. - -* Menu: - -* 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 - -Random class: instance creation -------------------------------- - -new - Create a new random number generator whose seed is given by the - current time on the millisecond clock - -seed: aFloat - Create a new random number generator whose seed is aFloat - - - -File: gst-base.info, Node: Random class-shortcuts, Next: Random-basic, Prev: Random class-instance creation, Up: Random - -Random class: shortcuts ------------------------ - -between: low and: high - Return a random integer between the given extrema - -next - Return a random number between 0 and 1 (excluded) - - - -File: gst-base.info, Node: Random-basic, Next: Random-testing, Prev: Random class-shortcuts, Up: Random - -Random: basic -------------- - -atEnd - This stream never ends. Always answer false. - -between: low and: high - Return a random integer between low and high. - -next - Return the next random number in the sequence. - -nextPut: value - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: Random-testing, Prev: Random-basic, Up: Random - -Random: testing ---------------- - -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: ReadStream, Next: ReadWriteStream, Prev: Random, Up: Base classes - -ReadStream -========== - -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. - -* Menu: - -* ReadStream class-instance creation:: (class) -* ReadStream-accessing-reading:: (instance) - - -File: gst-base.info, Node: ReadStream class-instance creation, Next: ReadStream-accessing-reading, Up: ReadStream - -ReadStream class: instance creation ------------------------------------ - -on: aCollection - Answer a new stream working on aCollection from its start. - - - -File: gst-base.info, Node: ReadStream-accessing-reading, Prev: ReadStream class-instance creation, Up: ReadStream - -ReadStream: accessing-reading ------------------------------ - -reverseContents - May be faster than generic stream reverseContents. - -size - Answer the receiver's size. - - - -File: gst-base.info, Node: ReadWriteStream, Next: Rectangle, Prev: ReadStream, Up: Base classes - -ReadWriteStream -=============== - -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. - -* Menu: - -* ReadWriteStream class-instance creation:: (class) -* ReadWriteStream-positioning:: (instance) - - -File: gst-base.info, Node: ReadWriteStream class-instance creation, Next: ReadWriteStream-positioning, Up: ReadWriteStream - -ReadWriteStream class: instance creation ----------------------------------------- - -on: aCollection - Answer a new stream working on aCollection from its start. The - stream starts at the front of aCollection - -with: aCollection - Answer a new instance of the receiver which streams from the end - of aCollection. - - - -File: gst-base.info, Node: ReadWriteStream-positioning, Prev: ReadWriteStream class-instance creation, Up: ReadWriteStream - -ReadWriteStream: positioning ----------------------------- - -position: anInteger - Unlike WriteStreams, ReadWriteStreams don't truncate the stream - -skip: anInteger - Unlike WriteStreams, ReadWriteStreams don't truncate the stream - - - -File: gst-base.info, Node: Rectangle, Next: RecursionLock, Prev: ReadWriteStream, Up: Base classes - -Rectangle -========= - -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) - -* Menu: - -* 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 - -Rectangle class: instance creation ----------------------------------- - -left: leftNumber right: rightNumber top: topNumber bottom: bottomNumber - Answer a rectangle with the given coordinates - -new - Answer the (0 @ 0 corner: 0 @ 0) rectangle - -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: Rectangle-accessing, Next: Rectangle-copying, Prev: Rectangle class-instance creation, Up: Rectangle - -Rectangle: accessing --------------------- - -bottom - Answer the corner's y of the receiver - -bottom: aNumber - Set the corner's y of the receiver - -bottomCenter - Answer the center of the receiver's bottom side - -bottomLeft - Answer the bottom-left corner of the receiver - -bottomLeft: aPoint - Answer the receiver with the bottom-left changed to aPoint - -bottomRight - Answer the bottom-right corner of the receiver - -bottomRight: aPoint - Change the bottom-right corner of the receiver - -center - Answer the center of the receiver - -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 - -left: aValue - Set the x of the left edge 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 - -origin - Answer the top-left corner of the receiver - -origin: aPoint - Change the top-left corner of the receiver to aPoint - -origin: pnt1 corner: pnt2 - Change both the origin (top-left corner) and the corner - (bottom-right corner) of the receiver - -origin: pnt1 extent: pnt2 - Change the top-left corner and the size of 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 - -rightCenter - Answer the center of the receiver's right side - -top - Answer the y of the receiver's top-left corner - -top: aValue - Change the y of the receiver's top-left corner - -topCenter - Answer the center of the receiver's top side - -topLeft - Answer the receiver's top-left corner - -topLeft: aPoint - Change the receiver's top-left corner's coordinates to aPoint - -topRight - Answer the receiver's top-right corner - -topRight: aPoint - Change the receiver's top-right corner to aPoint - -width - Answer the receiver's width - -width: aNumber - Change the receiver's width to aNumber - - - -File: gst-base.info, Node: Rectangle-copying, Next: Rectangle-printing, Prev: Rectangle-accessing, Up: Rectangle - -Rectangle: copying ------------------- - -copy - Return a deep copy of the receiver for safety. - - - -File: gst-base.info, Node: Rectangle-printing, Next: Rectangle-rectangle functions, Prev: Rectangle-copying, Up: Rectangle - -Rectangle: printing -------------------- - -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: Rectangle-rectangle functions, Next: Rectangle-testing, Prev: Rectangle-printing, Up: Rectangle - -Rectangle: rectangle functions ------------------------------- - -amountToTranslateWithin: aRectangle - Answer a Point so that if aRectangle is translated by that point, - its origin lies within the receiver's. - -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. - -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. - -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. - -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 - -intersect: aRectangle - Returns the rectangle (if any) created by the overlap of - rectangles A and B. - -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. - - - -File: gst-base.info, Node: Rectangle-testing, Next: Rectangle-transforming, Prev: Rectangle-rectangle functions, Up: Rectangle - -Rectangle: testing ------------------- - -= 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 - -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 - -hash - Answer an hash value for the receiver - -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 - - - -File: gst-base.info, Node: Rectangle-transforming, Next: Rectangle-truncation and round off, Prev: Rectangle-testing, Up: Rectangle - -Rectangle: transforming ------------------------ - -moveBy: aPoint - Change the receiver so that the origin and corner are shifted by - aPoint - -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 - -translateBy: factor - Answer a copy of the receiver in which the origin and corner are - shifted by aPoint - - - -File: gst-base.info, Node: Rectangle-truncation and round off, Prev: Rectangle-transforming, Up: Rectangle - -Rectangle: truncation and round off ------------------------------------ - -rounded - Answer a copy of the receiver with the coordinates rounded to the - nearest integers - - - -File: gst-base.info, Node: RecursionLock, Next: RootNamespace, Prev: Rectangle, Up: Base classes - -RecursionLock -============= - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Processes - -* Menu: - -* RecursionLock class-instance creation:: (class) -* RecursionLock-accessing:: (instance) -* RecursionLock-mutual exclusion:: (instance) -* RecursionLock-printing:: (instance) - - -File: gst-base.info, Node: RecursionLock class-instance creation, Next: RecursionLock-accessing, Up: RecursionLock - -RecursionLock class: instance creation --------------------------------------- - -new - Answer a new semaphore - - - -File: gst-base.info, Node: RecursionLock-accessing, Next: RecursionLock-mutual exclusion, Prev: RecursionLock class-instance creation, Up: RecursionLock - -RecursionLock: accessing ------------------------- - -isOwnerProcess - Answer whether the receiver is the owner of the lock. - -name - Answer a user-defined name for the lock. - -name: aString - Set to aString the user-defined name for the lock. - -waitingProcesses - Answer the set of processes that are waiting on the semaphore. - -wouldBlock - Answer whether sending #wait to the receiver would suspend the - active process. - - - -File: gst-base.info, Node: RecursionLock-mutual exclusion, Next: RecursionLock-printing, Prev: RecursionLock-accessing, Up: RecursionLock - -RecursionLock: mutual exclusion -------------------------------- - -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: RecursionLock-printing, Prev: RecursionLock-mutual exclusion, Up: RecursionLock - -RecursionLock: printing ------------------------ - -printOn: aStream - Print a human-readable represention of the receiver on aStream. - - - -File: gst-base.info, Node: RootNamespace, Next: RunArray, Prev: RecursionLock, Up: Base classes - -RootNamespace -============= - -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'. - -* Menu: - -* RootNamespace class-instance creation:: (class) -* RootNamespace-namespace hierarchy:: (instance) -* RootNamespace-overrides for superspaces:: (instance) -* RootNamespace-printing:: (instance) - - -File: gst-base.info, Node: RootNamespace class-instance creation, Next: RootNamespace-namespace hierarchy, Up: RootNamespace - -RootNamespace class: instance creation --------------------------------------- - -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: RootNamespace-namespace hierarchy, Next: RootNamespace-overrides for superspaces, Prev: RootNamespace class-instance creation, Up: RootNamespace - -RootNamespace: namespace hierarchy ----------------------------------- - -siblings - Answer all the other root namespaces - -siblingsDo: aBlock - Evaluate aBlock once for each of the other root namespaces, - passing the namespace as a parameter. - - - -File: gst-base.info, Node: RootNamespace-overrides for superspaces, Next: RootNamespace-printing, Prev: RootNamespace-namespace hierarchy, Up: RootNamespace - -RootNamespace: overrides for superspaces ----------------------------------------- - -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. - - - -File: gst-base.info, Node: RootNamespace-printing, Prev: RootNamespace-overrides for superspaces, Up: RootNamespace - -RootNamespace: printing ------------------------ - -nameIn: aNamespace - Answer Smalltalk code compiling to the receiver when the current - namespace is aNamespace - -printOn: aStream in: aNamespace - Print on aStream some Smalltalk code compiling to the receiver - when the current namespace is aNamespace - -storeOn: aStream - Store Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: RunArray, Next: ScaledDecimal, Prev: RootNamespace, Up: Base classes - -RunArray -======== - -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. - -* 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: RunArray class-instance creation, Next: RunArray-accessing, Up: RunArray - -RunArray class: instance creation ---------------------------------- - -new - Answer an empty RunArray - -new: aSize - Answer a RunArray with space for aSize runs - - - -File: gst-base.info, Node: RunArray-accessing, Next: RunArray-adding, Prev: RunArray class-instance creation, Up: RunArray - -RunArray: accessing -------------------- - -at: anIndex - Answer the element at index anIndex - -at: anIndex put: anObject - Replace the element at index anIndex with anObject and answer - anObject - - - -File: gst-base.info, Node: RunArray-adding, Next: RunArray-basic, Prev: RunArray-accessing, Up: RunArray - -RunArray: adding ----------------- - -add: anObject afterIndex: anIndex - Add anObject after the element at index anIndex - -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 - -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 - -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 - -addFirst: anObject - Add anObject at the beginning of the receiver. Watch out: this - operation can cause serious performance pitfalls - -addLast: anObject - Add anObject at the end of the receiver - - - -File: gst-base.info, Node: RunArray-basic, Next: RunArray-copying, Prev: RunArray-adding, Up: RunArray - -RunArray: basic ---------------- - -first - Answer the first element in the receiver - -last - Answer the last element of the receiver - -size - Answer the number of elements in the receiver - - - -File: gst-base.info, Node: RunArray-copying, Next: RunArray-enumerating, Prev: RunArray-basic, Up: RunArray - -RunArray: copying ------------------ - -deepCopy - Answer a copy of the receiver containing copies of the receiver's - elements (#copy is used to obtain them) - -shallowCopy - Answer a copy of the receiver. The elements are not copied - - - -File: gst-base.info, Node: RunArray-enumerating, Next: RunArray-removing, Prev: RunArray-copying, Up: RunArray - -RunArray: enumerating ---------------------- - -do: aBlock - Enumerate all the objects in the receiver, passing each one to - aBlock - -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 - - - -File: gst-base.info, Node: RunArray-removing, Next: RunArray-searching, Prev: RunArray-enumerating, Up: RunArray - -RunArray: removing ------------------- - -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 - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-11 smalltalk-2.1.7/doc/gst-base.info-11 --- smalltalk-2.1.6/doc/gst-base.info-11 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-11 1970-01-01 01:00:00.000000000 +0100 @@ -1,1668 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: RunArray-searching, Next: RunArray-testing, Prev: RunArray-removing, Up: RunArray - -RunArray: searching -------------------- - -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: RunArray-testing, Prev: RunArray-searching, Up: RunArray - -RunArray: testing ------------------ - -= anObject - Answer true if the receiver is equal to anObject - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: ScaledDecimal, Next: Semaphore, Prev: RunArray, Up: Base classes - -ScaledDecimal -============= - -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. - -* Menu: - -* ScaledDecimal class-constants:: (class) -* 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-constants, Next: ScaledDecimal class-instance creation, Up: ScaledDecimal - -ScaledDecimal class: constants ------------------------------- - -initialize - Initialize the receiver's class variables - - - -File: gst-base.info, Node: ScaledDecimal class-instance creation, Next: ScaledDecimal-arithmetic, Prev: ScaledDecimal class-constants, Up: ScaledDecimal - -ScaledDecimal class: instance creation --------------------------------------- - -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. - - - -File: gst-base.info, Node: ScaledDecimal-arithmetic, Next: ScaledDecimal-coercion, Prev: ScaledDecimal class-instance creation, Up: ScaledDecimal - -ScaledDecimal: arithmetic -------------------------- - -* aNumber - Multiply two numbers and answer the result. - -+ aNumber - Sum two numbers and answer the result. - -- aNumber - Subtract aNumber from the receiver and answer the result. - -/ aNumber - Divide two numbers and answer the result. - -// aNumber - Answer the integer quotient after dividing the receiver by aNumber - with truncation towards negative infinity. - -\\ aNumber - Answer the remainder after integer division the receiver by aNumber - with truncation towards negative infinity. - - - -File: gst-base.info, Node: ScaledDecimal-coercion, Next: ScaledDecimal-comparing, Prev: ScaledDecimal-arithmetic, Up: ScaledDecimal - -ScaledDecimal: coercion ------------------------ - -asFloatD - Answer the receiver, converted to a FloatD - -asFloatE - Answer the receiver, converted to a FloatE - -asFloatQ - Answer the receiver, converted to a FloatQ - -asFraction - Answer the receiver, converted to a Fraction - -ceiling - Answer the receiver, converted to an Integer and truncated towards - +infinity. - -coerce: aNumber - Answer aNumber, converted to a ScaledDecimal with the same scale - as the receiver. - -fractionPart - Answer the fractional part of the receiver. - -generality - Return the receiver's generality - -integerPart - Answer the fractional part of the receiver. - -truncated - Answer the receiver, converted to an Integer and truncated towards - -infinity. - - - -File: gst-base.info, Node: ScaledDecimal-comparing, Next: ScaledDecimal-constants, Prev: ScaledDecimal-coercion, Up: ScaledDecimal - -ScaledDecimal: comparing ------------------------- - -< 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. - -> aNumber - Answer whether the receiver is greater than arg. - ->= aNumber - Answer whether the receiver is greater than or equal to arg. - -hash - Answer an hash value for the receiver. - -~= arg - Answer whether the receiver is not equal arg. - - - -File: gst-base.info, Node: ScaledDecimal-constants, Next: ScaledDecimal-printing, Prev: ScaledDecimal-comparing, Up: ScaledDecimal - -ScaledDecimal: constants ------------------------- - -one - Answer the receiver's representation of one. - -zero - Answer the receiver's representation of zero. - - - -File: gst-base.info, Node: ScaledDecimal-printing, Next: ScaledDecimal-storing, Prev: ScaledDecimal-constants, Up: ScaledDecimal - -ScaledDecimal: 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. - - - -File: gst-base.info, Node: ScaledDecimal-storing, Prev: ScaledDecimal-printing, Up: ScaledDecimal - -ScaledDecimal: storing ----------------------- - -storeOn: aStream - Print Smalltalk code that compiles to the receiver on aStream. - - - -File: gst-base.info, Node: Semaphore, Next: SequenceableCollection, Prev: ScaledDecimal, Up: Base classes - -Semaphore -========= - -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. - -* Menu: - -* 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 - -Semaphore 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. - -new - Answer a new semaphore - - - -File: gst-base.info, Node: Semaphore-accessing, Next: Semaphore-builtins, Prev: Semaphore class-instance creation, Up: Semaphore - -Semaphore: accessing --------------------- - -name - Answer a user-friendly name for the receiver - -name: aString - Answer a user-friendly name for the receiver - -waitingProcesses - Answer an Array of processes currently waiting on the receiver. - -wouldBlock - Answer whether waiting on the receiver would suspend the current - process. - - - -File: gst-base.info, Node: Semaphore-builtins, Next: Semaphore-mutual exclusion, Prev: Semaphore-accessing, Up: Semaphore - -Semaphore: builtins -------------------- - -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. - -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. - -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 - -wait - Wait for the receiver to be signalled, suspending the executing - process if it is not yet - - is - -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 - is used together with the receiver: otherwise, if a process sends - one of them 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: Semaphore-mutual exclusion, Next: Semaphore-printing, Prev: Semaphore-builtins, Up: Semaphore - -Semaphore: mutual exclusion ---------------------------- - -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: Semaphore-printing, Prev: Semaphore-mutual exclusion, Up: Semaphore - -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 - -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-copying SequenceableCollections:: (instance) -* SequenceableCollection-enumerating:: (instance) -* SequenceableCollection-replacing items:: (instance) -* SequenceableCollection-testing:: (instance) - - -File: gst-base.info, Node: SequenceableCollection class-instance creation, Next: SequenceableCollection-basic, Up: SequenceableCollection - -SequenceableCollection class: instance creation ------------------------------------------------ - -streamContents: aBlock - Create a ReadWriteStream on an empty instance of the receiver; - pass the stream to aBlock, then retrieve its contents and answer - them. - - - -File: gst-base.info, Node: SequenceableCollection-basic, Next: SequenceableCollection-copying SequenceableCollections, Prev: SequenceableCollection class-instance creation, Up: SequenceableCollection - -SequenceableCollection: basic ------------------------------ - -after: oldObject - Return the element after oldObject. Error if oldObject not found - or if no following object is available - -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: aCollection put: anObject - Put anObject at every index contained in aCollection - -atAllPut: anObject - Put anObject at every index in 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 - -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 - -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 - -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: SequenceableCollection-copying SequenceableCollections, Next: SequenceableCollection-enumerating, Prev: SequenceableCollection-basic, Up: SequenceableCollection - -SequenceableCollection: copying SequenceableCollections -------------------------------------------------------- - -, aSequenceableCollection - Append aSequenceableCollection at the end of the receiver (using - #add:), and answer a new collection - -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. - - - -File: gst-base.info, Node: SequenceableCollection-enumerating, Next: SequenceableCollection-replacing items, Prev: SequenceableCollection-copying SequenceableCollections, Up: SequenceableCollection - -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 - -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. - -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. - -writeStream - Answer a WriteStream streaming on the receiver - - - -File: gst-base.info, Node: SequenceableCollection-replacing items, Next: SequenceableCollection-testing, Prev: SequenceableCollection-enumerating, Up: SequenceableCollection - -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-testing, Prev: SequenceableCollection-replacing items, Up: SequenceableCollection - -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 - - - -File: gst-base.info, Node: Set, Next: SharedQueue, Prev: SequenceableCollection, Up: Base classes - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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-exception handling:: (instance) - - -File: gst-base.info, Node: Signal-accessing, Next: Signal-exception handling, Up: Signal - -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-exception handling, Prev: Signal-accessing, Up: Signal - -Signal: exception handling --------------------------- - -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 anObject 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 - -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 - -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 - -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 - -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 - -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 methods:: (instance) -* SmallInteger-testing functionality:: (instance) - - -File: gst-base.info, Node: SmallInteger class-getting limits, Next: SmallInteger class-testing, Up: SmallInteger - -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 - -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 - -SmallInteger: bit arithmetic ----------------------------- - -highBit - Return the index of the highest order 1 bit of the receiver - - - -File: gst-base.info, Node: SmallInteger-built ins, Next: SmallInteger-builtins, Prev: SmallInteger-bit arithmetic, Up: SmallInteger - -SmallInteger: 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 Integer or Fraction - -// arg - Dividing receiver by arg (with truncation towards -infinity) and - answer the result - -< 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 the same object as arg - -> arg - Answer whether the receiver is greater than arg - ->= arg - Answer whether the receiver is greater than or equal to arg - -\\ arg - Calculate the remainder of dividing receiver by arg (with - truncation towards -infinity) and answer it - -asFloatD - Convert the receiver to a FloatD, answer the result - -asFloatE - Convert the receiver to a FloatE, answer the result - -asFloatQ - Convert the receiver to a FloatQ, answer the result - -asObject - Answer the object whose index is in the receiver, nil if there is - a free object, fail if index is out of bounds - -asObjectNoFail - Answer the object whose index is in the receiver, or nil if no - object is found at that index - -bitAnd: arg - Do a bitwise AND between the receiver and arg, answer the result - -bitOr: arg - Do a bitwise OR between the receiver and arg, answer the result - -bitShift: arg - Shift the receiver by arg places to the left if arg > 0, by arg - places to the right if arg < 0, answer another Number - -bitXor: arg - Do a bitwise XOR between the receiver and arg, answer the result - -nextValidOop - Answer the index of the first non-free OOP after the receiver. - This is used internally; it is placed here to avoid polluting - Object. - -quo: arg - Dividing receiver by arg (with truncation towards zero) and answer - the result - -~= arg - Answer whether the receiver is not equal to arg - -~~ arg - Answer whether the receiver is not the same object as arg - - - -File: gst-base.info, Node: SmallInteger-builtins, Next: SmallInteger-coercion methods, Prev: SmallInteger-built ins, Up: SmallInteger - -SmallInteger: builtins ----------------------- - -at: anIndex - Answer the index-th indexed instance variable of the receiver. - This method always fails. - -at: anIndex put: value - Store value in the index-th indexed instance variable of the - receiver This method always fails. - -basicAt: anIndex - Answer the index-th indexed instance variable of the receiver. - This method always fails. - -basicAt: anIndex put: value - Store value in the index-th indexed instance variable of the - receiver This method always fails. - -scramble - Answer the receiver with its bits mixed and matched. - - - -File: gst-base.info, Node: SmallInteger-coercion methods, Next: SmallInteger-testing functionality, Prev: SmallInteger-builtins, Up: SmallInteger - -SmallInteger: coercion methods ------------------------------- - -generality - Return 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: SmallInteger-testing functionality, Prev: SmallInteger-coercion methods, Up: SmallInteger - -SmallInteger: testing functionality ------------------------------------ - -isSmallInteger - Answer `true'. - - - -File: gst-base.info, Node: SortedCollection, Next: Stream, Prev: SmallInteger, Up: Base classes - -SortedCollection -================ - -Defined in namespace Smalltalk -Superclass: OrderedCollection -Category: Collections-Sequenceable - I am a collection of objects, stored and accessed according to some - sorting criteria. I store things using heap sort and quick sort. - My instances have a comparison block associated with them; this - block takes two arguments and is a predicate which returns true if - the first argument should be sorted earlier than the second. The - default block is [ :a :b | a <= b ], but I will accept any block - that conforms to the above criteria - actually any object which - responds to #value:value:. - -* Menu: - -* SortedCollection class-hacking:: (class) -* SortedCollection class-instance creation:: (class) -* SortedCollection-basic:: (instance) -* SortedCollection-copying:: (instance) -* SortedCollection-disabled:: (instance) -* SortedCollection-enumerating:: (instance) -* SortedCollection-saving and loading:: (instance) -* SortedCollection-searching:: (instance) - - -File: gst-base.info, Node: SortedCollection class-hacking, Next: SortedCollection class-instance creation, Up: SortedCollection - -SortedCollection class: hacking -------------------------------- - -defaultSortBlock - Answer a default sort block for the receiver. - - - -File: gst-base.info, Node: SortedCollection class-instance creation, Next: SortedCollection-basic, Prev: SortedCollection class-hacking, Up: SortedCollection - -SortedCollection class: instance creation ------------------------------------------ - -new - Answer a new collection with a default size and sort block - -new: aSize - Answer a new collection with a default sort block and the given - size - -sortBlock: aSortBlock - Answer a new collection with a default size and the given sort - block - - - -File: gst-base.info, Node: SortedCollection-basic, Next: SortedCollection-copying, Prev: SortedCollection class-instance creation, Up: SortedCollection - -SortedCollection: basic ------------------------ - -last - Answer the last item of the receiver - -removeLast - Remove an object from the end of the receiver. Fail if the receiver - is empty - -sortBlock - Answer the receiver's sort criteria - -sortBlock: aSortBlock - Change the sort criteria for a sorted collection, resort the - elements of the collection, and return it. - - - -File: gst-base.info, Node: SortedCollection-copying, Next: SortedCollection-disabled, Prev: SortedCollection-basic, Up: SortedCollection - -SortedCollection: copying -------------------------- - -copyEmpty: newSize - Answer an empty copy of the receiver, with the same sort block as - the receiver - - - -File: gst-base.info, Node: SortedCollection-disabled, Next: SortedCollection-enumerating, Prev: SortedCollection-copying, Up: SortedCollection - -SortedCollection: disabled --------------------------- - -add: anObject afterIndex: i - This method should not be called for instances of this class. - -addAll: aCollection afterIndex: i - This method should not be called for instances of this class. - -addAllFirst: aCollection - This method should not be called for instances of this class. - -addAllLast: aCollection - This method should not be called for instances of this class. - -addFirst: anObject - This method should not be called for instances of this class. - -addLast: anObject - This method should not be called for instances of this class. - -at: index put: anObject - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: SortedCollection-enumerating, Next: SortedCollection-saving and loading, Prev: SortedCollection-disabled, Up: SortedCollection - -SortedCollection: enumerating ------------------------------ - -beConsistent - Prepare the receiver to be walked through with #do: or another - enumeration method. - - - -File: gst-base.info, Node: SortedCollection-saving and loading, Next: SortedCollection-searching, Prev: SortedCollection-enumerating, Up: SortedCollection - -SortedCollection: saving and loading ------------------------------------- - -postLoad - Restore the default sortBlock if it is nil - -preStore - Store the default sortBlock as nil - - - -File: gst-base.info, Node: SortedCollection-searching, Prev: SortedCollection-saving and loading, Up: SortedCollection - -SortedCollection: searching ---------------------------- - -includes: anObject - Private - Answer whether the receiver includes an item which is - equal to anObject - -indexOf: anObject startingAt: index ifAbsent: aBlock - Answer the first index > anIndex which contains anElement. Invoke - exceptionBlock and answer its result if no item is found - -occurrencesOf: anObject - Answer how many occurrences of anObject can be found in the - receiver - - - -File: gst-base.info, Node: Stream, Next: String, Prev: SortedCollection, Up: Base classes - -Stream -====== - -Defined in namespace Smalltalk -Superclass: Object -Category: Streams - I am an abstract class that provides interruptable sequential - access to objects. I can return successive objects from a source, - or accept successive objects and store them sequentially on a - sink. I provide some simple iteration over the contents of one of - my instances, and provide for writing collections sequentially. - -* Menu: - -* Stream-accessing-reading:: (instance) -* Stream-accessing-writing:: (instance) -* Stream-basic:: (instance) -* Stream-character writing:: (instance) -* Stream-enumerating:: (instance) -* Stream-filing out:: (instance) -* Stream-positioning:: (instance) -* Stream-printing:: (instance) -* Stream-providing consistent protocols:: (instance) -* Stream-storing:: (instance) -* Stream-testing:: (instance) - - -File: gst-base.info, Node: Stream-accessing-reading, Next: Stream-accessing-writing, Up: Stream - -Stream: accessing-reading -------------------------- - -contents - Answer the whole contents of the receiver, from the next object to - the last - -next - Return the next object in the receiver - -next: anInteger - 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 - -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. - -nextMatchFor: anObject - Answer whether the next object is equal to anObject. Even if it - does not, anObject is lost - -splitAt: anObject - Answer an OrderedCollection of parts of the receiver. A new - (possibly empty) part starts at the start of the receiver, or - after every occurrence of an object which is equal to anObject (as - compared by #=). - -upTo: anObject - Returns a collection of the same type that the stream accesses, up - to but not including the object anObject. Returns the entire rest - of the stream's contents if anObject is not present. - -upToAll: aCollection - If there is a sequence of objects remaining in the stream that is - equal to the sequence in aCollection, set the stream position just - past that sequence and answer the elements up to, but not - including, the sequence. Else, set the stream position to its end - and answer all the remaining elements. - -upToEnd - Answer every item in the collection on which the receiver is - streaming, from the next one to the last - - - -File: gst-base.info, Node: Stream-accessing-writing, Next: Stream-basic, Prev: Stream-accessing-reading, Up: Stream - -Stream: accessing-writing -------------------------- - -next: anInteger put: anObject - Write anInteger copies of anObject to the receiver - -next: n putAll: aCollection startingAt: start - Write n objects to the stream, reading them from aCollection and - starting at the start-th item. - -nextPut: anObject - Write anObject to the receiver - -nextPutAll: aCollection - Write all the objects in aCollection to the receiver - - - -File: gst-base.info, Node: Stream-basic, Next: Stream-character writing, Prev: Stream-accessing-writing, Up: Stream - -Stream: basic -------------- - -species - Answer `Array'. - - - -File: gst-base.info, Node: Stream-character writing, Next: Stream-enumerating, Prev: Stream-basic, Up: Stream - -Stream: character writing -------------------------- - -cr - Store a cr on the receiver - -crTab - Store a cr and a tab on the receiver - -nl - Store a new line on the receiver - -nlTab - Store a new line and a tab on the receiver - -space - Store a space on the receiver - -space: n - Store n spaces on the receiver - -tab - Store a tab on the receiver - -tab: n - Store n tabs on the receiver - - - -File: gst-base.info, Node: Stream-enumerating, Next: Stream-filing out, Prev: Stream-character writing, Up: Stream - -Stream: enumerating -------------------- - -do: aBlock - Evaluate aBlock once for every object in the receiver - - - -File: gst-base.info, Node: Stream-filing out, Next: Stream-positioning, Prev: Stream-enumerating, Up: Stream - -Stream: filing out ------------------- - -fileOut: aClass - File out aClass on the receiver. If aClass is not a metaclass, - file out class and instance methods; if aClass is a metaclass, - file out only the class methods - - - -File: gst-base.info, Node: Stream-positioning, Next: Stream-printing, Prev: Stream-filing out, Up: Stream - -Stream: positioning -------------------- - -skip: anInteger - Move the position forwards by anInteger places - -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, - the pointer is atEnd, and false is returned. - -skipToAll: aCollection - If there is a sequence of objects remaining in the stream that is - equal to the sequence in aCollection, set the stream position just - past that sequence and answer true. Else, set the stream position - to its end and answer false. - - - -File: gst-base.info, Node: Stream-printing, Next: Stream-providing consistent protocols, Prev: Stream-positioning, Up: Stream - -Stream: printing ----------------- - -<< anObject - This method is a short-cut for #display:; it prints anObject on the - receiver by sending displayOn: to anObject. This method is provided - so that you can use cascading and obtain better-looking code - -display: anObject - Print anObject on the receiver by sending displayOn: to anObject. - This method is provided so that you can use cascading and obtain - better-looking code - -print: anObject - Print anObject on the receiver by sending printOn: to anObject. - This method is provided so that you can use cascading and obtain - better-looking code - - - -File: gst-base.info, Node: Stream-providing consistent protocols, Next: Stream-storing, Prev: Stream-printing, Up: Stream - -Stream: providing consistent protocols --------------------------------------- - -close - Do nothing. This is provided for consistency with file streams - -flush - Do nothing. This is provided for consistency with file streams - - - -File: gst-base.info, Node: Stream-storing, Next: Stream-testing, Prev: Stream-providing consistent protocols, Up: Stream - -Stream: storing ---------------- - -store: anObject - Print Smalltalk code compiling to anObject on the receiver, by - sending storeOn: to anObject. This method is provided so that you - can use cascading and obtain better-looking code - - - -File: gst-base.info, Node: Stream-testing, Prev: Stream-storing, Up: Stream - -Stream: testing ---------------- - -atEnd - Answer whether the stream has got to an end - -isExternalStream - Answer whether the receiver streams on a file or socket. By - default, answer false. - - - -File: gst-base.info, Node: String, Next: Symbol, Prev: Stream, Up: Base classes - -String -====== - -Defined in namespace Smalltalk -Superclass: CharacterArray -Category: Language-Data types - My instances represent ASCII string data types. Being a very - common case, they are particularly optimized. - -* Menu: - -* String class-basic:: (class) -* String class-instance creation:: (class) -* String-built ins:: (instance) -* String-converting:: (instance) -* String-storing:: (instance) -* String-testing functionality:: (instance) -* String-useful functionality:: (instance) - - -File: gst-base.info, Node: String class-basic, Next: String class-instance creation, Up: String - -String class: basic -------------------- - -, aString - Answer a new instance of an ArrayedCollection containing all the - elements in the receiver, followed by all the elements in - aSequenceableCollection - - - -File: gst-base.info, Node: String class-instance creation, Next: String-built ins, Prev: String class-basic, Up: String - -String class: instance creation -------------------------------- - -fromCData: aCObject size: anInteger - Answer a String containing anInteger bytes starting at the - location pointed to by aCObject - - - -File: gst-base.info, Node: String-built ins, Next: String-converting, Prev: String class-instance creation, Up: String - -String: built ins ------------------ - -asCData: aCType - Convert the receiver to a CObject with the given type - -at: index - Answer the index-th character of the receiver. - -at: index put: value - Change the index-th character of the receiver. - -basicAt: index - Answer the index-th character of the receiver. This method must - not be overridden; override at: instead. String overrides it so - that it looks like it contains character objects even though it - contains bytes - -basicAt: index put: value - Change the index-th character of the receiver. This method must - not be overridden; override at: instead. String overrides it so - that it looks like it contains character objects even though it - contains bytes - -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 - location of aString - -replaceFrom: start to: stop withByteArray: 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 - -similarityTo: aString - Answer a number that denotes the similarity between aString and - the receiver. 0 indicates equality, negative numbers indicate - some difference. Implemented as a primitive for speed. - -size - Answer the size of the receiver - - - -File: gst-base.info, Node: String-converting, Next: String-storing, Prev: String-built ins, Up: String - -String: converting ------------------- - -asByteArray - Return the receiver, converted to a ByteArray of ASCII values - -asString - But I already am a String! Really! - -asSymbol - Returns the symbol corresponding to the receiver - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-12 smalltalk-2.1.7/doc/gst-base.info-12 --- smalltalk-2.1.6/doc/gst-base.info-12 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-12 1970-01-01 01:00:00.000000000 +0100 @@ -1,1712 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: String-storing, Next: String-testing functionality, Prev: String-converting, Up: String - -String: storing ---------------- - -storeOn: aStream - Print Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: String-testing functionality, Next: String-useful functionality, Prev: String-storing, Up: String - -String: testing functionality ------------------------------ - -isString - Answer `true'. - - - -File: gst-base.info, Node: String-useful functionality, Prev: String-testing functionality, Up: String - -String: useful functionality ----------------------------- - -linesDo: aBlock - Send 'aBlock' a substring of the receiver for each newline - delimited line in the receiver - - - -File: gst-base.info, Node: Symbol, Next: SymLink, Prev: String, Up: Base classes - -Symbol -====== - -Defined in namespace Smalltalk -Superclass: String -Category: Language-Implementation - My instances are unique throughout the Smalltalk system. My - instances behave for the most part like strings, except that they - print differently, and I guarantee that any two instances that - have the same printed representation are in fact the same instance. - -* Menu: - -* Symbol class-built ins:: (class) -* Symbol class-instance creation:: (class) -* Symbol class-symbol table:: (class) -* Symbol-basic:: (instance) -* Symbol-built ins:: (instance) -* Symbol-converting:: (instance) -* Symbol-misc:: (instance) -* Symbol-storing:: (instance) -* Symbol-testing:: (instance) -* Symbol-testing functionality:: (instance) - - -File: gst-base.info, Node: Symbol class-built ins, Next: Symbol class-instance creation, Up: Symbol - -Symbol class: built ins ------------------------ - -intern: aString - Private - Same as 'aString asSymbol' - - - -File: gst-base.info, Node: Symbol class-instance creation, Next: Symbol class-symbol table, Prev: Symbol class-built ins, Up: Symbol - -Symbol class: instance creation -------------------------------- - -internCharacter: aCharacter - Answer the one-character symbol associated to the given character. - -new - This method should not be called for instances of this class. - -new: size - This method should not be called for instances of this class. - -with: element1 - Answer a collection whose only element is element1 - -with: element1 with: element2 - Answer a collection whose only elements are the parameters in the - order they were passed - -with: element1 with: element2 with: element3 - Answer a collection whose only elements are the parameters in the - order they were passed - -with: element1 with: element2 with: element3 with: element4 - Answer a collection whose only elements are the parameters in the - order they were passed - -with: element1 with: element2 with: element3 with: element4 with: element5 - Answer a collection whose only elements are the parameters in the - order they were passed - - - -File: gst-base.info, Node: Symbol class-symbol table, Next: Symbol-basic, Prev: Symbol class-instance creation, Up: Symbol - -Symbol class: symbol table --------------------------- - -hasInterned: aString ifTrue: aBlock - If aString has not been interned yet, answer false. Else, pass the - interned version to aBlock and answer true. Note that this works - because String>>#hash calculates the same hash value used by the - VM when interning strings into the SymbolTable. Changing one of - the hashing methods without changing the other will break this - method. - -isSymbolString: aString - Answer whether aString has already been interned. Note that this - works because String>>#hash calculates the same hash value used by - the VM when interning strings into the SymbolTable. Changing one - of the hashing methods without changing the other will break this - method. - - calculates - -rebuildTable - Rebuild the SymbolTable, thereby garbage-collecting unreferenced - Symbols. While this process is done, preemption is disabled - because it is not acceptable to leave the SymbolTable in a - partially updated state. Note that this works because - String>>#hash calculates the same hash value used by the VM when - interning strings into the SymbolTable. Changing one of the - hashing methods without changing the other will break this method. - - - -File: gst-base.info, Node: Symbol-basic, Next: Symbol-built ins, Prev: Symbol class-symbol table, Up: Symbol - -Symbol: basic -------------- - -deepCopy - Returns a deep copy of the receiver. As Symbols are identity - objects, we actually return the receiver itself. - -keywords - Answer an array of keywords that compose the receiver, which is - supposed to be a valid message name (#+, #not, #printOn:, - #ifTrue:ifFalse:, etc.) - -numArgs - Answer the number of arguments supported by the receiver, which is - supposed to be a valid message name (#+, #not, #printOn:, - #ifTrue:ifFalse:, etc.) - -shallowCopy - Returns a deep copy of the receiver. As Symbols are identity - objects, we actually return the receiver itself. - - - -File: gst-base.info, Node: Symbol-built ins, Next: Symbol-converting, Prev: Symbol-basic, Up: Symbol - -Symbol: built ins ------------------ - -= aSymbol - Answer whether the receiver and aSymbol are the same object - -hash - Answer an hash value for the receiver. Symbols are optimized for - speed - - - -File: gst-base.info, Node: Symbol-converting, Next: Symbol-misc, Prev: Symbol-built ins, Up: Symbol - -Symbol: converting ------------------- - -asString - Answer a String with the same characters as the receiver - -asSymbol - But we are already a Symbol, and furthermore, Symbols are identity - objects! So answer the receiver. - - - -File: gst-base.info, Node: Symbol-misc, Next: Symbol-storing, Prev: Symbol-converting, Up: Symbol - -Symbol: misc ------------- - -species - Answer `String'. - - - -File: gst-base.info, Node: Symbol-storing, Next: Symbol-testing, Prev: Symbol-misc, Up: Symbol - -Symbol: storing ---------------- - -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. - -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: Symbol-testing, Next: Symbol-testing functionality, Prev: Symbol-storing, Up: Symbol - -Symbol: testing ---------------- - -isSimpleSymbol - Answer whether the receiver must be represented in quoted-string - (e.g. #'abc-def') form. - - - -File: gst-base.info, Node: Symbol-testing functionality, Prev: Symbol-testing, Up: Symbol - -Symbol: testing functionality ------------------------------ - -isString - Answer `false'. - -isSymbol - Answer `true'. - - - -File: gst-base.info, Node: SymLink, Next: SystemDictionary, Prev: Symbol, Up: Base classes - -SymLink -======= - -Defined in namespace Smalltalk -Superclass: Link -Category: Language-Implementation - I am used to implement the Smalltalk symbol table. My instances - are links that contain symbols, and the symbol table basically a - hash table that points to chains of my instances. - -* Menu: - -* SymLink class-instance creation:: (class) -* SymLink-accessing:: (instance) -* SymLink-iteration:: (instance) -* SymLink-printing:: (instance) - - -File: gst-base.info, Node: SymLink class-instance creation, Next: SymLink-accessing, Up: SymLink - -SymLink class: instance creation --------------------------------- - -symbol: aSymbol nextLink: aSymLink - Answer a new SymLink, which refers to aSymbol and points to - aSymLink as the next SymLink in the chain. - - - -File: gst-base.info, Node: SymLink-accessing, Next: SymLink-iteration, Prev: SymLink class-instance creation, Up: SymLink - -SymLink: accessing ------------------- - -symbol - Answer the Symbol that the receiver refers to in the symbol table. - -symbol: aSymbol - Set the Symbol that the receiver refers to in the symbol table. - - - -File: gst-base.info, Node: SymLink-iteration, Next: SymLink-printing, Prev: SymLink-accessing, Up: SymLink - -SymLink: iteration ------------------- - -do: aBlock - Evaluate aBlock for each symbol in the list - - - -File: gst-base.info, Node: SymLink-printing, Prev: SymLink-iteration, Up: SymLink - -SymLink: printing ------------------ - -printOn: aStream - Print a representation of the receiver on aStream. - - - -File: gst-base.info, Node: SystemDictionary, Next: SystemExceptions.AlreadyDefined, Prev: SymLink, Up: Base classes - -SystemDictionary -================ - -Defined in namespace Smalltalk -Superclass: RootNamespace -Category: Language-Implementation - I am a special namespace. I only have one instance, called - "Smalltalk", which is known to the Smalltalk interpreter. I define - several methods that are "system" related, such as #quitPrimitive. - My instance also helps keep track of dependencies between objects. - -* Menu: - -* SystemDictionary-basic:: (instance) -* SystemDictionary-builtins:: (instance) -* SystemDictionary-C functions:: (instance) -* SystemDictionary-miscellaneous:: (instance) -* SystemDictionary-printing:: (instance) -* SystemDictionary-special accessing:: (instance) - - -File: gst-base.info, Node: SystemDictionary-basic, Next: SystemDictionary-builtins, Up: SystemDictionary - -SystemDictionary: basic ------------------------ - -halt - Interrupt interpreter - -hash - Smalltalk usually contains a reference to itself, avoid infinite - loops - - - -File: gst-base.info, Node: SystemDictionary-builtins, Next: SystemDictionary-C functions, Prev: SystemDictionary-basic, Up: SystemDictionary - -SystemDictionary: builtins --------------------------- - -basicBacktrace - Prints the method invocation stack backtrace, as an aid to - debugging - -byteCodeCounter - Answer the number of bytecodes executed by the VM - -debug - This methods provides a way to break in the VM code. Set a - breakpoint in _gst_debug and call this method near the point where - you think the bug happens. - -declarationTrace - Answer whether compiled bytecodes are printed on stdout - -declarationTrace: aBoolean - Set whether compiled bytecodes are printed on stdout - -executionTrace - Answer whether executed bytecodes are printed on stdout - -executionTrace: aBoolean - Set whether executed bytecodes are printed on stdout - -getTraceFlag: anIndex - Private - Returns a boolean value which is one of the interpreter's - tracing flags - -setTraceFlag: anIndex to: aBoolean - Private - Sets the value of one of the interpreter's tracing flags - (indicated by 'anIndex') to the value aBoolean. - -verboseTrace - Answer whether execution tracing prints the object on the stack top - -verboseTrace: aBoolean - Set whether execution tracing prints the object on the stack top - - - -File: gst-base.info, Node: SystemDictionary-C functions, Next: SystemDictionary-miscellaneous, Prev: SystemDictionary-builtins, Up: SystemDictionary - -SystemDictionary: C functions ------------------------------ - -getArgc - C call-out to getArgc. Do not modify! - -getArgv: index - C call-out to getArgv. Do not modify! - -getenv: aString - C call-out to getenv. Do not modify! - -putenv: aString - C call-out to putenv. Do not modify! - -system: aString - C call-out to system. Do not modify! - - - -File: gst-base.info, Node: SystemDictionary-miscellaneous, Next: SystemDictionary-printing, Prev: SystemDictionary-C functions, Up: SystemDictionary - -SystemDictionary: miscellaneous -------------------------------- - -arguments - Return the command line arguments after the -a switch - -backtrace - Print a backtrace on the Transcript. - - - -File: gst-base.info, Node: SystemDictionary-printing, Next: SystemDictionary-special accessing, Prev: SystemDictionary-miscellaneous, Up: SystemDictionary - -SystemDictionary: printing --------------------------- - -nameIn: aNamespace - Answer `'Smalltalk". - -printOn: aStream in: aNamespace - Store Smalltalk code compiling to the receiver - -storeOn: aStream - Store Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: SystemDictionary-special accessing, Prev: SystemDictionary-printing, Up: SystemDictionary - -SystemDictionary: special accessing ------------------------------------ - -addFeature: aFeature - Add the aFeature feature to the Features set - -hasFeatures: features - Returns true if the feature or features in 'features' is one of the - implementation dependent features present - -removeFeature: aFeature - Remove the aFeature feature to the Features set - -version - Answer the current version of the GNU Smalltalk environment - - - -File: gst-base.info, Node: SystemExceptions.AlreadyDefined, Next: SystemExceptions.ArgumentOutOfRange, Prev: SystemDictionary, Up: Base classes - -SystemExceptions.AlreadyDefined -=============================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidArgument -Category: Language-Exceptions - I am raised when one tries to define a symbol (class or pool - variable) that is already defined. - -* Menu: - -* SystemExceptions.AlreadyDefined-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.AlreadyDefined-accessing, Up: SystemExceptions.AlreadyDefined - -SystemExceptions.AlreadyDefined: accessing ------------------------------------------- - -description - Answer a description for the error - - - -File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange, Next: SystemExceptions.BadReturn, Prev: SystemExceptions.AlreadyDefined, Up: Base classes - -SystemExceptions.ArgumentOutOfRange -=================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidArgument -Category: Language-Exceptions - I am raised when one invokes a method with an argument outside of - its valid range. - -* Menu: - -* SystemExceptions.ArgumentOutOfRange class-signaling:: (class) -* SystemExceptions.ArgumentOutOfRange-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange class-signaling, Next: SystemExceptions.ArgumentOutOfRange-accessing, Up: SystemExceptions.ArgumentOutOfRange - -SystemExceptions.ArgumentOutOfRange class: signaling ----------------------------------------------------- - -signalOn: value mustBeBetween: low and: high - Raise the exception. The given value was not between low and high. - - - -File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange-accessing, Prev: SystemExceptions.ArgumentOutOfRange class-signaling, Up: SystemExceptions.ArgumentOutOfRange - -SystemExceptions.ArgumentOutOfRange: accessing ----------------------------------------------- - -description - Answer a textual description of the exception. - -high - Answer the highest value that was permitted. - -high: aMagnitude - Set the highest value that was permitted. - -low - Answer the lowest value that was permitted. - -low: aMagnitude - Set the lowest value that was permitted. - - - -File: gst-base.info, Node: SystemExceptions.BadReturn, Next: SystemExceptions.CInterfaceError, Prev: SystemExceptions.ArgumentOutOfRange, Up: Base classes - -SystemExceptions.BadReturn -========================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.VMError -Category: Language-Exceptions - I am raised when one tries to return from an already-terminated - method. - -* Menu: - -* SystemExceptions.BadReturn-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.BadReturn-accessing, Up: SystemExceptions.BadReturn - -SystemExceptions.BadReturn: accessing -------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.CInterfaceError, Next: SystemExceptions.EmptyCollection, Prev: SystemExceptions.BadReturn, Up: Base classes - -SystemExceptions.CInterfaceError -================================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.PrimitiveFailed -Category: Language-Exceptions - I am raised when an error happens that is related to the C - interface. - -* Menu: - -* SystemExceptions.CInterfaceError-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.CInterfaceError-accessing, Up: SystemExceptions.CInterfaceError - -SystemExceptions.CInterfaceError: accessing -------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.EmptyCollection, Next: SystemExceptions.EndOfStream, Prev: SystemExceptions.CInterfaceError, Up: Base classes - -SystemExceptions.EmptyCollection -================================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when one invokes a method on an empty collection. - -* Menu: - -* SystemExceptions.EmptyCollection-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.EmptyCollection-accessing, Up: SystemExceptions.EmptyCollection - -SystemExceptions.EmptyCollection: accessing -------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.EndOfStream, Next: SystemExceptions.FileError, Prev: SystemExceptions.EmptyCollection, Up: Base classes - -SystemExceptions.EndOfStream -============================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: Notification -Category: Language-Exceptions - I am raised when a stream reaches its end. - -* Menu: - -* SystemExceptions.EndOfStream class-signaling:: (class) -* SystemExceptions.EndOfStream-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.EndOfStream class-signaling, Next: SystemExceptions.EndOfStream-accessing, Up: SystemExceptions.EndOfStream - -SystemExceptions.EndOfStream class: signaling ---------------------------------------------- - -signalOn: stream - Answer an exception reporting the parameter has reached its end. - - - -File: gst-base.info, Node: SystemExceptions.EndOfStream-accessing, Prev: SystemExceptions.EndOfStream class-signaling, Up: SystemExceptions.EndOfStream - -SystemExceptions.EndOfStream: accessing ---------------------------------------- - -description - Answer a textual description of the exception. - -stream - Answer the stream whose end was reached. - -stream: anObject - Set the stream whose end was reached. - - - -File: gst-base.info, Node: SystemExceptions.FileError, Next: SystemExceptions.IndexOutOfRange, Prev: SystemExceptions.EndOfStream, Up: Base classes - -SystemExceptions.FileError -========================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.PrimitiveFailed -Category: Language-Exceptions - I am raised when an error happens that is related to the file - system. - -* Menu: - -* SystemExceptions.FileError-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.FileError-accessing, Up: SystemExceptions.FileError - -SystemExceptions.FileError: accessing -------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.IndexOutOfRange, Next: SystemExceptions.InvalidArgument, Prev: SystemExceptions.FileError, Up: Base classes - -SystemExceptions.IndexOutOfRange -================================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.ArgumentOutOfRange -Category: Language-Exceptions - I am raised when one invokes am accessor method with an index - outside of its valid range. - -* Menu: - -* SystemExceptions.IndexOutOfRange class-signaling:: (class) -* SystemExceptions.IndexOutOfRange-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.IndexOutOfRange class-signaling, Next: SystemExceptions.IndexOutOfRange-accessing, Up: SystemExceptions.IndexOutOfRange - -SystemExceptions.IndexOutOfRange class: signaling -------------------------------------------------- - -signalOn: aCollection withIndex: value - The given index was out of range in aCollection. - - - -File: gst-base.info, Node: SystemExceptions.IndexOutOfRange-accessing, Prev: SystemExceptions.IndexOutOfRange class-signaling, Up: SystemExceptions.IndexOutOfRange - -SystemExceptions.IndexOutOfRange: accessing -------------------------------------------- - -collection - Answer the collection that triggered the error - -collection: anObject - Set the collection that triggered the error - -description - Answer a textual description of the exception. - -messageText - Answer an exception's message text. - - - -File: gst-base.info, Node: SystemExceptions.InvalidArgument, Next: SystemExceptions.InvalidProcessState, Prev: SystemExceptions.IndexOutOfRange, Up: Base classes - -SystemExceptions.InvalidArgument -================================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when one invokes a method with an invalid argument. - -* Menu: - -* SystemExceptions.InvalidArgument-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.InvalidArgument-accessing, Up: SystemExceptions.InvalidArgument - -SystemExceptions.InvalidArgument: accessing -------------------------------------------- - -messageText - Answer an exception's message text. - - - -File: gst-base.info, Node: SystemExceptions.InvalidProcessState, Next: SystemExceptions.InvalidSize, Prev: SystemExceptions.InvalidArgument, Up: Base classes - -SystemExceptions.InvalidProcessState -==================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am an error raised when trying to resume a terminated process, or - stuff like that. - -* Menu: - -* SystemExceptions.InvalidProcessState-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.InvalidProcessState-accessing, Up: SystemExceptions.InvalidProcessState - -SystemExceptions.InvalidProcessState: accessing ------------------------------------------------ - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.InvalidSize, Next: SystemExceptions.InvalidValue, Prev: SystemExceptions.InvalidProcessState, Up: Base classes - -SystemExceptions.InvalidSize -============================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidArgument -Category: Language-Exceptions - I am raised when an argument has an invalid size. - -* Menu: - -* SystemExceptions.InvalidSize-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.InvalidSize-accessing, Up: SystemExceptions.InvalidSize - -SystemExceptions.InvalidSize: accessing ---------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.InvalidValue, Next: SystemExceptions.MustBeBoolean, Prev: SystemExceptions.InvalidSize, Up: Base classes - -SystemExceptions.InvalidValue -============================= - -Defined in namespace Smalltalk.SystemExceptions -Superclass: Error -Category: Language-Exceptions - I am raised when one invokes a method with an invalid argument. - -* Menu: - -* SystemExceptions.InvalidValue class-signaling:: (class) -* SystemExceptions.InvalidValue-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.InvalidValue class-signaling, Next: SystemExceptions.InvalidValue-accessing, Up: SystemExceptions.InvalidValue - -SystemExceptions.InvalidValue class: signaling ----------------------------------------------- - -signalOn: value - Answer an exception reporting the parameter as invalid. - -signalOn: value reason: reason - Answer an exception reporting `value' as invalid, for the given - reason. - - - -File: gst-base.info, Node: SystemExceptions.InvalidValue-accessing, Prev: SystemExceptions.InvalidValue class-signaling, Up: SystemExceptions.InvalidValue - -SystemExceptions.InvalidValue: accessing ----------------------------------------- - -description - Answer a textual description of the exception. - -messageText - Answer an exception's message text. - -value - Answer the object that was found to be invalid. - -value: anObject - Set the object that was found to be invalid. - - - -File: gst-base.info, Node: SystemExceptions.MustBeBoolean, Next: SystemExceptions.MutationError, Prev: SystemExceptions.InvalidValue, Up: Base classes - -SystemExceptions.MustBeBoolean -============================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when one invokes a boolean method on a non-boolean. - -* Menu: - - -File: gst-base.info, Node: SystemExceptions.MutationError, Next: SystemExceptions.NoRunnableProcess, Prev: SystemExceptions.MustBeBoolean, Up: Base classes - -SystemExceptions.MutationError -============================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: Error -Category: Language-Exceptions - I am an error raised when a class is mutated in an invalid way. - -* Menu: - -* SystemExceptions.MutationError-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.MutationError-accessing, Up: SystemExceptions.MutationError - -SystemExceptions.MutationError: accessing ------------------------------------------ - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.NoRunnableProcess, Next: SystemExceptions.NotFound, Prev: SystemExceptions.MutationError, Up: Base classes - -SystemExceptions.NoRunnableProcess -================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.VMError -Category: Language-Exceptions - I am raised when no runnable process can be found in the image. - -* Menu: - -* SystemExceptions.NoRunnableProcess-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.NoRunnableProcess-accessing, Up: SystemExceptions.NoRunnableProcess - -SystemExceptions.NoRunnableProcess: accessing ---------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.NotFound, Next: SystemExceptions.NotImplemented, Prev: SystemExceptions.NoRunnableProcess, Up: Base classes - -SystemExceptions.NotFound -========================= - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidArgument -Category: Language-Exceptions - I am raised when something is searched without success. - -* Menu: - -* SystemExceptions.NotFound class-accessing:: (class) -* SystemExceptions.NotFound-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.NotFound class-accessing, Next: SystemExceptions.NotFound-accessing, Up: SystemExceptions.NotFound - -SystemExceptions.NotFound class: accessing ------------------------------------------- - -signalOn: value what: aString - Raise an exception; aString specifies what was not found (a key, - an object, a class, and so on). - - - -File: gst-base.info, Node: SystemExceptions.NotFound-accessing, Prev: SystemExceptions.NotFound class-accessing, Up: SystemExceptions.NotFound - -SystemExceptions.NotFound: accessing ------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.NotImplemented, Next: SystemExceptions.NotIndexable, Prev: SystemExceptions.NotFound, Up: Base classes - -SystemExceptions.NotImplemented -=============================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: Error -Category: Language-Exceptions - I am raised when a method is called that has not been implemented. - -* Menu: - -* SystemExceptions.NotImplemented-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.NotImplemented-accessing, Up: SystemExceptions.NotImplemented - -SystemExceptions.NotImplemented: accessing ------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.NotIndexable, Next: SystemExceptions.NotYetImplemented, Prev: SystemExceptions.NotImplemented, Up: Base classes - -SystemExceptions.NotIndexable -============================= - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when an object is not indexable. - -* Menu: - -* SystemExceptions.NotIndexable-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.NotIndexable-accessing, Up: SystemExceptions.NotIndexable - -SystemExceptions.NotIndexable: accessing ----------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.NotYetImplemented, Next: SystemExceptions.PrimitiveFailed, Prev: SystemExceptions.NotIndexable, Up: Base classes - -SystemExceptions.NotYetImplemented -================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.NotImplemented -Category: Language-Exceptions - I am raised when a method is called that has not been implemented - yet. - -* Menu: - -* SystemExceptions.NotYetImplemented-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.NotYetImplemented-accessing, Up: SystemExceptions.NotYetImplemented - -SystemExceptions.NotYetImplemented: accessing ---------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.PrimitiveFailed, Next: SystemExceptions.ProcessBeingTerminated, Prev: SystemExceptions.NotYetImplemented, Up: Base classes - -SystemExceptions.PrimitiveFailed -================================ - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.VMError -Category: Language-Exceptions - I am raised when a primitive fails for some reason. - -* Menu: - -* SystemExceptions.PrimitiveFailed-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.PrimitiveFailed-accessing, Up: SystemExceptions.PrimitiveFailed - -SystemExceptions.PrimitiveFailed: accessing -------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.ProcessBeingTerminated, Next: SystemExceptions.ProcessTerminated, Prev: SystemExceptions.PrimitiveFailed, Up: Base classes - -SystemExceptions.ProcessBeingTerminated -======================================= - -Defined in namespace Smalltalk.SystemExceptions -Superclass: Notification -Category: Language-Exceptions - -* Menu: - -* SystemExceptions.ProcessBeingTerminated-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.ProcessBeingTerminated-accessing, Up: SystemExceptions.ProcessBeingTerminated - -SystemExceptions.ProcessBeingTerminated: accessing --------------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.ProcessTerminated, Next: SystemExceptions.ReadOnlyObject, Prev: SystemExceptions.ProcessBeingTerminated, Up: Base classes - -SystemExceptions.ProcessTerminated -================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when somebody tries to resume or interrupt a - terminated process. - -* Menu: - -* SystemExceptions.ProcessTerminated-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.ProcessTerminated-accessing, Up: SystemExceptions.ProcessTerminated - -SystemExceptions.ProcessTerminated: accessing ---------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.ReadOnlyObject, Next: SystemExceptions.ShouldNotImplement, Prev: SystemExceptions.ProcessTerminated, Up: Base classes - -SystemExceptions.ReadOnlyObject -=============================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when one writes to a read-only object. - -* Menu: - -* SystemExceptions.ReadOnlyObject-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.ReadOnlyObject-accessing, Up: SystemExceptions.ReadOnlyObject - -SystemExceptions.ReadOnlyObject: accessing ------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.ShouldNotImplement, Next: SystemExceptions.SubclassResponsibility, Prev: SystemExceptions.ReadOnlyObject, Up: Base classes - -SystemExceptions.ShouldNotImplement -=================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.NotImplemented -Category: Language-Exceptions - I am raised when a method is called that a class wishes that is not - called. - -* Menu: - -* SystemExceptions.ShouldNotImplement-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.ShouldNotImplement-accessing, Up: SystemExceptions.ShouldNotImplement - -SystemExceptions.ShouldNotImplement: accessing ----------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.SubclassResponsibility, Next: SystemExceptions.UserInterrupt, Prev: SystemExceptions.ShouldNotImplement, Up: Base classes - -SystemExceptions.SubclassResponsibility -======================================= - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.ShouldNotImplement -Category: Language-Exceptions - I am raised when a method is called whose implementation is the - responsibility of concrete subclass. - -* Menu: - -* SystemExceptions.SubclassResponsibility-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.SubclassResponsibility-accessing, Up: SystemExceptions.SubclassResponsibility - -SystemExceptions.SubclassResponsibility: accessing --------------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.UserInterrupt, Next: SystemExceptions.VMError, Prev: SystemExceptions.SubclassResponsibility, Up: Base classes - -SystemExceptions.UserInterrupt -============================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.VMError -Category: Language-Exceptions - I am raised when one presses Ctrl-C. - -* Menu: - -* SystemExceptions.UserInterrupt-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.UserInterrupt-accessing, Up: SystemExceptions.UserInterrupt - -SystemExceptions.UserInterrupt: accessing ------------------------------------------ - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.VMError, Next: SystemExceptions.WrongArgumentCount, Prev: SystemExceptions.UserInterrupt, Up: Base classes - -SystemExceptions.VMError -======================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: Error -Category: Language-Exceptions - I am an error related to the innards of the system. - -* Menu: - -* SystemExceptions.VMError-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.VMError-accessing, Up: SystemExceptions.VMError - -SystemExceptions.VMError: accessing ------------------------------------ - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.WrongArgumentCount, Next: SystemExceptions.WrongClass, Prev: SystemExceptions.VMError, Up: Base classes - -SystemExceptions.WrongArgumentCount -=================================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.PrimitiveFailed -Category: Language-Exceptions - I am raised when one tries to evaluate a method (via #perform:...) - or a block but passes the wrong number of arguments. - -* Menu: - -* SystemExceptions.WrongArgumentCount-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.WrongArgumentCount-accessing, Up: SystemExceptions.WrongArgumentCount - -SystemExceptions.WrongArgumentCount: accessing ----------------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: SystemExceptions.WrongClass, Next: SystemExceptions.WrongMessageSent, Prev: SystemExceptions.WrongArgumentCount, Up: Base classes - -SystemExceptions.WrongClass -=========================== - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.InvalidValue -Category: Language-Exceptions - I am raised when an argument is constrained to be an instance of a - determinate class, and this constraint is not respected by the - caller. - -* Menu: - -* SystemExceptions.WrongClass class-signaling:: (class) -* SystemExceptions.WrongClass-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.WrongClass class-signaling, Next: SystemExceptions.WrongClass-accessing, Up: SystemExceptions.WrongClass - -SystemExceptions.WrongClass class: signaling --------------------------------------------- - -signalOn: anObject mustBe: aClassOrArray - Raise an exception. The given object should have been an instance - of one of the classes indicated by aClassOrArray (which should be - a single class or an array of classes). Whether instances of - subclasses are allowed should be clear from the context, though in - general (i.e. with the exception of a few system messages) they - should be. - - - -File: gst-base.info, Node: SystemExceptions.WrongClass-accessing, Prev: SystemExceptions.WrongClass class-signaling, Up: SystemExceptions.WrongClass - -SystemExceptions.WrongClass: accessing --------------------------------------- - -description - Answer a textual description of the exception. - -messageText - Answer an exception's message text. - -validClasses - Answer the list of classes whose instances would have been valid. - -validClasses: aCollection - Set the list of classes whose instances would have been valid. - -validClassesString - Answer the list of classes whose instances would have been valid, - formatted as a string. - - - -File: gst-base.info, Node: SystemExceptions.WrongMessageSent, Next: TextCollector, Prev: SystemExceptions.WrongClass, Up: Base classes - -SystemExceptions.WrongMessageSent -================================= - -Defined in namespace Smalltalk.SystemExceptions -Superclass: SystemExceptions.ShouldNotImplement -Category: Language-Exceptions - I am raised when a method is called that a class wishes that is not - called. This exception also includes a suggestion on which message - should be sent instead - -* Menu: - -* SystemExceptions.WrongMessageSent class-signaling:: (class) -* SystemExceptions.WrongMessageSent-accessing:: (instance) - - -File: gst-base.info, Node: SystemExceptions.WrongMessageSent class-signaling, Next: SystemExceptions.WrongMessageSent-accessing, Up: SystemExceptions.WrongMessageSent - -SystemExceptions.WrongMessageSent class: signaling --------------------------------------------------- - -signalOn: selector useInstead: aSymbol - Raise an exception, signaling which selector was sent and - suggesting a valid alternative. - - - -File: gst-base.info, Node: SystemExceptions.WrongMessageSent-accessing, Prev: SystemExceptions.WrongMessageSent class-signaling, Up: SystemExceptions.WrongMessageSent - -SystemExceptions.WrongMessageSent: accessing --------------------------------------------- - -messageText - Answer an exception's message text. - -selector - Answer which selector was sent. - -selector: aSymbol - Set which selector was sent. - -suggestedSelector - Answer a valid alternative to the selector that was used. - -suggestedSelector: aSymbol - Set a valid alternative to the selector that was used. - - - -File: gst-base.info, Node: TextCollector, Next: Time, Prev: SystemExceptions.WrongMessageSent, Up: Base classes - -TextCollector -============= - -Defined in namespace Smalltalk -Superclass: Stream -Category: Streams - I am a thread-safe class that maps between standard Stream - protocol and a single message to another object (its selector is - pluggable and should roughly correspond to #nextPutAll:). I am, - in fact, the class that implements the global Transcript object. - -* Menu: - -* TextCollector class-accessing:: (class) -* TextCollector-accessing:: (instance) -* TextCollector-printing:: (instance) -* TextCollector-set up:: (instance) -* TextCollector-storing:: (instance) - - -File: gst-base.info, Node: TextCollector class-accessing, Next: TextCollector-accessing, Up: TextCollector - -TextCollector class: accessing ------------------------------- - -message: receiverToSelectorAssociation - Answer a new instance of the receiver, that uses the message - identified by anAssociation to perform write operations. - anAssociation's key is the receiver, while its value is the - selector. - -new - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: TextCollector-accessing, Next: TextCollector-printing, Prev: TextCollector class-accessing, Up: TextCollector - -TextCollector: accessing ------------------------- - -cr - Emit a new-line (carriage return) to the Transcript - -endEntry - Emit two new-lines. This method is present for compatibility with - VisualWorks. - -next: anInteger put: anObject - Write anInteger copies of anObject to the Transcript - -nextPut: aCharacter - Emit aCharacter to the Transcript - -nextPutAll: aString - Write aString to the Transcript - -show: aString - Write aString to the Transcript - -showCr: aString - Write aString to the Transcript, followed by a new-line character - -showOnNewLine: aString - Write aString to the Transcript, preceded by a new-line character - - - -File: gst-base.info, Node: TextCollector-printing, Next: TextCollector-set up, Prev: TextCollector-accessing, Up: TextCollector - -TextCollector: printing ------------------------ - -print: anObject - Print anObject's representation to the Transcript - -printOn: aStream - Print a representation of the receiver onto aStream - - - -File: gst-base.info, Node: TextCollector-set up, Next: TextCollector-storing, Prev: TextCollector-printing, Up: TextCollector - -TextCollector: set up ---------------------- - -message - Answer an association representing the message to be sent to - perform write operations. The key is the receiver, the value is - the selector - -message: receiverToSelectorAssociation - Set the message to be sent to perform write operations to the one - represented by anAssociation. anAssociation's key is the - receiver, while its value is the selector - - - -File: gst-base.info, Node: TextCollector-storing, Prev: TextCollector-set up, Up: TextCollector - -TextCollector: storing ----------------------- - -store: anObject - Print Smalltalk code which evaluates to anObject on the Transcript - -storeOn: aStream - Print Smalltalk code which evaluates to the receiver onto aStream - - - -File: gst-base.info, Node: Time, Next: TokenStream, Prev: TextCollector, Up: Base classes - -Time -==== - -Defined in namespace Smalltalk -Superclass: Magnitude -Category: Language-Data types - My instances represent times of the day. I provide methods for - instance creation, methods that access components (hours, minutes, - and seconds) of a time value, and a block execution timing - facility. - -* Menu: - -* Time class-basic (UTC):: (class) -* Time class-builtins:: (class) -* Time class-clocks:: (class) -* Time class-initialization:: (class) -* Time class-instance creation:: (class) -* Time-accessing (ANSI for DateAndTimes):: (instance) -* Time-accessing (non ANSI & for Durations):: (instance) -* Time-arithmetic:: (instance) -* Time-comparing:: (instance) - - -File: gst-base.info, Node: Time class-basic (UTC), Next: Time class-builtins, Up: Time - -Time class: basic (UTC) ------------------------ - -utcNow - Answer a time representing the current time of day in Coordinated - Universal Time (UTC) - -utcSecondClock - Answer the number of seconds since the midnight of 1/1/1901 (unlike - #secondClock, the reference time is here expressed as UTC, that is - as Coordinated Universal Time). - - - -File: gst-base.info, Node: Time class-builtins, Next: Time class-clocks, Prev: Time class-basic (UTC), Up: Time - -Time class: builtins --------------------- - -primMillisecondClock - Returns the number of milliseconds since midnight. - -primSecondClock - Returns the number of seconds to/from 1/1/2000. - -timezone - Answer a String associated with the current timezone (either - standard or daylight-saving) on this operating system. For - example, the answer could be `EST' to indicate Eastern Standard - Time; the answer can be empty and can't be assumed to be a - three-character code such as `EST'. - -timezoneBias - Specifies the current bias, in minutes, for local time translation - for the current time. The bias is the difference, in seconds, - between Coordinated Universal Time (UTC) and local time; a - positive bias indicates that the local timezone is to the east of - Greenwich (e.g. Europe, Asia), while a negative bias indicates - that it is to the west (e.g. America) - - - -File: gst-base.info, Node: Time class-clocks, Next: Time class-initialization, Prev: Time class-builtins, Up: Time - -Time class: clocks ------------------- - -millisecondClock - Answer the number of milliseconds since startup. - -millisecondClockValue - Answer the number of milliseconds since startup - -millisecondsPerDay - Answer the number of milliseconds in a day - -millisecondsToRun: timedBlock - Answer the number of milliseconds which timedBlock took to run - -secondClock - Answer the number of seconds since the midnight of 1/1/1901 - - - -File: gst-base.info, Node: Time class-initialization, Next: Time class-instance creation, Prev: Time class-clocks, Up: Time - -Time class: initialization --------------------------- - -initialize - Initialize the Time class after the image has been bootstrapped - -update: aspect - Private - Initialize the receiver's instance variables - - - -File: gst-base.info, Node: Time class-instance creation, Next: Time-accessing (ANSI for DateAndTimes), Prev: Time class-initialization, Up: Time - -Time class: instance creation ------------------------------ - -fromSeconds: secondCount - Answer a Time representing secondCount seconds past midnight - -hours: h - Answer a Time that is the given number of hours past midnight - -hours: h minutes: m seconds: s - Answer a Time that is the given number of hours, minutes and - seconds past midnight - -minutes: m - Answer a Time that is the given number of minutes past midnight - -new - Answer a Time representing midnight - -now - Answer a time representing the current time of day - -readFrom: aStream - Parse an instance of the receiver (hours/minutes/seconds) from - aStream - -seconds: s - Answer a Time that is the given number of seconds past midnight - - - -File: gst-base.info, Node: Time-accessing (ANSI for DateAndTimes), Next: Time-accessing (non ANSI & for Durations), Prev: Time class-instance creation, Up: Time - -Time: accessing (ANSI for DateAndTimes) ---------------------------------------- - -hour - Answer the number of hours in the receiver - -hour12 - Answer the hour in a 12-hour clock - -hour24 - Answer the hour in a 24-hour clock - -minute - Answer the number of minutes in the receiver - -second - Answer the number of seconds in the receiver - - - -File: gst-base.info, Node: Time-accessing (non ANSI & for Durations), Next: Time-arithmetic, Prev: Time-accessing (ANSI for DateAndTimes), Up: Time - -Time: accessing (non ANSI & for Durations) ------------------------------------------- - -asSeconds - Answer `seconds'. - -hours - Answer the number of hours in the receiver - -minutes - Answer the number of minutes in the receiver - -seconds - Answer the number of seconds in the receiver - - - -File: gst-base.info, Node: Time-arithmetic, Next: Time-comparing, Prev: Time-accessing (non ANSI & for Durations), Up: Time - -Time: arithmetic ----------------- - -addTime: timeAmount - Answer a new Time that is timeAmount seconds after the receiver - -printOn: aStream - Print a representation of the receiver on aStream - -subtractTime: timeAmount - Answer a new Time that is timeAmount seconds before the receiver - - - -File: gst-base.info, Node: Time-comparing, Prev: Time-arithmetic, Up: Time - -Time: comparing ---------------- - -< aTime - Answer whether the receiver is less than aTime - -= aTime - Answer whether the receiver is equal to aTime - -hash - Answer an hash value for the receiver - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-13 smalltalk-2.1.7/doc/gst-base.info-13 --- smalltalk-2.1.6/doc/gst-base.info-13 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-13 1970-01-01 01:00:00.000000000 +0100 @@ -1,1561 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: TokenStream, Next: TrappableEvent, Prev: Time, Up: Base classes - -TokenStream -=========== - -Defined in namespace Smalltalk -Superclass: Stream -Category: Streams-Collections - I am not a typical part of the Smalltalk kernel class hierarchy. - I operate on a stream of characters and return distinct - whitespace-delimited groups of characters; I am used to parse the - parameters of class-creation methods. - - Basically, I parse off whitespace separated tokens as substrings - and return them (next). If the entire contents of the string are - requested, I return them as an Array containing the individual - strings. - -* Menu: - -* TokenStream class-instance creation:: (class) -* TokenStream-basic:: (instance) -* TokenStream-write methods:: (instance) - - -File: gst-base.info, Node: TokenStream class-instance creation, Next: TokenStream-basic, Up: TokenStream - -TokenStream class: instance creation ------------------------------------- - -on: aString - Answer a TokenStream working on aString - -onStream: aStream - Answer a TokenStream working on the collection on which aStream is - in turn streaming. - - - -File: gst-base.info, Node: TokenStream-basic, Next: TokenStream-write methods, Prev: TokenStream class-instance creation, Up: TokenStream - -TokenStream: basic ------------------- - -atEnd - Answer whether the input stream has no more tokens. - -next - Answer a new whitespace-separated token from the input stream - - - -File: gst-base.info, Node: TokenStream-write methods, Prev: TokenStream-basic, Up: TokenStream - -TokenStream: write methods --------------------------- - -nextPut: anObject - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: TrappableEvent, Next: True, Prev: TokenStream, Up: Base classes - -TrappableEvent -============== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Exceptions - I am an abstract class for arguments passed to #on:do:... methods - in BlockClosure. I define a bunch of methods that apply to - CoreExceptions and ExceptionSets: they allow you to create - ExceptionSets and examine all the exceptions to be trapped. - -* Menu: - -* TrappableEvent-enumerating:: (instance) -* TrappableEvent-instance creation:: (instance) - - -File: gst-base.info, Node: TrappableEvent-enumerating, Next: TrappableEvent-instance creation, Up: TrappableEvent - -TrappableEvent: enumerating ---------------------------- - -allExceptionsDo: aBlock - Execute aBlock, passing it an Exception for every exception in the - receiver. - -goodness: exception - Answer how good the receiver is at handling the given exception. A - negative value indicates that the receiver is not able to handle - the exception. - -handles: exception - Answer whether the receiver handles `exception'. - - - -File: gst-base.info, Node: TrappableEvent-instance creation, Prev: TrappableEvent-enumerating, Up: TrappableEvent - -TrappableEvent: instance creation ---------------------------------- - -, aTrappableEvent - Answer an ExceptionSet containing all the exceptions in the - receiver and all the exceptions in aTrappableEvent - - - -File: gst-base.info, Node: True, Next: UndefinedObject, Prev: TrappableEvent, Up: Base classes - -True -==== - -Defined in namespace Smalltalk -Superclass: Boolean -Category: Language-Data types - I represent truth and justice in the world. My motto is "semper - veritatis". - -* Menu: - -* True-basic:: (instance) -* True-C hacks:: (instance) -* True-printing:: (instance) - - -File: gst-base.info, Node: True-basic, Next: True-C hacks, Up: True - -True: basic ------------ - -& aBoolean - We are true - anded with anything, we always answer the other - operand - -and: aBlock - We are true - anded with anything, we always answer the other - operand, so evaluate aBlock - -eqv: aBoolean - Answer whether the receiver and aBoolean represent the same - boolean value - -ifFalse: falseBlock - We are true - answer nil - -ifFalse: falseBlock ifTrue: trueBlock - We are true - evaluate trueBlock - -ifTrue: trueBlock - We are true - evaluate trueBlock - -ifTrue: trueBlock ifFalse: falseBlock - We are true - evaluate trueBlock - -not - We are true - answer false - -or: aBlock - We are true - ored with anything, we always answer true - -xor: aBoolean - Answer whether the receiver and aBoolean represent different - boolean values - -| aBoolean - We are true - ored with anything, we always answer true - - - -File: gst-base.info, Node: True-C hacks, Next: True-printing, Prev: True-basic, Up: True - -True: C hacks -------------- - -asCBooleanValue - Answer `1'. - - - -File: gst-base.info, Node: True-printing, Prev: True-C hacks, Up: True - -True: printing --------------- - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-base.info, Node: UndefinedObject, Next: ValueAdaptor, Prev: True, Up: Base classes - -UndefinedObject -=============== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - I have the questionable distinction of being a class with only one - instance, which is the object "nil". - -* Menu: - -* UndefinedObject-basic:: (instance) -* UndefinedObject-class creation:: (instance) -* UndefinedObject-class creation - alternative:: (instance) -* UndefinedObject-CObject interoperability:: (instance) -* UndefinedObject-dependents access:: (instance) -* UndefinedObject-printing:: (instance) -* UndefinedObject-storing:: (instance) -* UndefinedObject-testing:: (instance) - - -File: gst-base.info, Node: UndefinedObject-basic, Next: UndefinedObject-class creation, Up: UndefinedObject - -UndefinedObject: basic ----------------------- - -copy - Answer the receiver. - -deepCopy - Answer the receiver. - -shallowCopy - Answer the receiver. - - - -File: gst-base.info, Node: UndefinedObject-class creation, Next: UndefinedObject-class creation - alternative, Prev: UndefinedObject-basic, Up: UndefinedObject - -UndefinedObject: class creation -------------------------------- - -metaclassFor: classNameString - Create a Metaclass object for the given class name. The metaclass - is a subclass of Class - -removeSubclass: aClass - Ignored - necessary to support disjoint class hierarchies - -subclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a fixed subclass of the - receiver with the given name, instance variables, class variables, - pool dictionaries and category. If the class is already defined, - if necessary, recompile everything needed. - -variableByteSubclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a byte variable subclass of - the receiver with the given name, instance variables, class - variables, pool dictionaries and category. If the class is already - defined, if necessary, recompile everything needed. - -variableSubclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a variable pointer subclass of - the receiver with the given name, instance variables, class - variables, pool dictionaries and category. If the class is already - defined, if necessary, recompile everything needed. - -variableWordSubclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a word variable subclass of - the receiver with the given name, instance variables, class - variables, pool dictionaries and category. If the class is already - defined, if necessary, recompile everything needed. - - - -File: gst-base.info, Node: UndefinedObject-class creation - alternative, Next: UndefinedObject-CObject interoperability, Prev: UndefinedObject-class creation, Up: UndefinedObject - -UndefinedObject: class creation - alternative ---------------------------------------------- - -subclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -variableByteSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -variableByteSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -variableSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -variableSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -variableWordSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - -variableWordSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk - - - -File: gst-base.info, Node: UndefinedObject-CObject interoperability, Next: UndefinedObject-dependents access, Prev: UndefinedObject-class creation - alternative, Up: UndefinedObject - -UndefinedObject: CObject interoperability ------------------------------------------ - -free - Do nothing, a NULL pointer can be safely freed. - - - -File: gst-base.info, Node: UndefinedObject-dependents access, Next: UndefinedObject-printing, Prev: UndefinedObject-CObject interoperability, Up: UndefinedObject - -UndefinedObject: dependents access ----------------------------------- - -addDependent: ignored - Fail, nil does not support dependents. - -release - Ignore this call, nil does not support dependents. - - - -File: gst-base.info, Node: UndefinedObject-printing, Next: UndefinedObject-storing, Prev: UndefinedObject-dependents access, Up: UndefinedObject - -UndefinedObject: printing -------------------------- - -printOn: aStream - Print a representation of the receiver on aStream. - - - -File: gst-base.info, Node: UndefinedObject-storing, Next: UndefinedObject-testing, Prev: UndefinedObject-printing, Up: UndefinedObject - -UndefinedObject: storing ------------------------- - -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream. - - - -File: gst-base.info, Node: UndefinedObject-testing, Prev: UndefinedObject-storing, Up: UndefinedObject - -UndefinedObject: testing ------------------------- - -ifNil: nilBlock - Evaluate nilBlock if the receiver is nil, else answer nil - -ifNil: nilBlock ifNotNil: notNilBlock - Evaluate nilBlock if the receiver is nil, else evaluate - notNilBlock, passing the receiver. - -ifNotNil: notNilBlock - Evaluate notNilBlock if the receiver is not nil, passing the - receiver. Else answer nil - -ifNotNil: notNilBlock ifNil: nilBlock - Evaluate nilBlock if the receiver is nil, else evaluate - notNilBlock, passing the receiver. - -isNil - Answer whether the receiver is the undefined object nil. Always - answer true. - -notNil - Answer whether the receiver is not the undefined object nil. Always - answer false. - - - -File: gst-base.info, Node: ValueAdaptor, Next: ValueHolder, Prev: UndefinedObject, Up: Base classes - -ValueAdaptor -============ - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Data types - My subclasses are used to access data from different objects with - a consistent protocol. However, I'm an abstract class. - -* Menu: - -* ValueAdaptor class-creating instances:: (class) -* ValueAdaptor-accessing:: (instance) -* ValueAdaptor-printing:: (instance) - - -File: gst-base.info, Node: ValueAdaptor class-creating instances, Next: ValueAdaptor-accessing, Up: ValueAdaptor - -ValueAdaptor class: creating instances --------------------------------------- - -new - We don't know enough of subclasses to have a shared implementation - of new - - - -File: gst-base.info, Node: ValueAdaptor-accessing, Next: ValueAdaptor-printing, Prev: ValueAdaptor class-creating instances, Up: ValueAdaptor - -ValueAdaptor: accessing ------------------------ - -value - Retrive the value of the receiver. Must be implemented by - ValueAdaptor's subclasses - -value: anObject - Set the value of the receiver. Must be implemented by - ValueAdaptor's subclasses - - - -File: gst-base.info, Node: ValueAdaptor-printing, Prev: ValueAdaptor-accessing, Up: ValueAdaptor - -ValueAdaptor: printing ----------------------- - -printOn: aStream - Print a representation of the receiver - - - -File: gst-base.info, Node: ValueHolder, Next: VariableBinding, Prev: ValueAdaptor, Up: Base classes - -ValueHolder -=========== - -Defined in namespace Smalltalk -Superclass: ValueAdaptor -Category: Language-Data types - I store my value in a variable. For example, you can use me to - pass num- bers by reference. Just instance me before calling a - method and ask for my value after that method. There are a lot of - other creative uses for my intances, though. - -* Menu: - -* ValueHolder class-creating instances:: (class) -* ValueHolder-accessing:: (instance) -* ValueHolder-initializing:: (instance) - - -File: gst-base.info, Node: ValueHolder class-creating instances, Next: ValueHolder-accessing, Up: ValueHolder - -ValueHolder class: creating instances -------------------------------------- - -new - Create a ValueHolder whose starting value is nil - -null - Answer the sole instance of NullValueHolder - -with: anObject - Create a ValueHolder whose starting value is anObject - - - -File: gst-base.info, Node: ValueHolder-accessing, Next: ValueHolder-initializing, Prev: ValueHolder class-creating instances, Up: ValueHolder - -ValueHolder: accessing ----------------------- - -value - Get the value of the receiver. - -value: anObject - Set the value of the receiver. - - - -File: gst-base.info, Node: ValueHolder-initializing, Prev: ValueHolder-accessing, Up: ValueHolder - -ValueHolder: initializing -------------------------- - -initialize - Private - set the initial value of the receiver - - - -File: gst-base.info, Node: VariableBinding, Next: VersionableObjectProxy, Prev: ValueHolder, Up: Base classes - -VariableBinding -=============== - -Defined in namespace Smalltalk -Superclass: HomedAssociation -Category: Language-Data types - My instances represent a mapping between a key in a namespace and - its value. I print different than a normal Association, and know - about my parent namespace, otherwise my behavior is the same. - -* Menu: - -* VariableBinding-printing:: (instance) -* VariableBinding-saving and loading:: (instance) -* VariableBinding-storing:: (instance) -* VariableBinding-testing:: (instance) - - -File: gst-base.info, Node: VariableBinding-printing, Next: VariableBinding-saving and loading, Up: VariableBinding - -VariableBinding: printing -------------------------- - -path - Print a dotted path that compiles to the receiver's value - -printOn: aStream - Put on aStream a representation of the receiver - - - -File: gst-base.info, Node: VariableBinding-saving and loading, Next: VariableBinding-storing, Prev: VariableBinding-printing, Up: VariableBinding - -VariableBinding: saving and loading ------------------------------------ - - to - -binaryRepresentationObject - This method is implemented to allow for a PluggableProxy to be used - with VariableBindings. Answer a DirectedMessage which sends #at: - to the environment that holds the receiver. - - - -File: gst-base.info, Node: VariableBinding-storing, Next: VariableBinding-testing, Prev: VariableBinding-saving and loading, Up: VariableBinding - -VariableBinding: storing ------------------------- - -storeOn: aStream - Put on aStream some Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: VariableBinding-testing, Prev: VariableBinding-storing, Up: VariableBinding - -VariableBinding: testing ------------------------- - -isDefined - Answer true if this VariableBinding lives outside the Undeclared - dictionary - - - -File: gst-base.info, Node: VersionableObjectProxy, Next: VFS.ArchiveFileHandler, Prev: VariableBinding, Up: Base classes - -VersionableObjectProxy -====================== - -Defined in namespace Smalltalk -Superclass: NullProxy -Category: Streams-Files - I am a proxy that stores additional information to allow different - versions of an object's representations to be handled by the - program. VersionableObjectProxies are backwards compatible, that - is you can support versioning even if you did not use a - VersionableObjectProxy for that class when the object was - originarily dumped. VersionableObjectProxy does not support - classes that changed shape across different versions. See the - method comments for more information. - -* Menu: - -* VersionableObjectProxy class-saving and restoring:: (class) -* VersionableObjectProxy-saving and restoring:: (instance) - - -File: gst-base.info, Node: VersionableObjectProxy class-saving and restoring, Next: VersionableObjectProxy-saving and restoring, Up: VersionableObjectProxy - -VersionableObjectProxy class: saving and restoring --------------------------------------------------- - - to - -loadFrom: anObjectDumper - Retrieve the object. If the version number doesn't match the - #binaryRepresentationVersion answered by the class, call the class' - #convertFromVersion:withFixedVariables:instanceVariables:for: - method. The stored version number will be the first parameter to - that method (or nil if the stored object did not employ a - VersionableObjectProxy), the remaining parameters will be - respectively the fixed instance variables, the indexed instance - variables (or nil if the class is fixed), and the ObjectDumper - itself. If no VersionableObjectProxy, the class is sent - #nonVersionedInstSize to retrieve the number of fixed instance - variables stored for the non-versioned object. - - - -File: gst-base.info, Node: VersionableObjectProxy-saving and restoring, Prev: VersionableObjectProxy class-saving and restoring, Up: VersionableObjectProxy - -VersionableObjectProxy: saving and restoring --------------------------------------------- - -dumpTo: anObjectDumper - Save the object with extra versioning information. - - - -File: gst-base.info, Node: VFS.ArchiveFileHandler, Next: VFS.ArchiveMemberHandler, Prev: VersionableObjectProxy, Up: Base classes - -VFS.ArchiveFileHandler -====================== - -Defined in namespace Smalltalk.VFS -Superclass: VFS.RealFileHandler -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. - -* Menu: - -* VFS.ArchiveFileHandler class-registering:: (class) -* VFS.ArchiveFileHandler-ArchiveMemberHandler protocol:: (instance) -* VFS.ArchiveFileHandler-directory operations:: (instance) -* VFS.ArchiveFileHandler-file operations:: (instance) - - -File: gst-base.info, Node: VFS.ArchiveFileHandler class-registering, Next: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ArchiveFileHandler - -VFS.ArchiveFileHandler class: registering ------------------------------------------ - -isAccessible - Answer whether a directory with the name contained in the receiver - does exist and can be accessed - -isDirectory - Answer true. The archive can always be considered as a directory. - - - -File: gst-base.info, Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Next: VFS.ArchiveFileHandler-directory operations, Prev: VFS.ArchiveFileHandler class-registering, Up: VFS.ArchiveFileHandler - -VFS.ArchiveFileHandler: ArchiveMemberHandler protocol ------------------------------------------------------ - -extractMember: anArchiveMemberHandler - Extract the contents of anArchiveMemberHandler into a file that - resides on disk, and answer the name of the file. - -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. - -member: anArchiveMemberHandler do: aBlock - Evaluate aBlock once for each file in the directory represented by - anArchiveMemberHandler, passing its name. - -newMemberHandlerFor: aName - Answer a new ArchiveMemberHandler for a file named aName residing - inside the archive represented by the receiver. - -removeMember: anArchiveMemberHandler - Remove the member represented by anArchiveMemberHandler. - -updateMember: anArchiveMemberHandler - Update the member represented by anArchiveMemberHandler 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-file operations, Prev: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ArchiveFileHandler - -VFS.ArchiveFileHandler: directory operations --------------------------------------------- - -at: aName - Answer a VFSHandler for a file named `aName' residing in the - directory represented by the receiver. - -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. - -do: aBlock - Evaluate aBlock once for each file in the directory represented by - the receiver, passing its name. - -finalize - Upon finalization, we remove the file that was temporarily holding - the file contents - -release - Release the resources used by the receiver that don't survive when - reloading a snapshot. - - - -File: gst-base.info, Node: VFS.ArchiveFileHandler-file operations, Prev: VFS.ArchiveFileHandler-directory operations, Up: VFS.ArchiveFileHandler - -VFS.ArchiveFileHandler: file operations ---------------------------------------- - -remove - Remove the file with the given path name - - - -File: gst-base.info, Node: VFS.ArchiveMemberHandler, Next: VFS.DecodedFileHandler, Prev: VFS.ArchiveFileHandler, Up: Base classes - -VFS.ArchiveMemberHandler -======================== - -Defined in namespace Smalltalk.VFS -Superclass: VFS.VFSHandler -Category: Streams-Files - ArchiveMemberHandler is the handler class for members of archive - files (instances of ArchiveFileHandler). - -* Menu: - -* VFS.ArchiveMemberHandler-accessing:: (instance) -* VFS.ArchiveMemberHandler-directory operations:: (instance) -* VFS.ArchiveMemberHandler-file operations:: (instance) -* VFS.ArchiveMemberHandler-finalization:: (instance) -* VFS.ArchiveMemberHandler-initializing:: (instance) -* VFS.ArchiveMemberHandler-testing:: (instance) - - -File: gst-base.info, Node: VFS.ArchiveMemberHandler-accessing, Next: VFS.ArchiveMemberHandler-directory operations, Up: VFS.ArchiveMemberHandler - -VFS.ArchiveMemberHandler: 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). - -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). - -parent - Answer the archive of which the receiver is a member. - -refresh - Refresh the statistics for the receiver - -size - Answer the size of the file identified by the receiver - - - -File: gst-base.info, Node: VFS.ArchiveMemberHandler-directory operations, Next: VFS.ArchiveMemberHandler-file operations, Prev: VFS.ArchiveMemberHandler-accessing, Up: VFS.ArchiveMemberHandler - -VFS.ArchiveMemberHandler: directory operations ----------------------------------------------- - -at: aName - Answer a VFSHandler for a file named `aName' residing in the - directory represented by the receiver. - -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. - -do: 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-finalization, Prev: VFS.ArchiveMemberHandler-directory operations, Up: VFS.ArchiveMemberHandler - -VFS.ArchiveMemberHandler: file operations ------------------------------------------ - -open: class mode: 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 - -renameTo: newFileName - Rename the file with the given path name oldFileName to newFileName - -update: aspect - Private - Update the in-archive version of the file before closing. - - - -File: gst-base.info, Node: VFS.ArchiveMemberHandler-finalization, Next: VFS.ArchiveMemberHandler-initializing, Prev: VFS.ArchiveMemberHandler-file operations, Up: VFS.ArchiveMemberHandler - -VFS.ArchiveMemberHandler: finalization --------------------------------------- - -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.ArchiveMemberHandler-initializing, Next: VFS.ArchiveMemberHandler-testing, Prev: VFS.ArchiveMemberHandler-finalization, Up: VFS.ArchiveMemberHandler - -VFS.ArchiveMemberHandler: initializing --------------------------------------- - -parent: anArchiveFileHandler - Set the archive of which the receiver is a member. - -size: bytes stCtime: ctime stMtime: mtime stAtime: atime isDirectory: isDir - Called back by the receiver's parent when the ArchiveMemberHandler - asks for file information. - - - -File: gst-base.info, Node: VFS.ArchiveMemberHandler-testing, Prev: VFS.ArchiveMemberHandler-initializing, Up: VFS.ArchiveMemberHandler - -VFS.ArchiveMemberHandler: testing ---------------------------------- - -exists - Answer whether a file with the name contained in the receiver does - exist. - -isAccessible - Answer whether a directory with the name contained in the receiver - does exist and is accessible - -isDirectory - Answer whether a file with the name contained in the receiver does - exist and identifies a directory. - -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 - - - -File: gst-base.info, Node: VFS.DecodedFileHandler, Next: VFS.ExternalArchiveFileHandler, Prev: VFS.ArchiveMemberHandler, Up: Base classes - -VFS.DecodedFileHandler -====================== - -Defined in namespace Smalltalk.VFS -Superclass: VFS.RealFileHandler -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.DecodedFileHandler class-registering:: (class) -* VFS.DecodedFileHandler-files:: (instance) - - -File: gst-base.info, Node: VFS.DecodedFileHandler class-registering, Next: VFS.DecodedFileHandler-files, Up: VFS.DecodedFileHandler - -VFS.DecodedFileHandler class: registering ------------------------------------------ - -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). - -initialize - Initialize the default virtual filesystems and the associated - filter commands. - -vfsFor: file name: fsName subPath: subPath - Create a temporary file and use it to construct the contents of - the given file, under the virtual filesystem fsName. subPath must - be nil because this class supports single-file virtual filesystems - only. - - - -File: gst-base.info, Node: VFS.DecodedFileHandler-files, Prev: VFS.DecodedFileHandler class-registering, Up: VFS.DecodedFileHandler - -VFS.DecodedFileHandler: files ------------------------------ - -finalize - Upon finalization, we remove the file that was temporarily holding - the file contents - -name: virtualFileName realFileName: temporaryFileName - 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.ExternalArchiveFileHandler, Next: VFS.RealFileHandler, Prev: VFS.DecodedFileHandler, Up: Base classes - -VFS.ExternalArchiveFileHandler -============================== - -Defined in namespace Smalltalk.VFS -Superclass: VFS.ArchiveFileHandler -Category: Streams-Files - ExternalArchiveFileHandler allows for easy implementation of - archive files (for example, transparent unzipping and untarring) - with a single shell script. It implements a protocol that that is - compatible with the Midnight Commander and with GNOME VFS. - -* Menu: - -* VFS.ExternalArchiveFileHandler class-registering:: (class) -* VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol:: (instance) -* VFS.ExternalArchiveFileHandler-members:: (instance) -* VFS.ExternalArchiveFileHandler-releasing:: (instance) - - -File: gst-base.info, Node: VFS.ExternalArchiveFileHandler class-registering, Next: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ExternalArchiveFileHandler - -VFS.ExternalArchiveFileHandler class: registering -------------------------------------------------- - -fileSystems - Answer the virtual file systems that can be processed by this - subclass. These are given by the names of the executable files in - the vfs subdirectory of the image directory, of the parent of the - kernel directory and of the parent of the system kernel directory. - -fileSystemsIn: path - Registers the executable files in the given directory to be used - to resolve a virtual file system. - -vfsFor: file name: fsName subPath: subPath - Create a temporary file and use it to construct the contents of - the given file, under the virtual filesystem fsName. - - - -File: gst-base.info, Node: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol, Next: VFS.ExternalArchiveFileHandler-members, Prev: VFS.ExternalArchiveFileHandler class-registering, Up: VFS.ExternalArchiveFileHandler - -VFS.ExternalArchiveFileHandler: ArchiveMemberHandler protocol -------------------------------------------------------------- - -extractMember: anArchiveMemberHandler - Extract the contents of anArchiveMemberHandler into a file that - resides on disk, and answer the name of the file. - -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. - -member: anArchiveMemberHandler do: aBlock - Evaluate aBlock once for each file in the directory represented by - anArchiveMemberHandler, passing its name. - -refresh - Extract the directory listing from the archive - -removeMember: anArchiveMemberHandler - Remove the member represented by anArchiveMemberHandler. - -updateMember: anArchiveMemberHandler - Update the member represented by anArchiveMemberHandler by copying - the file into which it was extracted back to the archive. - - - -File: gst-base.info, Node: VFS.ExternalArchiveFileHandler-members, Next: VFS.ExternalArchiveFileHandler-releasing, Prev: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ExternalArchiveFileHandler - -VFS.ExternalArchiveFileHandler: members ---------------------------------------- - -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. - -do: aBlock - Evaluate aBlock once for each file in the directory represented by - the receiver, passing its name. - - - -File: gst-base.info, Node: VFS.ExternalArchiveFileHandler-releasing, Prev: VFS.ExternalArchiveFileHandler-members, Up: VFS.ExternalArchiveFileHandler - -VFS.ExternalArchiveFileHandler: releasing ------------------------------------------ - -release - Release the resources used by the receiver that don't survive when - reloading a snapshot. - - - -File: gst-base.info, Node: VFS.RealFileHandler, Next: VFS.VFSHandler, Prev: VFS.ExternalArchiveFileHandler, Up: Base classes - -VFS.RealFileHandler -=================== - -Defined in namespace Smalltalk.VFS -Superclass: VFS.VFSHandler -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. - -* Menu: - -* VFS.RealFileHandler class-C functions:: (class) -* VFS.RealFileHandler class-initialization:: (class) -* VFS.RealFileHandler-accessing:: (instance) -* VFS.RealFileHandler-directory operations:: (instance) -* VFS.RealFileHandler-file operations:: (instance) -* VFS.RealFileHandler-testing:: (instance) - - -File: gst-base.info, Node: VFS.RealFileHandler class-C functions, Next: VFS.RealFileHandler class-initialization, Up: VFS.RealFileHandler - -VFS.RealFileHandler class: C functions --------------------------------------- - -working - C call-out to getCurDirName. Do not modify! - - - -File: gst-base.info, Node: VFS.RealFileHandler class-initialization, Next: VFS.RealFileHandler-accessing, Prev: VFS.RealFileHandler class-C functions, Up: VFS.RealFileHandler - -VFS.RealFileHandler class: initialization ------------------------------------------ - -initialize - Initialize the receiver's class variables - - - -File: gst-base.info, Node: VFS.RealFileHandler-accessing, Next: VFS.RealFileHandler-directory operations, Prev: VFS.RealFileHandler class-initialization, Up: VFS.RealFileHandler - -VFS.RealFileHandler: 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). - -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). - -name: aName - Private - Initialize the receiver's instance variables - -refresh - Refresh the statistics for the receiver - -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 - -VFS.RealFileHandler: directory operations ------------------------------------------ - -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. - -do: 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: VFS.RealFileHandler-file operations, Next: VFS.RealFileHandler-testing, Prev: VFS.RealFileHandler-directory operations, Up: VFS.RealFileHandler - -VFS.RealFileHandler: file operations ------------------------------------- - -open: class mode: 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 - -renameTo: newFileName - Rename the file with the given path name oldFileName to newFileName - - - -File: gst-base.info, Node: VFS.RealFileHandler-testing, Prev: VFS.RealFileHandler-file operations, Up: VFS.RealFileHandler - -VFS.RealFileHandler: testing ----------------------------- - -exists - Answer whether a file with the name contained in the receiver does - exist. - -isDirectory - Answer whether a file with the name contained in the receiver does - exist and identifies a directory. - -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 - - - -File: gst-base.info, Node: VFS.VFSHandler, Next: Warning, Prev: VFS.RealFileHandler, Up: Base classes - -VFS.VFSHandler -============== - -Defined in namespace Smalltalk.VFS -Superclass: Object -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-C functions:: (instance) -* VFS.VFSHandler-directory operations:: (instance) -* VFS.VFSHandler-file operations:: (instance) -* VFS.VFSHandler-testing:: (instance) - - -File: gst-base.info, Node: VFS.VFSHandler class-initializing, Next: VFS.VFSHandler class-instance creation, Up: VFS.VFSHandler - -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 - -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 - -VFS.VFSHandler class: instance creation ---------------------------------------- - -for: fileName - Answer the (real or virtual) file handler for the file named - fileName - - - -File: gst-base.info, Node: VFS.VFSHandler-accessing, Next: VFS.VFSHandler-C functions, Prev: VFS.VFSHandler class-instance creation, Up: VFS.VFSHandler - -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). - -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). - -name - Answer the name of the file identified by the receiver - -name: aName - Private - Initialize the receiver's instance variables - -realFileName - Answer the real file name which holds the file contents, or an - empty string if it does not apply. - -refresh - Refresh the statistics for the receiver - -size - Answer the size of the file identified by the receiver - - - -File: gst-base.info, Node: VFS.VFSHandler-C functions, Next: VFS.VFSHandler-directory operations, Prev: VFS.VFSHandler-accessing, Up: VFS.VFSHandler - -VFS.VFSHandler: C functions ---------------------------- - -closeDir: dirObject - C call-out to closedir. Do not modify! - -extractDirentName: dirent - C call-out to extractDirentName. Do not modify! - -openDir: dirName - C call-out to opendir. Do not modify! - -primCreateDir: dirName mode: mode - C call-out to mkdir. Do not modify! - -primIsExecutable: name - C call-out to fileIsExecutable. Do not modify! - -primIsReadable: name - C call-out to fileIsReadable. Do not modify! - -primIsWriteable: name - C call-out to fileIsWriteable. Do not modify! - -primRemoveDir: fileName - C call-out to rmdir. Do not modify! - -primRename: oldFileName to: newFileName - C call-out to rename. Do not modify! - -primUnlink: fileName - C call-out to unlink. Do not modify! - -readDir: dirObject - C call-out to readdir. Do not modify! - -rewindDir: dirObject - C call-out to rewinddir. Do not modify! - -statOn: fileName into: statStruct - C call-out to stat. Do not modify! - - - -File: gst-base.info, Node: VFS.VFSHandler-directory operations, Next: VFS.VFSHandler-file operations, Prev: VFS.VFSHandler-C functions, Up: VFS.VFSHandler - -VFS.VFSHandler: directory operations ------------------------------------- - -at: aName - Answer a VFSHandler for a file named `aName' residing in the - directory represented by the receiver. - -createDir: dirName - Create a subdirectory of the receiver, naming it dirName. - -do: 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: VFS.VFSHandler-file operations, Next: VFS.VFSHandler-testing, Prev: VFS.VFSHandler-directory operations, Up: VFS.VFSHandler - -VFS.VFSHandler: file operations -------------------------------- - -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 - -renameTo: newFileName - Rename the file with the given path name oldFileName to newFileName - - - -File: gst-base.info, Node: VFS.VFSHandler-testing, Prev: VFS.VFSHandler-file operations, Up: VFS.VFSHandler - -VFS.VFSHandler: testing ------------------------ - -exists - Answer whether a file with the name contained in the receiver does - exist. - -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. - -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 - - - -File: gst-base.info, Node: Warning, Next: WeakArray, Prev: VFS.VFSHandler, Up: Base classes - -Warning -======= - -Defined in namespace Smalltalk -Superclass: Notification -Category: Language-Exceptions - Warning represents an `important' but resumable error. - -* Menu: - -* Warning-exception description:: (instance) - - -File: gst-base.info, Node: Warning-exception description, Up: Warning - -Warning: exception description ------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: WeakArray, Next: WeakIdentitySet, Prev: Warning, Up: Base classes - -WeakArray -========= - -Defined in namespace Smalltalk -Superclass: Array -Category: Collections-Weak - I am similar to a plain array, but my items are stored in a weak - object, so I track which of them are garbage collected. - -* Menu: - -* WeakArray class-instance creation:: (class) -* WeakArray-accessing:: (instance) -* WeakArray-conversion:: (instance) -* WeakArray-loading:: (instance) - - -File: gst-base.info, Node: WeakArray class-instance creation, Next: WeakArray-accessing, Up: WeakArray - -WeakArray class: instance creation ----------------------------------- - -new: size - Private - Initialize the values array; plus, make it weak and - create the ByteArray used to track garbage collected values - - - -File: gst-base.info, Node: WeakArray-accessing, Next: WeakArray-conversion, Prev: WeakArray class-instance creation, Up: WeakArray - -WeakArray: accessing --------------------- - -aliveObjectsDo: aBlock - Evaluate aBlock for all the elements in the array, excluding the - garbage collected ones. Note: a finalized object stays alive until - the next collection (the collector has no means to see whether it - was resuscitated by the finalizer), so an object being alive does - not mean that it is usable. - -at: index - Answer the index-th item of the receiver, or nil if it has been - garbage collected. - -at: index put: object - Store the value associated to the given index; plus, store in - nilValues whether the object is nil. nil objects whose associated - item of nilValues is 1 were touched by the garbage collector. - -atAll: indices put: object - Put object at every index contained in the indices collection - -atAllPut: object - Put object at every index in the receiver - -clearGCFlag: index - Clear the `object has been garbage collected' flag for the item at - the given index - -do: aBlock - Evaluate aBlock for all the elements in the array, including the - garbage collected ones (pass nil for those). - -isAlive: index - Answer whether the item at the given index is still alive or has - been garbage collected. Note: a finalized object stays alive until - the next collection (the collector has no means to see whether it - was resuscitated by the finalizer), so an object being alive does - not mean that it is usable. - -size - Answer the number of items in the receiver - - - -File: gst-base.info, Node: WeakArray-conversion, Next: WeakArray-loading, Prev: WeakArray-accessing, Up: WeakArray - -WeakArray: conversion ---------------------- - -asArray - Answer a non-weak version of the receiver - -deepCopy - Returns a deep copy of the receiver (the instance variables are - copies of the receiver's instance variables) - -shallowCopy - Returns a shallow copy of the receiver (the instance variables are - not copied) - -species - Answer Array; this method is used in the #copyEmpty: message, - which in turn is used by all collection-returning methods - (collect:, select:, reject:, etc.). - - - -File: gst-base.info, Node: WeakArray-loading, Prev: WeakArray-conversion, Up: WeakArray - -WeakArray: loading ------------------- - -postLoad - Called after loading an object; must restore it to the state before - `preStore' was called. Make it weak again - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-14 smalltalk-2.1.7/doc/gst-base.info-14 --- smalltalk-2.1.6/doc/gst-base.info-14 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-14 1970-01-01 01:00:00.000000000 +0100 @@ -1,550 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: WeakIdentitySet, Next: WeakKeyDictionary, Prev: WeakArray, Up: Base classes - -WeakIdentitySet -=============== - -Defined in namespace Smalltalk -Superclass: WeakSet -Category: Collections-Weak - I am similar to a plain identity set, but my keys are stored in a - weak array; I track which of them are garbage collected and, as - soon as I encounter one of them, I swiftly remove all the garbage - collected keys - -* Menu: - - -File: gst-base.info, Node: WeakKeyDictionary, Next: WeakKeyIdentityDictionary, Prev: WeakIdentitySet, Up: Base classes - -WeakKeyDictionary -================= - -Defined in namespace Smalltalk -Superclass: Dictionary -Category: Collections-Weak - I am similar to a plain Dictionary, but my keys are stored in a - weak array; I track which of them are garbage collected and, as - soon as I encounter one of them, I swiftly remove all the - associations for the garbage collected keys - -* Menu: - -* WeakKeyDictionary-accessing:: (instance) - - -File: gst-base.info, Node: WeakKeyDictionary-accessing, Up: WeakKeyDictionary - -WeakKeyDictionary: accessing ----------------------------- - -add: anAssociation - Store value as associated to the given key. If any, recycle - Associations temporarily stored by the compiler inside the - `Undeclared' dictionary. - -at: key put: value - Store value as associated to the given key. If any, recycle - Associations temporarily stored by the compiler inside the - `Undeclared' dictionary. - - - -File: gst-base.info, Node: WeakKeyIdentityDictionary, Next: WeakSet, Prev: WeakKeyDictionary, Up: Base classes - -WeakKeyIdentityDictionary -========================= - -Defined in namespace Smalltalk -Superclass: WeakKeyDictionary -Category: Collections-Weak - I am similar to a plain identity dictionary, but my keys are stored - in a weak array; I track which of them are garbage collected and, - as soon as I encounter one of them, I swiftly remove all the - associations for the garbage collected keys - -* Menu: - - -File: gst-base.info, Node: WeakSet, Next: WeakValueIdentityDictionary, Prev: WeakKeyIdentityDictionary, Up: Base classes - -WeakSet -======= - -Defined in namespace Smalltalk -Superclass: Set -Category: Collections-Weak - I am similar to a plain set, but my items are stored in a weak - array; I track which of them are garbage collected and, as soon as - I encounter one of them, I swiftly remove all. - -* Menu: - -* WeakSet-accessing:: (instance) - - -File: gst-base.info, Node: WeakSet-accessing, Up: WeakSet - -WeakSet: accessing ------------------- - -add: anObject - Add newObject to the set, if and only if the set doesn't already - contain an occurrence of it. Don't fail if a duplicate is found. - Answer anObject - -do: aBlock - Enumerate all the non-nil members of the set - -remove: anObject ifAbsent: aBlock - Remove oldObject to the set. If it is found, answer oldObject. - Otherwise, evaluate aBlock and return its value. - - - -File: gst-base.info, Node: WeakValueIdentityDictionary, Next: WeakValueLookupTable, Prev: WeakSet, Up: Base classes - -WeakValueIdentityDictionary -=========================== - -Defined in namespace Smalltalk -Superclass: WeakValueLookupTable -Category: Collections-Weak - I am similar to a plain identity dictionary, but my values are - stored in a weak array; I track which of the values are garbage - collected and, as soon as one of them is accessed, I swiftly - remove the associations for the garbage collected values - -* Menu: - - -File: gst-base.info, Node: WeakValueLookupTable, Next: WordArray, Prev: WeakValueIdentityDictionary, Up: Base classes - -WeakValueLookupTable -==================== - -Defined in namespace Smalltalk -Superclass: LookupTable -Category: Collections-Weak - I am similar to a plain LookupTable, but my values are stored in a - weak array; I track which of the values are garbage collected and, - as soon as one of them is accessed, I swiftly remove the - associations for the garbage collected values - -* Menu: - -* WeakValueLookupTable-hacks:: (instance) -* WeakValueLookupTable-rehashing:: (instance) - - -File: gst-base.info, Node: WeakValueLookupTable-hacks, Next: WeakValueLookupTable-rehashing, Up: WeakValueLookupTable - -WeakValueLookupTable: hacks ---------------------------- - -at: key ifAbsent: aBlock - Answer the value associated to the given key, or the result of - evaluating aBlock if the key is not found - -at: key ifPresent: aBlock - If aKey is absent, answer nil. Else, evaluate aBlock passing the - associated value and answer the result of the invocation - -includesKey: key - Answer whether the receiver contains the given key. - - - -File: gst-base.info, Node: WeakValueLookupTable-rehashing, Prev: WeakValueLookupTable-hacks, Up: WeakValueLookupTable - -WeakValueLookupTable: rehashing -------------------------------- - -rehash - Rehash the receiver - - - -File: gst-base.info, Node: WordArray, Next: WriteStream, Prev: WeakValueLookupTable, Up: Base classes - -WordArray -========= - -Defined in namespace Smalltalk -Superclass: ArrayedCollection -Category: Collections-Sequenceable - I am similar to a plain array, but my items are 32-bit integers. - -* Menu: - - -File: gst-base.info, Node: WriteStream, Next: ZeroDivide, Prev: WordArray, Up: Base classes - -WriteStream -=========== - -Defined in namespace Smalltalk -Superclass: PositionableStream -Category: Streams-Collections - I am the class of writeable streams. I only allow write - operations to my instances; reading is strictly forbidden. - -* Menu: - -* WriteStream class-instance creation:: (class) -* WriteStream-accessing:: (instance) -* WriteStream-accessing-writing:: (instance) -* WriteStream-positioning:: (instance) - - -File: gst-base.info, Node: WriteStream class-instance creation, Next: WriteStream-accessing, Up: WriteStream - -WriteStream class: instance creation ------------------------------------- - -on: aCollection - Answer a new instance of the receiver which streams on aCollection. - Every item of aCollection is discarded. - -with: aCollection - Answer a new instance of the receiver which streams from the end - of aCollection. - -with: aCollection from: firstIndex to: lastIndex - Answer a new instance of the receiver which streams from the - firstIndex-th item of aCollection to the lastIndex-th. The pointer - is moved to the last item in that range. - - - -File: gst-base.info, Node: WriteStream-accessing, Next: WriteStream-accessing-writing, Prev: WriteStream class-instance creation, Up: WriteStream - -WriteStream: accessing ----------------------- - -size - Answer how many objects have been written - - - -File: gst-base.info, Node: WriteStream-accessing-writing, Next: WriteStream-positioning, Prev: WriteStream-accessing, Up: WriteStream - -WriteStream: accessing-writing ------------------------------- - -contents - Returns a collection of the same type that the stream accesses, up - to and including the final element. - -nextPut: anObject - Store anObject as the next item in the receiver. Grow the - collection if necessary - -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: WriteStream-positioning, Prev: WriteStream-accessing-writing, Up: WriteStream - -WriteStream: positioning ------------------------- - -emptyStream - Extension - Reset the stream - - - -File: gst-base.info, Node: ZeroDivide, Prev: WriteStream, Up: Base classes - -ZeroDivide -========== - -Defined in namespace Smalltalk -Superclass: ArithmeticError -Category: Language-Exceptions - A ZeroDivide exception is raised by numeric classes when a program - tries to divide by zero. Information on the dividend is available - to the handler. - -* Menu: - -* ZeroDivide class-instance creation:: (class) -* ZeroDivide-accessing:: (instance) -* ZeroDivide-description:: (instance) - - -File: gst-base.info, Node: ZeroDivide class-instance creation, Next: ZeroDivide-accessing, Up: ZeroDivide - -ZeroDivide class: instance creation ------------------------------------ - -dividend: aNumber - Create a new ZeroDivide object remembering that the dividend was - aNumber. - -new - Create a new ZeroDivide object; the dividend is conventionally set - to zero. - - - -File: gst-base.info, Node: ZeroDivide-accessing, Next: ZeroDivide-description, Prev: ZeroDivide class-instance creation, Up: ZeroDivide - -ZeroDivide: accessing ---------------------- - -dividend - Answer the number that was being divided by zero - - - -File: gst-base.info, Node: ZeroDivide-description, Prev: ZeroDivide-accessing, Up: ZeroDivide - -ZeroDivide: description ------------------------ - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: Class index, Next: Method index, Prev: Base classes, Up: Top - -Class index -*********** - -* Menu: - -* AbstractNamespace: AbstractNamespace. -* AlternativeObjectProxy: AlternativeObjectProxy. -* ArithmeticError: ArithmeticError. -* Array: Array. -* ArrayedCollection: ArrayedCollection. -* Association: Association. -* Autoload: Autoload. -* AutoloadClass: AutoloadClass. -* Bag: Bag. -* Behavior: Behavior. -* BindingDictionary: BindingDictionary. -* BlockClosure: BlockClosure. -* BlockContext: BlockContext. -* Boolean: Boolean. -* ByteArray: ByteArray. -* ByteStream: ByteStream. -* CAggregate: CAggregate. -* CallinProcess: CallinProcess. -* CArray: CArray. -* CArrayCType: CArrayCType. -* CBoolean: CBoolean. -* CByte: CByte. -* CChar: CChar. -* CCompound: CCompound. -* CDouble: CDouble. -* CFloat: CFloat. -* CFunctionDescriptor: CFunctionDescriptor. -* Character: Character. -* CharacterArray: CharacterArray. -* CInt: CInt. -* Class: Class. -* ClassDescription: ClassDescription. -* CLong: CLong. -* CObject: CObject. -* Collection: Collection. -* CompiledBlock: CompiledBlock. -* CompiledCode: CompiledCode. -* CompiledMethod: CompiledMethod. -* ContextPart: ContextPart. -* CoreException: CoreException. -* CPtr: CPtr. -* CPtrCType: CPtrCType. -* CScalar: CScalar. -* CScalarCType: CScalarCType. -* CShort: CShort. -* CSmalltalk: CSmalltalk. -* CString: CString. -* CStringCType: CStringCType. -* CStruct: CStruct. -* CType: CType. -* CUChar: CUChar. -* CUInt: CUInt. -* CULong: CULong. -* CUnion: CUnion. -* CUShort: CUShort. -* Date: Date. -* DateTime: DateTime. -* Delay: Delay. -* DelayedAdaptor: DelayedAdaptor. -* Dictionary: Dictionary. -* DirectedMessage: DirectedMessage. -* Directory: Directory. -* DLD: DLD. -* DumperProxy: DumperProxy. -* Duration: Duration. -* Error: Error. -* Exception: Exception. -* ExceptionSet: ExceptionSet. -* False: False. -* File: File. -* FileDescriptor: FileDescriptor. -* FileSegment: FileSegment. -* FileStream: FileStream. -* Float: Float. -* FloatD: FloatD. -* FloatE: FloatE. -* FloatQ: FloatQ. -* Fraction: Fraction. -* Halt: Halt. -* HashedCollection: HashedCollection. -* HomedAssociation: HomedAssociation. -* IdentityDictionary: IdentityDictionary. -* IdentitySet: IdentitySet. -* Integer: Integer. -* Interval: Interval. -* LargeArray: LargeArray. -* LargeArrayedCollection: LargeArrayedCollection. -* LargeArraySubpart: LargeArraySubpart. -* LargeByteArray: LargeByteArray. -* LargeInteger: LargeInteger. -* LargeNegativeInteger: LargeNegativeInteger. -* LargePositiveInteger: LargePositiveInteger. -* LargeWordArray: LargeWordArray. -* LargeZeroInteger: LargeZeroInteger. -* Link: Link. -* LinkedList: LinkedList. -* LookupKey: LookupKey. -* LookupTable: LookupTable. -* Magnitude: Magnitude. -* MappedCollection: MappedCollection. -* Memory: Memory. -* Message: Message. -* MessageNotUnderstood: MessageNotUnderstood. -* Metaclass: Metaclass. -* MethodContext: MethodContext. -* MethodDictionary: MethodDictionary. -* MethodInfo: MethodInfo. -* Namespace: Namespace. -* NetClients.URIResolver: NetClients.URIResolver. -* NetClients.URL: NetClients.URL. -* Notification: Notification. -* NullProxy: NullProxy. -* NullValueHolder: NullValueHolder. -* Number: Number. -* Object: Object. -* ObjectDumper: ObjectDumper. -* ObjectMemory: ObjectMemory. -* OrderedCollection: OrderedCollection. -* Package: Package. -* PackageLoader: PackageLoader. -* PluggableAdaptor: PluggableAdaptor. -* PluggableProxy: PluggableProxy. -* Point: Point. -* PositionableStream: PositionableStream. -* Process: Process. -* ProcessorScheduler: ProcessorScheduler. -* Promise: Promise. -* Random: Random. -* ReadStream: ReadStream. -* ReadWriteStream: ReadWriteStream. -* Rectangle: Rectangle. -* RecursionLock: RecursionLock. -* RootNamespace: RootNamespace. -* RunArray: RunArray. -* ScaledDecimal: ScaledDecimal. -* Semaphore: Semaphore. -* SequenceableCollection: SequenceableCollection. -* Set: Set. -* SharedQueue: SharedQueue. -* Signal: Signal. -* SingletonProxy: SingletonProxy. -* SmallInteger: SmallInteger. -* SortedCollection: SortedCollection. -* Stream: Stream. -* String: String. -* Symbol: Symbol. -* SymLink: SymLink. -* SystemDictionary: SystemDictionary. -* SystemExceptions.AlreadyDefined: SystemExceptions.AlreadyDefined. -* SystemExceptions.ArgumentOutOfRange: SystemExceptions.ArgumentOutOfRange. -* SystemExceptions.BadReturn: SystemExceptions.BadReturn. -* SystemExceptions.CInterfaceError: SystemExceptions.CInterfaceError. -* SystemExceptions.EmptyCollection: SystemExceptions.EmptyCollection. -* SystemExceptions.EndOfStream: SystemExceptions.EndOfStream. -* SystemExceptions.FileError: SystemExceptions.FileError. -* SystemExceptions.IndexOutOfRange: SystemExceptions.IndexOutOfRange. -* SystemExceptions.InvalidArgument: SystemExceptions.InvalidArgument. -* SystemExceptions.InvalidProcessState: SystemExceptions.InvalidProcessState. -* SystemExceptions.InvalidSize: SystemExceptions.InvalidSize. -* SystemExceptions.InvalidValue: SystemExceptions.InvalidValue. -* SystemExceptions.MustBeBoolean: SystemExceptions.MustBeBoolean. -* SystemExceptions.MutationError: SystemExceptions.MutationError. -* SystemExceptions.NoRunnableProcess: SystemExceptions.NoRunnableProcess. -* SystemExceptions.NotFound: SystemExceptions.NotFound. -* SystemExceptions.NotImplemented: SystemExceptions.NotImplemented. -* SystemExceptions.NotIndexable: SystemExceptions.NotIndexable. -* SystemExceptions.NotYetImplemented: SystemExceptions.NotYetImplemented. -* SystemExceptions.PrimitiveFailed: SystemExceptions.PrimitiveFailed. -* SystemExceptions.ProcessBeingTerminated: SystemExceptions.ProcessBeingTerminated. -* SystemExceptions.ProcessTerminated: SystemExceptions.ProcessTerminated. -* SystemExceptions.ReadOnlyObject: SystemExceptions.ReadOnlyObject. -* SystemExceptions.ShouldNotImplement: SystemExceptions.ShouldNotImplement. -* SystemExceptions.SubclassResponsibility: SystemExceptions.SubclassResponsibility. -* SystemExceptions.UserInterrupt: SystemExceptions.UserInterrupt. -* SystemExceptions.VMError: SystemExceptions.VMError. -* SystemExceptions.WrongArgumentCount: SystemExceptions.WrongArgumentCount. -* SystemExceptions.WrongClass: SystemExceptions.WrongClass. -* SystemExceptions.WrongMessageSent: SystemExceptions.WrongMessageSent. -* TextCollector: TextCollector. -* Time: Time. -* TokenStream: TokenStream. -* TrappableEvent: TrappableEvent. -* True: True. -* UndefinedObject: UndefinedObject. -* ValueAdaptor: ValueAdaptor. -* ValueHolder: ValueHolder. -* VariableBinding: VariableBinding. -* VersionableObjectProxy: VersionableObjectProxy. -* VFS.ArchiveFileHandler: VFS.ArchiveFileHandler. -* VFS.ArchiveMemberHandler: VFS.ArchiveMemberHandler. -* VFS.DecodedFileHandler: VFS.DecodedFileHandler. -* VFS.ExternalArchiveFileHandler: VFS.ExternalArchiveFileHandler. -* VFS.RealFileHandler: VFS.RealFileHandler. -* VFS.VFSHandler: VFS.VFSHandler. -* Warning: Warning. -* WeakArray: WeakArray. -* WeakIdentitySet: WeakIdentitySet. -* WeakKeyDictionary: WeakKeyDictionary. -* WeakKeyIdentityDictionary: WeakKeyIdentityDictionary. -* WeakSet: WeakSet. -* WeakValueIdentityDictionary: WeakValueIdentityDictionary. -* WeakValueLookupTable: WeakValueLookupTable. -* WordArray: WordArray. -* WriteStream: WriteStream. -* ZeroDivide: ZeroDivide. - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-15 smalltalk-2.1.7/doc/gst-base.info-15 --- smalltalk-2.1.6/doc/gst-base.info-15 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-15 1970-01-01 01:00:00.000000000 +0100 @@ -1,3212 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: Method index, Next: Cross-reference, Prev: Class index, Up: Top - -Method index -************ - -* Menu: - -* & <1>: True-basic. -* & <2>: Set-arithmetic. -* & <3>: False-basic. -* &: Boolean-basic. -* * <1>: SmallInteger-built ins. -* * <2>: ScaledDecimal-arithmetic. -* * <3>: Point-arithmetic. -* * <4>: Number-arithmetic. -* * <5>: LargeZeroInteger-arithmetic. -* * <6>: LargeInteger-arithmetic. -* * <7>: Fraction-arithmetic. -* * <8>: FloatQ-built ins. -* * <9>: FloatE-built ins. -* * <10>: FloatD-built ins. -* *: Duration-arithmetics. -* + <1>: SmallInteger-built ins. -* + <2>: Set-arithmetic. -* + <3>: ScaledDecimal-arithmetic. -* + <4>: Point-arithmetic. -* + <5>: Number-arithmetic. -* + <6>: LargeZeroInteger-arithmetic. -* + <7>: LargePositiveInteger-arithmetic. -* + <8>: LargeNegativeInteger-reverting to LargePositiveInteger. -* + <9>: LargeInteger-arithmetic. -* + <10>: Fraction-arithmetic. -* + <11>: FloatQ-built ins. -* + <12>: FloatE-built ins. -* + <13>: FloatD-built ins. -* + <14>: Duration-arithmetics. -* + <15>: DateTime-basic. -* +: CObject-pointer-like behavior. -* , <1>: TrappableEvent-instance creation. -* , <2>: String class-basic. -* , <3>: SequenceableCollection-copying SequenceableCollections. -* , <4>: Exception class-creating ExceptionCollections. -* ,: ArrayedCollection-basic. -* - <1>: SmallInteger-built ins. -* - <2>: Set-arithmetic. -* - <3>: ScaledDecimal-arithmetic. -* - <4>: Point-arithmetic. -* - <5>: Number-arithmetic. -* - <6>: LargeZeroInteger-arithmetic. -* - <7>: LargePositiveInteger-arithmetic. -* - <8>: LargeNegativeInteger-reverting to LargePositiveInteger. -* - <9>: LargeInteger-arithmetic. -* - <10>: Fraction-arithmetic. -* - <11>: FloatQ-built ins. -* - <12>: FloatE-built ins. -* - <13>: FloatD-built ins. -* - <14>: Duration-arithmetics. -* - <15>: DateTime-basic. -* -: CObject-pointer-like behavior. -* ->: Object-syntax shortcuts. -* / <1>: SmallInteger-built ins. -* / <2>: ScaledDecimal-arithmetic. -* / <3>: Point-arithmetic. -* / <4>: Number-arithmetic. -* / <5>: LargeZeroInteger-arithmetic. -* / <6>: LargeInteger-arithmetic. -* / <7>: Fraction-arithmetic. -* / <8>: FloatQ-built ins. -* / <9>: FloatE-built ins. -* / <10>: FloatD-built ins. -* /: Duration-arithmetics. -* // <1>: SmallInteger-built ins. -* // <2>: ScaledDecimal-arithmetic. -* // <3>: Point-arithmetic. -* // <4>: Number-arithmetic. -* // <5>: LargeZeroInteger-arithmetic. -* // <6>: LargeInteger-arithmetic. -* //: Fraction-arithmetic. -* < <1>: Time-comparing. -* < <2>: SmallInteger-built ins. -* < <3>: Set-comparing. -* < <4>: ScaledDecimal-comparing. -* < <5>: Point-comparing. -* < <6>: Magnitude-basic. -* < <7>: LookupKey-testing. -* < <8>: LargeInteger-testing. -* < <9>: LargeArraySubpart-comparing. -* < <10>: Fraction-comparing. -* < <11>: FloatQ-built ins. -* < <12>: FloatE-built ins. -* < <13>: FloatD-built ins. -* < <14>: DateTime-testing. -* < <15>: Date-testing. -* < <16>: CharacterArray-comparing. -* <: Character-comparing. -* <<: Stream-printing. -* <= <1>: SmallInteger-built ins. -* <= <2>: Set-comparing. -* <= <3>: ScaledDecimal-comparing. -* <= <4>: Point-comparing. -* <= <5>: Magnitude-basic. -* <= <6>: LargeInteger-testing. -* <= <7>: LargeArraySubpart-comparing. -* <= <8>: Fraction-comparing. -* <= <9>: FloatQ-built ins. -* <= <10>: FloatE-built ins. -* <= <11>: FloatD-built ins. -* <= <12>: CharacterArray-comparing. -* <=: Character-comparing. -* = <1>: Time-comparing. -* = <2>: Symbol-built ins. -* = <3>: SmallInteger-built ins. -* = <4>: SequenceableCollection-testing. -* = <5>: ScaledDecimal-comparing. -* = <6>: RunArray-testing. -* = <7>: Rectangle-testing. -* = <8>: Point-comparing. -* = <9>: Object-built ins. -* = <10>: NetClients.URL-comparing. -* = <11>: MethodInfo-equality. -* = <12>: Magnitude-basic. -* = <13>: LookupKey-testing. -* = <14>: LargeInteger-testing. -* = <15>: LargeArraySubpart-comparing. -* = <16>: LargeArrayedCollection-basic. -* = <17>: Interval-testing. -* = <18>: HashedCollection-testing collections. -* = <19>: Fraction-comparing. -* = <20>: FloatQ-built ins. -* = <21>: FloatE-built ins. -* = <22>: FloatD-built ins. -* = <23>: FileSegment-equality. -* = <24>: Exception-comparison. -* = <25>: Dictionary-testing. -* = <26>: Delay-comparing. -* = <27>: DateTime-testing. -* = <28>: Date-testing. -* = <29>: CompiledMethod-basic. -* = <30>: CompiledCode-basic. -* = <31>: CompiledBlock-basic. -* = <32>: Class-testing. -* = <33>: Character-built ins. -* = <34>: Bag-testing collections. -* = <35>: Association-testing. -* =: AbstractNamespace-basic & copying. -* == <1>: SmallInteger-built ins. -* ==: Object-built ins. -* > <1>: SmallInteger-built ins. -* > <2>: Set-comparing. -* > <3>: ScaledDecimal-comparing. -* > <4>: Point-comparing. -* > <5>: Magnitude-basic. -* > <6>: LargeInteger-testing. -* > <7>: Fraction-comparing. -* > <8>: FloatQ-built ins. -* > <9>: FloatE-built ins. -* > <10>: FloatD-built ins. -* > <11>: CharacterArray-comparing. -* >: Character-comparing. -* >= <1>: SmallInteger-built ins. -* >= <2>: Set-comparing. -* >= <3>: ScaledDecimal-comparing. -* >= <4>: Point-comparing. -* >= <5>: Magnitude-basic. -* >= <6>: LargeInteger-testing. -* >= <7>: Fraction-comparing. -* >= <8>: FloatQ-built ins. -* >= <9>: FloatE-built ins. -* >= <10>: FloatD-built ins. -* >= <11>: CharacterArray-comparing. -* >=: Character-comparing. -* >>: Behavior-accessing the methodDictionary. -* @: Number-point creation. -* \\ <1>: SmallInteger-built ins. -* \\ <2>: ScaledDecimal-arithmetic. -* \\ <3>: Number-arithmetic. -* \\ <4>: LargeZeroInteger-arithmetic. -* \\ <5>: LargeInteger-arithmetic. -* \\: Fraction-arithmetic. -* abbreviationOfDay_: Date class-basic. -* abort: ObjectMemory class-builtins. -* abs <1>: Point-arithmetic. -* abs <2>: Number-misc math. -* abs <3>: LargePositiveInteger-numeric testing. -* abs <4>: LargeNegativeInteger-numeric testing. -* abs: Duration-arithmetics. -* acceptUsageForClass_ <1>: SingletonProxy class-accessing. -* acceptUsageForClass_ <2>: DumperProxy class-accessing. -* acceptUsageForClass_: AlternativeObjectProxy class-instance creation. -* accesses_ <1>: CompiledMethod-testing. -* accesses_: CompiledCode-testing accesses. -* activePriority: ProcessorScheduler-basic. -* activeProcess: ProcessorScheduler-basic. -* add_ <1>: WeakSet-accessing. -* add_ <2>: WeakKeyDictionary-accessing. -* add_ <3>: OrderedCollection-adding. -* add_ <4>: MappedCollection-basic. -* add_ <5>: LookupTable-accessing. -* add_ <6>: LinkedList-adding. -* add_ <7>: HashedCollection-accessing. -* add_ <8>: Dictionary-accessing. -* add_ <9>: Collection-adding. -* add_ <10>: BindingDictionary-forward declarations. -* add_ <11>: Bag-adding. -* add_: ArrayedCollection-basic. -* add_after_: OrderedCollection-adding. -* add_afterIndex_ <1>: SortedCollection-disabled. -* add_afterIndex_ <2>: RunArray-adding. -* add_afterIndex_: OrderedCollection-adding. -* add_before_: OrderedCollection-adding. -* add_beforeIndex_: OrderedCollection-adding. -* add_withOccurrences_: Bag-adding. -* addAll_ <1>: OrderedCollection-adding. -* addAll_: Collection-adding. -* addAll_after_: OrderedCollection-adding. -* addAll_afterIndex_ <1>: SortedCollection-disabled. -* addAll_afterIndex_ <2>: RunArray-adding. -* addAll_afterIndex_: OrderedCollection-adding. -* addAll_before_: OrderedCollection-adding. -* addAll_beforeIndex_: OrderedCollection-adding. -* addAllFirst_ <1>: SortedCollection-disabled. -* addAllFirst_ <2>: RunArray-adding. -* addAllFirst_: OrderedCollection-adding. -* addAllLast_ <1>: SortedCollection-disabled. -* addAllLast_ <2>: RunArray-adding. -* addAllLast_: OrderedCollection-adding. -* addClassVarName_ <1>: Metaclass-delegation. -* addClassVarName_: Class-accessing instances and variables. -* addDays_: Date-basic. -* addDependent_ <1>: UndefinedObject-dependents access. -* addDependent_: Object-dependents access. -* addFeature_: SystemDictionary-special accessing. -* addFirst_ <1>: SortedCollection-disabled. -* addFirst_ <2>: RunArray-adding. -* addFirst_ <3>: OrderedCollection-adding. -* addFirst_: LinkedList-adding. -* addInstVarName_: Behavior-instance variables. -* addLast_ <1>: SortedCollection-disabled. -* addLast_ <2>: RunArray-adding. -* addLast_ <3>: OrderedCollection-adding. -* addLast_: LinkedList-adding. -* addLibrary_: DLD class-dynamic linking. -* addModule_: DLD class-dynamic linking. -* address <1>: CObject-accessing. -* address: CFunctionDescriptor-accessing. -* address_ <1>: CType-C instance creation. -* address_ <2>: CObject-accessing. -* address_ <3>: CObject class-instance creation. -* address_: CFunctionDescriptor-accessing. -* addressAt_: CObject-pointer-like behavior. -* addressOf_ <1>: ObjectMemory class-builtins. -* addressOf_: CFunctionDescriptor class-testing. -* addressOfOOP_: ObjectMemory class-builtins. -* addSelector_withMethod_: Behavior-method dictionary. -* addSharedPool_ <1>: Metaclass-delegation. -* addSharedPool_: Class-accessing instances and variables. -* addSubclass_: Behavior-creating a class hierarchy. -* addSubspace_: AbstractNamespace-namespace hierarchy. -* addTime_: Time-arithmetic. -* addToBeFinalized: Object-finalization. -* after_: SequenceableCollection-basic. -* alignof <1>: CUShort-accessing. -* alignof <2>: CUShort class-accessing. -* alignof <3>: CULong-accessing. -* alignof <4>: CULong class-accessing. -* alignof <5>: CUInt-accessing. -* alignof <6>: CUInt class-accessing. -* alignof <7>: CUChar-accessing. -* alignof <8>: CUChar class-getting info. -* alignof <9>: CType-accessing. -* alignof <10>: CSmalltalk-accessing. -* alignof <11>: CSmalltalk class-accessing. -* alignof <12>: CShort-accessing. -* alignof <13>: CShort class-accessing. -* alignof <14>: CPtr-accessing. -* alignof <15>: CLong-accessing. -* alignof <16>: CLong class-accessing. -* alignof <17>: CInt-accessing. -* alignof <18>: CInt class-accessing. -* alignof <19>: CFloat-accessing. -* alignof <20>: CFloat class-accessing. -* alignof <21>: CDouble-accessing. -* alignof <22>: CDouble class-accessing. -* alignof <23>: CCompound class-subclass creation. -* alignof <24>: CChar-accessing. -* alignof <25>: CChar class-accessing. -* alignof <26>: CArrayCType-accessing. -* alignof <27>: CArray-accessing. -* alignof: CAggregate class-accessing. -* alignTo_: Integer-extension. -* aliveObjectsDo_: WeakArray-accessing. -* allAssociations: AbstractNamespace-accessing. -* allBehaviorsDo_: AbstractNamespace-accessing. -* allBlocksDo_: CompiledMethod-accessing. -* allClassesDo_: AbstractNamespace-accessing. -* allClassObjectsDo_: AbstractNamespace-accessing. -* allClassVarNames <1>: Metaclass-delegation. -* allClassVarNames <2>: Class-accessing instances and variables. -* allClassVarNames: Behavior-accessing instances and variables. -* allExceptionsDo_ <1>: TrappableEvent-enumerating. -* allExceptionsDo_ <2>: ExceptionSet-enumerating. -* allExceptionsDo_ <3>: Exception class-interoperability with TrappableEvents. -* allExceptionsDo_: CoreException-enumerating. -* allFiles: Package-accessing. -* allInstances: Behavior-accessing instances and variables. -* allInstancesDo_: Behavior-enumerating. -* allInstVarNames: Behavior-accessing instances and variables. -* allLiterals: CompiledMethod-accessing. -* allMask_: Integer-bit operators. -* allMetaclassesDo_: AbstractNamespace-accessing. -* alloc_: CObject class-instance creation. -* alloc_type_: CObject class-instance creation. -* allocFailures: ObjectMemory-accessing. -* allocMatches: ObjectMemory-accessing. -* allocProbes: ObjectMemory-accessing. -* allocSplits: ObjectMemory-accessing. -* allOwners: Object-built ins. -* allSatisfy_: Collection-enumeration. -* allSelectors: Behavior-accessing the methodDictionary. -* allSharedPools <1>: Metaclass-delegation. -* allSharedPools: Behavior-accessing instances and variables. -* allSubassociationsDo_: AbstractNamespace-namespace hierarchy. -* allSubclasses: Behavior-accessing class hierarchy. -* allSubclassesDo_: Behavior-enumerating. -* allSubinstancesDo_: Behavior-enumerating. -* allSubspaces: AbstractNamespace-namespace hierarchy. -* allSubspacesDo_: AbstractNamespace-namespace hierarchy. -* allSuperclasses: Behavior-accessing class hierarchy. -* allSuperclassesDo_: Behavior-enumerating. -* allSuperspaces: AbstractNamespace-namespace hierarchy. -* allSuperspacesDo_: AbstractNamespace-namespace hierarchy. -* amountToTranslateWithin_: Rectangle-rectangle functions. -* and_ <1>: True-basic. -* and_ <2>: False-basic. -* and_: Boolean-basic. -* anyMask_: Integer-bit operators. -* anyOne <1>: SequenceableCollection-enumerating. -* anyOne: Collection-enumeration. -* anySatisfy_: Collection-enumeration. -* append: FileDescriptor class-instance creation. -* append_to_: Directory class-file name management. -* arcCos <1>: Number-misc math. -* arcCos: Float-built ins. -* arcSin <1>: Number-misc math. -* arcSin: Float-built ins. -* arcTan <1>: Point-point functions. -* arcTan <2>: Number-misc math. -* arcTan: Float-built ins. -* area: Rectangle-rectangle functions. -* areasOutside_: Rectangle-rectangle functions. -* argument <1>: Signal-accessing. -* argument: Message-accessing. -* argumentCount <1>: Signal-accessing. -* argumentCount: BlockClosure-accessing. -* arguments <1>: SystemDictionary-miscellaneous. -* arguments <2>: Signal-accessing. -* arguments: Message-accessing. -* arguments_: Message-accessing. -* arithmeticError_: Number-error raising. -* arrayType_: CType-accessing. -* article <1>: Class-printing. -* article: Behavior-support for lightweight classes. -* asArray <1>: WeakArray-conversion. -* asArray: Collection-converting. -* asBag: Collection-converting. -* asByteArray <1>: String-converting. -* asByteArray <2>: Collection-converting. -* asByteArray: CharacterArray-converting. -* asCBooleanValue <1>: True-C hacks. -* asCBooleanValue <2>: False-C hacks. -* asCBooleanValue: Boolean-C hacks. -* asCData_ <1>: String-built ins. -* asCData_: ByteArray-built ins. -* asCharacter: Integer-converting. -* asciiValue: Character-built ins. -* asciiValue_: Character class-built ins. -* asClass <1>: Metaclass-testing functionality. -* asClass <2>: ClassDescription-conversion. -* asClass <3>: Class-testing functionality. -* asClass: Behavior-support for lightweight classes. -* asClassPoolKey: CharacterArray-converting. -* asDate: DateTime-splitting in dates & times. -* asExactFraction: Float-coercing. -* asFloat <1>: Number-converting. -* asFloat: Float-coercing. -* asFloatD <1>: SmallInteger-built ins. -* asFloatD <2>: ScaledDecimal-coercion. -* asFloatD <3>: Number-converting. -* asFloatD <4>: LargePositiveInteger-converting. -* asFloatD <5>: LargeNegativeInteger-converting. -* asFloatD <6>: Fraction-converting. -* asFloatD <7>: FloatQ-built ins. -* asFloatD <8>: FloatE-built ins. -* asFloatD: FloatD-coercing. -* asFloatE <1>: SmallInteger-built ins. -* asFloatE <2>: ScaledDecimal-coercion. -* asFloatE <3>: Number-converting. -* asFloatE <4>: LargePositiveInteger-converting. -* asFloatE <5>: LargeNegativeInteger-converting. -* asFloatE <6>: Fraction-converting. -* asFloatE <7>: FloatQ-built ins. -* asFloatE <8>: FloatE-coercing. -* asFloatE: FloatD-built ins. -* asFloatQ <1>: SmallInteger-built ins. -* asFloatQ <2>: ScaledDecimal-coercion. -* asFloatQ <3>: Number-converting. -* asFloatQ <4>: LargePositiveInteger-converting. -* asFloatQ <5>: LargeNegativeInteger-converting. -* asFloatQ <6>: Fraction-converting. -* asFloatQ <7>: FloatQ-coercing. -* asFloatQ <8>: FloatE-built ins. -* asFloatQ: FloatD-built ins. -* asFraction <1>: ScaledDecimal-coercion. -* asFraction <2>: Integer-converting. -* asFraction <3>: Fraction-converting. -* asFraction: Float-coercing. -* asGlobalKey: CharacterArray-converting. -* asInteger <1>: Number-truncation and round off. -* asInteger <2>: CharacterArray-converting. -* asInteger: Character-built ins. -* asLocal: DateTime-time zones. -* asLowercase <1>: CharacterArray-converting. -* asLowercase: Character-coercion methods. -* asMetaclass: ClassDescription-conversion. -* asNumber: CharacterArray-converting. -* asObject <1>: SmallInteger-built ins. -* asObject: LargeInteger-disabled. -* asObjectNoFail <1>: SmallInteger-built ins. -* asObjectNoFail: LargeInteger-disabled. -* asOop: Object-built ins. -* asOrderedCollection: Collection-converting. -* asPoint <1>: Point-converting. -* asPoint: Number-point creation. -* asPoolKey: CharacterArray-converting. -* asRectangle <1>: Point-converting. -* asRectangle: Number-converting. -* asRunArray: Collection-converting. -* asScaledDecimal_ <1>: Number-converting. -* asScaledDecimal_: Integer-converting. -* asScaledDecimal_scale_: Number-converting. -* asSeconds <1>: Time-accessing (non ANSI & for Durations). -* asSeconds <2>: DateTime-computations. -* asSeconds: Date-date computations. -* asSet <1>: Collection-converting. -* asSet: Bag-enumerating the elements of a collection. -* assigns_ <1>: CompiledMethod-testing. -* assigns_: CompiledCode-testing accesses. -* associationAt_: Dictionary-accessing. -* associationAt_ifAbsent_ <1>: Namespace-overrides for superspaces. -* associationAt_ifAbsent_ <2>: LookupTable-accessing. -* associationAt_ifAbsent_: Dictionary-accessing. -* associationsDo_ <1>: Namespace-overrides for superspaces. -* associationsDo_ <2>: LookupTable-enumerating. -* associationsDo_: Dictionary-dictionary enumerating. -* asSortedCollection: Collection-converting. -* asSortedCollection_: Collection-converting. -* asString <1>: Symbol-converting. -* asString <2>: String-converting. -* asString <3>: FileSegment-basic. -* asString <4>: CharacterArray-converting. -* asString <5>: Character-coercion methods. -* asString: ByteArray-converting. -* asSymbol <1>: Symbol-converting. -* asSymbol <2>: String-converting. -* asSymbol <3>: CharacterArray-converting. -* asSymbol: Character-coercion methods. -* asTime: DateTime-splitting in dates & times. -* asUppercase <1>: CharacterArray-converting. -* asUppercase: Character-coercion methods. -* asUTC: DateTime-time zones. -* asValue: Object-conversion. -* asyncCallFrom_: CFunctionDescriptor-calling. -* asyncCallNoRetryFrom_: CFunctionDescriptor-calling. -* at_ <1>: WeakArray-accessing. -* at_ <2>: VFS.VFSHandler-directory operations. -* at_ <3>: VFS.ArchiveMemberHandler-directory operations. -* at_ <4>: VFS.ArchiveFileHandler-directory operations. -* at_ <5>: String-built ins. -* at_ <6>: SmallInteger-builtins. -* at_ <7>: RunArray-accessing. -* at_ <8>: OrderedCollection-accessing. -* at_ <9>: Object-built ins. -* at_ <10>: Memory class-accessing. -* at_ <11>: MappedCollection-basic. -* at_ <12>: LinkedList-accessing. -* at_ <13>: Link-iteration. -* at_ <14>: LargeZeroInteger-accessing. -* at_ <15>: LargeInteger-built-ins. -* at_ <16>: LargeArrayedCollection-accessing. -* at_ <17>: Interval-basic. -* at_ <18>: HashedCollection-accessing. -* at_ <19>: Directory-accessing. -* at_ <20>: Dictionary-accessing. -* at_ <21>: DateTime-splitting in dates & times. -* at_: CObject-pointer-like behavior. -* at_ifAbsent_ <1>: WeakValueLookupTable-hacks. -* at_ifAbsent_ <2>: SequenceableCollection-basic. -* at_ifAbsent_ <3>: Namespace-overrides for superspaces. -* at_ifAbsent_ <4>: LookupTable-accessing. -* at_ifAbsent_: Dictionary-accessing. -* at_ifAbsentPut_: Dictionary-accessing. -* at_ifPresent_ <1>: WeakValueLookupTable-hacks. -* at_ifPresent_ <2>: Namespace-overrides for superspaces. -* at_ifPresent_ <3>: LookupTable-accessing. -* at_ifPresent_: Dictionary-accessing. -* at_put_ <1>: WeakKeyDictionary-accessing. -* at_put_ <2>: WeakArray-accessing. -* at_put_ <3>: String-built ins. -* at_put_ <4>: SortedCollection-disabled. -* at_put_ <5>: SmallInteger-builtins. -* at_put_ <6>: RunArray-accessing. -* at_put_ <7>: OrderedCollection-accessing. -* at_put_ <8>: Object-built ins. -* at_put_ <9>: MethodDictionary-adding. -* at_put_ <10>: Memory class-accessing. -* at_put_ <11>: MappedCollection-basic. -* at_put_ <12>: LookupTable-accessing. -* at_put_ <13>: LinkedList-accessing. -* at_put_ <14>: Link-iteration. -* at_put_ <15>: LargeInteger-built-ins. -* at_put_ <16>: LargeArrayedCollection-accessing. -* at_put_ <17>: Interval-basic. -* at_put_ <18>: HashedCollection-accessing. -* at_put_ <19>: Dictionary-accessing. -* at_put_ <20>: CompiledCode-accessing. -* at_put_ <21>: CObject-pointer-like behavior. -* at_put_: BindingDictionary-forward declarations. -* at_put_type_: CObject-C data access. -* at_type_: CObject-C data access. -* atAll_put_ <1>: WeakArray-accessing. -* atAll_put_: SequenceableCollection-basic. -* atAllPut_ <1>: WeakArray-accessing. -* atAllPut_: SequenceableCollection-basic. -* atEnd <1>: TokenStream-basic. -* atEnd <2>: Stream-testing. -* atEnd <3>: Random-basic. -* atEnd <4>: PositionableStream-testing. -* atEnd <5>: ObjectDumper-stream interface. -* atEnd <6>: FileStream-testing. -* atEnd: FileDescriptor-testing. -* backspace: Character class-constants. -* backtrace <1>: SystemDictionary-miscellaneous. -* backtrace <2>: ContextPart-printing. -* backtrace: ContextPart class-exception handling. -* backtraceOn_ <1>: ContextPart-printing. -* backtraceOn_: ContextPart class-exception handling. -* badReturnError: Object-exception handling. -* basicAt_ <1>: String-built ins. -* basicAt_ <2>: SmallInteger-builtins. -* basicAt_ <3>: Object-built ins. -* basicAt_: CharacterArray-basic. -* basicAt_put_ <1>: String-built ins. -* basicAt_put_ <2>: SmallInteger-builtins. -* basicAt_put_ <3>: Object-built ins. -* basicAt_put_: CharacterArray-basic. -* basicAtEnd: PositionableStream-testing. -* basicBacktrace: SystemDictionary-builtins. -* basicFlush: FileStream-buffering. -* basicLeftShift_: LargeInteger-primitive operations. -* basicMessageText: Signal-accessing. -* basicNew: Behavior-built ins. -* basicNew_: Behavior-built ins. -* basicNewInFixedSpace: Behavior-built ins. -* basicNewInFixedSpace_: Behavior-built ins. -* basicPosition_: PositionableStream-positioning. -* basicPrint: Object-built ins. -* basicPrintNl: Object-printing. -* basicPrintOn_: Object-printing. -* basicRightShift_: LargeInteger-primitive operations. -* basicSize: Object-built ins. -* become_: Object-built ins. -* beConsistent <1>: SortedCollection-enumerating. -* beConsistent: Collection-enumeration. -* before_: SequenceableCollection-basic. -* bell: Character class-constants. -* between_and_ <1>: Random-basic. -* between_and_ <2>: Random class-shortcuts. -* between_and_: Magnitude-misc methods. -* bigEndian: Memory class-accessing. -* bigObjectThreshold: ObjectMemory class-builtins. -* bigObjectThreshold_: ObjectMemory class-builtins. -* binaryRepresentationObject <1>: VariableBinding-saving and loading. -* binaryRepresentationObject <2>: Object-saving and loading. -* binaryRepresentationObject <3>: CompiledMethod-saving and loading. -* binaryRepresentationObject: CompiledBlock-saving and loading. -* binaryRepresentationVersion: Class-saving and loading. -* binding: ClassDescription-conversion. -* bindingFor_: Class-accessing instances and variables. -* bindWith_: CharacterArray-string processing. -* bindWith_with_: CharacterArray-string processing. -* bindWith_with_with_: CharacterArray-string processing. -* bindWith_with_with_with_: CharacterArray-string processing. -* bindWithArguments_: CharacterArray-string processing. -* binomial_: Integer-math methods. -* bitAnd_ <1>: SmallInteger-built ins. -* bitAnd_: LargeInteger-bit operations. -* bitAt_ <1>: LargeInteger-bit operations. -* bitAt_: Integer-bit operators. -* bitAt_put_: Integer-bit operators. -* bitClear_: Integer-bit operators. -* bitInvert <1>: LargeInteger-bit operations. -* bitInvert: Integer-bit operators. -* bitOr_ <1>: SmallInteger-built ins. -* bitOr_: LargeInteger-bit operations. -* bits: SmallInteger class-getting limits. -* bitShift_ <1>: SmallInteger-built ins. -* bitShift_: LargeInteger-bit operations. -* bitXor_ <1>: SmallInteger-built ins. -* bitXor_: LargeInteger-bit operations. -* block: BlockClosure-accessing. -* block_ <1>: BlockClosure-accessing. -* block_: BlockClosure class-instance creation. -* blockAt_: CompiledCode-accessing. -* blockCopy_: BlockClosure-built ins. -* bottom: Rectangle-accessing. -* bottom_: Rectangle-accessing. -* bottomCenter: Rectangle-accessing. -* bottomLeft: Rectangle-accessing. -* bottomLeft_: Rectangle-accessing. -* bottomRight: Rectangle-accessing. -* bottomRight_: Rectangle-accessing. -* breakpoint_return_: Object-debugging. -* broadcast_: Object-change and update. -* broadcast_with_: Object-change and update. -* broadcast_with_with_: Object-change and update. -* broadcast_withArguments_: Object-change and update. -* broadcast_withBlock_: Object-change and update. -* bufferSize: FileStream-buffering. -* bufferSize_: FileStream-buffering. -* builtFiles: Package-accessing. -* builtFilesFor_: PackageLoader class-accessing. -* byteAt_: ByteArray-built ins. -* byteAt_put_: ByteArray-built ins. -* bytecodeAt_: CompiledCode-accessing. -* bytecodeAt_put_: CompiledCode-accessing. -* byteCodeCounter: SystemDictionary-builtins. -* bytes_from_compare_: LargePositiveInteger-helper byte-level methods. -* bytes_from_subtract_: LargePositiveInteger-helper byte-level methods. -* bytes_multiply_: LargePositiveInteger-helper byte-level methods. -* bytesLeftShift_: LargePositiveInteger-helper byte-level methods. -* bytesLeftShift_big_: LargePositiveInteger-helper byte-level methods. -* bytesLeftShift_n_: LargePositiveInteger-helper byte-level methods. -* bytesPerOOP: ObjectMemory-accessing. -* bytesPerOTE: ObjectMemory-accessing. -* bytesRightShift_big_: LargePositiveInteger-helper byte-level methods. -* bytesRightShift_n_: LargePositiveInteger-helper byte-level methods. -* bytesTrailingZeros_: LargePositiveInteger-helper byte-level methods. -* caller: BlockContext-accessing. -* callFrom_into_: CFunctionDescriptor-calling. -* callNoRetryFrom_into_: CFunctionDescriptor-calling. -* callouts: Package-accessing. -* calloutsFor_: PackageLoader class-accessing. -* canCache: NetClients.URL-testing. -* canLoad_: PackageLoader class-testing. -* canRead: FileDescriptor-accessing. -* canUnderstand_: Behavior-testing the method dictionary. -* canWrite: FileDescriptor-accessing. -* capacity <1>: HashedCollection-testing collections. -* capacity: Collection-testing collections. -* castTo_: CObject-conversion. -* categoriesFor_are_: Class-instance creation - alternative. -* category <1>: MethodInfo-accessing. -* category <2>: Metaclass-delegation. -* category: Class-accessing instances and variables. -* category_ <1>: MethodInfo-accessing. -* category_: Class-accessing instances and variables. -* ceiling <1>: ScaledDecimal-coercion. -* ceiling <2>: Integer-converting. -* ceiling <3>: Fraction-coercing. -* ceiling: Float-built ins. -* center: Rectangle-accessing. -* changeClassTo_: Object-built ins. -* changed: Object-change and update. -* changed_: Object-change and update. -* changePriorityListOf_to_suspend_: ProcessorScheduler-basic. -* charAt_ <1>: Memory class-accessing. -* charAt_: ByteArray-more advanced accessing. -* charAt_put_ <1>: Memory class-accessing. -* charAt_put_: ByteArray-more advanced accessing. -* checkError: File class-file operations. -* checkError_: File class-file operations. -* checkIndexableBounds_: Object-built ins. -* checkIndexableBounds_put_: Object-built ins. -* chiSquare: Random-testing. -* chiSquare_range_: Random-testing. -* class: Object-built ins. -* class_from_: Autoload class-instance creation. -* class_in_from_: Autoload class-instance creation. -* classAt_: AbstractNamespace-accessing. -* classAt_ifAbsent_: AbstractNamespace-accessing. -* classify_under_: ClassDescription-organization of messages and classes. -* classPool <1>: Metaclass-delegation. -* classPool <2>: Class-accessing instances and variables. -* classPool: Behavior-accessing instances and variables. -* classVariableString: ClassDescription-printing. -* classVarNames <1>: Metaclass-delegation. -* classVarNames <2>: Class-accessing instances and variables. -* classVarNames: Behavior-accessing instances and variables. -* clean: FileStream-buffering. -* clearBit_: Integer-bit operators. -* clearGCFlag_: WeakArray-accessing. -* client: ContextPart-accessing. -* clockPrecision: DateTime class-information. -* close <1>: Stream-providing consistent protocols. -* close <2>: PositionableStream-accessing-reading. -* close: FileDescriptor-basic. -* closeDir_: VFS.VFSHandler-C functions. -* closeTo_: Number-testing. -* cObjectType: CType-accessing. -* cObjectType_: CType class-C instance creation. -* cObjStoredType <1>: CString-accessing. -* cObjStoredType: CScalar-accessing. -* codePoint: Character-built ins. -* codePoint_: Character class-built ins. -* coerce_ <1>: ScaledDecimal-coercion. -* coerce_ <2>: Number-converting. -* coerce_ <3>: Number class-converting. -* coerce_ <4>: LargeInteger-coercion. -* coerce_ <5>: Integer-converting. -* coerce_ <6>: Integer class-converting. -* coerce_ <7>: Fraction-coercing. -* coerce_ <8>: Fraction class-converting. -* coerce_ <9>: FloatQ-coercing. -* coerce_ <10>: FloatQ class-converting. -* coerce_ <11>: FloatE-coercing. -* coerce_ <12>: FloatE class-converting. -* coerce_ <13>: FloatD-coercing. -* coerce_: FloatD class-converting. -* collect_ <1>: MappedCollection-basic. -* collect_ <2>: Interval-basic. -* collect_ <3>: Dictionary-dictionary enumerating. -* collect_ <4>: Collection-enumeration. -* collect_: ArrayedCollection-enumerating the elements of a collection. -* collection: SystemExceptions.IndexOutOfRange-accessing. -* collection_: SystemExceptions.IndexOutOfRange-accessing. -* collection_map_: MappedCollection class-instance creation. -* comment <1>: Metaclass-delegation. -* comment: Class-accessing instances and variables. -* comment_: Class-accessing instances and variables. -* compact: ObjectMemory class-builtins. -* compile_: Behavior-method dictionary. -* compile_classified_: ClassDescription-compiling. -* compile_classified_ifError_: ClassDescription-compiling. -* compile_classified_notifying_: ClassDescription-compiling. -* compile_ifError_: Behavior-method dictionary. -* compile_notifying_: Behavior-method dictionary. -* compileAll: Behavior-method dictionary. -* compileAll_: Behavior-method dictionary. -* compileAllSubclasses: Behavior-method dictionary. -* compileAllSubclasses_: Behavior-method dictionary. -* compileDeclaration_ <1>: CUnion class-subclass creation. -* compileDeclaration_ <2>: CStruct class-subclass creation. -* compileDeclaration_: CCompound class-subclass creation. -* compileDeclaration_inject_into_: CCompound class-subclass creation. -* compiledMethodAt_: Behavior-accessing the methodDictionary. -* compiledMethodAt_ifAbsent_: Behavior-accessing the methodDictionary. -* compilerClass: Behavior-pluggable behavior (not yet implemented). -* compileSize_align_: CCompound class-subclass creation. -* compileString_: Behavior-built ins. -* compileString_ifError_: Behavior-built ins. -* compress: LargeArrayedCollection-accessing. -* computeAggregateType_block_: CCompound class-subclass creation. -* computeArrayType_block_: CCompound class-subclass creation. -* computePtrType_block_: CCompound class-subclass creation. -* computeTypeString_block_: CCompound class-subclass creation. -* conform_: Collection-enumeration. -* construct_: NetClients.URL-utilities. -* contains_ <1>: Rectangle-testing. -* contains_: Collection-enumeration. -* containsLiteral_: CompiledCode-testing accesses. -* containsPoint_: Rectangle-testing. -* contents <1>: WriteStream-accessing-writing. -* contents <2>: Stream-accessing-reading. -* contents <3>: PositionableStream-accessing-reading. -* contents <4>: MappedCollection-basic. -* contents <5>: FileDescriptor-basic. -* contents <6>: File-file operations. -* contents: Directory-enumerating. -* continue_: ContextPart-built ins. -* contractTo_: CharacterArray-string processing. -* convertFromVersion_withFixedVariables_indexedVariables_for_: Class-saving and loading. -* copy <1>: UndefinedObject-basic. -* copy <2>: Rectangle-copying. -* copy <3>: Object-copying. -* copy: BindingDictionary-copying. -* copy_from_: ClassDescription-copying. -* copy_from_classified_: ClassDescription-copying. -* copyAll_from_: ClassDescription-copying. -* copyAll_from_classified_: ClassDescription-copying. -* copyAllCategoriesFrom_: ClassDescription-copying. -* copyCategory_from_: ClassDescription-copying. -* copyCategory_from_classified_: ClassDescription-copying. -* copyEmpty_ <1>: SortedCollection-copying. -* copyEmpty_ <2>: BindingDictionary-copying. -* copyEmpty_: AbstractNamespace-copying. -* copyEmptyForCollect: BindingDictionary-copying. -* copyFrom_: SequenceableCollection-copying SequenceableCollections. -* copyFrom_to_ <1>: SequenceableCollection-copying SequenceableCollections. -* copyFrom_to_ <2>: PositionableStream-accessing-reading. -* copyFrom_to_ <3>: FileStream-basic. -* copyFrom_to_ <4>: FileDescriptor-basic. -* copyFrom_to_: ArrayedCollection-basic. -* copyReplaceAll_with_ <1>: SequenceableCollection-copying SequenceableCollections. -* copyReplaceAll_with_: ArrayedCollection-copying Collections. -* copyReplaceFrom_to_with_ <1>: SequenceableCollection-copying SequenceableCollections. -* copyReplaceFrom_to_with_: ArrayedCollection-copying Collections. -* copyReplaceFrom_to_withObject_ <1>: SequenceableCollection-copying SequenceableCollections. -* copyReplaceFrom_to_withObject_: ArrayedCollection-copying Collections. -* copyReplacing_withObject_: Collection-copying Collections. -* copyUpTo_: SequenceableCollection-copying SequenceableCollections. -* copyWith_ <1>: Collection-copying Collections. -* copyWith_: ArrayedCollection-basic. -* copyWithout_ <1>: Collection-copying Collections. -* copyWithout_: ArrayedCollection-basic. -* copyWithoutAuxiliaryParts: NetClients.URL-copying. -* copyWithoutFragment: NetClients.URL-copying. -* coreException: Exception class-interoperability with TrappableEvents. -* corner: Rectangle-accessing. -* corner_ <1>: Rectangle-accessing. -* corner_: Point-converting. -* cos <1>: Number-misc math. -* cos: Float-built ins. -* costOfNewIndex: LargeByteArray-overridden. -* cr <1>: TextCollector-accessing. -* cr <2>: Stream-character writing. -* cr: Character class-constants. -* create: FileDescriptor class-instance creation. -* create_: Directory class-file operations. -* createDir_ <1>: VFS.VFSHandler-directory operations. -* createDir_ <2>: VFS.RealFileHandler-directory operations. -* createDir_ <3>: VFS.ExternalArchiveFileHandler-members. -* createDir_ <4>: VFS.ArchiveMemberHandler-directory operations. -* createDir_: VFS.ArchiveFileHandler-directory operations. -* createGetMethod_ <1>: ClassDescription-organization of messages and classes. -* createGetMethod_: Behavior-method dictionary. -* createGetMethod_default_ <1>: ClassDescription-organization of messages and classes. -* createGetMethod_default_: Behavior-method dictionary. -* createSetMethod_ <1>: ClassDescription-organization of messages and classes. -* createSetMethod_: Behavior-method dictionary. -* creationTime <1>: VFS.VFSHandler-accessing. -* creationTime <2>: VFS.RealFileHandler-accessing. -* creationTime <3>: VFS.ArchiveMemberHandler-accessing. -* creationTime: File-accessing. -* critical_ <1>: Semaphore-mutual exclusion. -* critical_: RecursionLock-mutual exclusion. -* crTab: Stream-character writing. -* current <1>: ObjectMemory class-accessing. -* current: Namespace class-accessing. -* current_: Namespace class-accessing. -* cutAt_: LargeArraySubpart-modifying. -* dateAndTimeNow: Date class-instance creation (Blue Book). -* day: Date-compatibility (non-ANSI). -* dayName: Date-compatibility (non-ANSI). -* dayOfMonth: Date-date computations. -* dayOfWeek <1>: DateTime-computations. -* dayOfWeek: Date-date computations. -* dayOfWeek_: Date class-basic. -* dayOfWeekAbbreviation: Date-date computations. -* dayOfWeekName: Date-date computations. -* dayOfYear: Date-date computations. -* days: Duration-arithmetics. -* days_: Duration class-instance creation. -* days_hours_minutes_seconds_: Duration class-instance creation. -* daysFromBaseDay: Date-date computations. -* daysInMonth: Date-date computations. -* daysInMonth_forYear_: Date class-basic. -* daysInYear: Date-date computations. -* daysInYear_: Date class-basic. -* daysLeftInMonth: Date-date computations. -* daysLeftInYear: Date-date computations. -* debug: SystemDictionary-builtins. -* debuggerClass <1>: Metaclass-delegation. -* debuggerClass <2>: ContextPart-debugging. -* debuggerClass: Behavior-pluggable behavior (not yet implemented). -* decimalDigits <1>: FloatQ class-characterization. -* decimalDigits <2>: FloatE class-characterization. -* decimalDigits: FloatD class-characterization. -* declarationTrace: SystemDictionary-builtins. -* declarationTrace_: SystemDictionary-builtins. -* decode_: NetClients.URL class-encoding URLs. -* decodedFields: NetClients.URL-accessing. -* decodedFile: NetClients.URL-accessing. -* decodedFragment: NetClients.URL-accessing. -* decompile_: Behavior-method dictionary. -* decompilerClass: Behavior-pluggable behavior (not yet implemented). -* decr: CObject-pointer-like behavior. -* decrBy_: CObject-pointer-like behavior. -* deepCopy <1>: WeakArray-conversion. -* deepCopy <2>: UndefinedObject-basic. -* deepCopy <3>: Symbol-basic. -* deepCopy <4>: RunArray-copying. -* deepCopy <5>: Object-copying. -* deepCopy <6>: Number-copying. -* deepCopy <7>: LookupTable-copying. -* deepCopy <8>: HashedCollection-copying. -* deepCopy <9>: ContextPart-copying. -* deepCopy <10>: CompiledCode-copying. -* deepCopy <11>: Boolean-overriding. -* deepCopy <12>: BlockClosure-overriding. -* deepCopy: BindingDictionary-copying. -* defaultAction <1>: Signal-exception handling. -* defaultAction <2>: Notification-exception description. -* defaultAction: Exception-exception description. -* defaultElement <1>: LargeWordArray-overridden. -* defaultElement: LargeByteArray-overridden. -* defaultHandler: CoreException-accessing. -* defaultHandler_: CoreException-accessing. -* defaultSortBlock: SortedCollection class-hacking. -* define_: BindingDictionary-accessing. -* defineAsyncCFunc_withSelectorArgs_args_ <1>: ClassDescription-organization of messages and classes. -* defineAsyncCFunc_withSelectorArgs_args_: Behavior-method dictionary. -* defineCFunc_as_: DLD class-C functions. -* defineCFunc_withSelectorArgs_returning_args_ <1>: ClassDescription-organization of messages and classes. -* defineCFunc_withSelectorArgs_returning_args_: Behavior-method dictionary. -* definedKeys: AbstractNamespace-overrides for superspaces. -* defineExternFunc_: DLD class-dynamic linking. -* definesKey_: AbstractNamespace-overrides for superspaces. -* degreesToRadians: Number-converting. -* denominator <1>: Integer-accessing. -* denominator: Fraction-accessing. -* denormalized: Float class-characterization. -* dependencies: Object class-initialization. -* dependencies_: Object class-initialization. -* dependents: Object-dependents access. -* deref_: Memory class-accessing. -* description <1>: ZeroDivide-description. -* description <2>: Warning-exception description. -* description <3>: SystemExceptions.WrongClass-accessing. -* description <4>: SystemExceptions.WrongArgumentCount-accessing. -* description <5>: SystemExceptions.VMError-accessing. -* description <6>: SystemExceptions.UserInterrupt-accessing. -* description <7>: SystemExceptions.SubclassResponsibility-accessing. -* description <8>: SystemExceptions.ShouldNotImplement-accessing. -* description <9>: SystemExceptions.ReadOnlyObject-accessing. -* description <10>: SystemExceptions.ProcessTerminated-accessing. -* description <11>: SystemExceptions.ProcessBeingTerminated-accessing. -* description <12>: SystemExceptions.PrimitiveFailed-accessing. -* description <13>: SystemExceptions.NotYetImplemented-accessing. -* description <14>: SystemExceptions.NotIndexable-accessing. -* description <15>: SystemExceptions.NotImplemented-accessing. -* description <16>: SystemExceptions.NotFound-accessing. -* description <17>: SystemExceptions.NoRunnableProcess-accessing. -* description <18>: SystemExceptions.MutationError-accessing. -* description <19>: SystemExceptions.InvalidValue-accessing. -* description <20>: SystemExceptions.InvalidSize-accessing. -* description <21>: SystemExceptions.InvalidProcessState-accessing. -* description <22>: SystemExceptions.IndexOutOfRange-accessing. -* description <23>: SystemExceptions.FileError-accessing. -* description <24>: SystemExceptions.EndOfStream-accessing. -* description <25>: SystemExceptions.EmptyCollection-accessing. -* description <26>: SystemExceptions.CInterfaceError-accessing. -* description <27>: SystemExceptions.BadReturn-accessing. -* description <28>: SystemExceptions.ArgumentOutOfRange-accessing. -* description <29>: SystemExceptions.AlreadyDefined-accessing. -* description <30>: Signal-accessing. -* description <31>: Notification-exception description. -* description <32>: MessageNotUnderstood-description. -* description <33>: Halt-description. -* description <34>: Exception-exception description. -* description <35>: Error-exception description. -* description <36>: CoreException-accessing. -* description: ArithmeticError-description. -* description_: CoreException-accessing. -* detect_: Collection-enumeration. -* detect_ifNone_: Collection-enumeration. -* digitAt_: LargeInteger-built-ins. -* digitAt_put_: LargeInteger-built-ins. -* digitLength: LargeInteger-built-ins. -* digitValue: Character-converting. -* digitValue_: Character class-instance creation. -* directory: Package-accessing. -* directory_forBaseDir_: Package-accessing. -* directoryAt_: Directory-accessing. -* directoryFor_: PackageLoader class-accessing. -* disableInterrupts: ProcessorScheduler-built ins. -* disableProxyFor_: ObjectDumper class-establishing proxy classes. -* discardTranslation: CompiledCode-translation. -* dispatchTo_with_: CompiledCode-decoding bytecodes. -* display: Object-printing. -* display_: Stream-printing. -* displayNl: Object-printing. -* displayOn_ <1>: Symbol-storing. -* displayOn_ <2>: ScaledDecimal-printing. -* displayOn_ <3>: Object-printing. -* displayOn_ <4>: Integer-printing. -* displayOn_ <5>: CharacterArray-printing. -* displayOn_: Character-printing. -* displayString <1>: Symbol-storing. -* displayString <2>: Object-printing. -* displayString <3>: Integer-printing. -* displayString: CharacterArray-printing. -* dist_: Point-point functions. -* divide_using_: LargePositiveInteger-primitive operations. -* dividend: ZeroDivide-accessing. -* dividend_: ZeroDivide class-instance creation. -* do_ <1>: WeakSet-accessing. -* do_ <2>: WeakArray-accessing. -* do_ <3>: VFS.VFSHandler-directory operations. -* do_ <4>: VFS.RealFileHandler-directory operations. -* do_ <5>: VFS.ExternalArchiveFileHandler-members. -* do_ <6>: VFS.ArchiveMemberHandler-directory operations. -* do_ <7>: VFS.ArchiveFileHandler-directory operations. -* do_ <8>: SymLink-iteration. -* do_ <9>: Stream-enumerating. -* do_ <10>: SequenceableCollection-enumerating. -* do_ <11>: RunArray-enumerating. -* do_ <12>: Namespace-overrides for superspaces. -* do_ <13>: MappedCollection-basic. -* do_ <14>: LinkedList-enumerating. -* do_ <15>: Link-iteration. -* do_ <16>: Interval-basic. -* do_ <17>: HashedCollection-enumerating the elements of a collection. -* do_ <18>: Directory-enumerating. -* do_ <19>: Dictionary-dictionary enumerating. -* do_ <20>: Collection-enumeration. -* do_: Bag-enumerating the elements of a collection. -* do_separatedBy_ <1>: SequenceableCollection-enumerating. -* do_separatedBy_: Collection-enumeration. -* doesNotUnderstand_ <1>: Object-error raising. -* doesNotUnderstand_ <2>: BindingDictionary-accessing. -* doesNotUnderstand_ <3>: AutoloadClass-accessing. -* doesNotUnderstand_: Autoload-accessing. -* domain: MappedCollection-basic. -* dotProduct_: Point-point functions. -* doubleAt_ <1>: Memory class-accessing. -* doubleAt_: ByteArray-more advanced accessing. -* doubleAt_put_ <1>: Memory class-accessing. -* doubleAt_put_: ByteArray-more advanced accessing. -* doWithIndex_: SequenceableCollection-enumerating. -* dump_: ObjectDumper-loading/dumping objects. -* dump_to_: ObjectDumper class-shortcuts. -* dumpTo_ <1>: VersionableObjectProxy-saving and restoring. -* dumpTo_ <2>: NullProxy-accessing. -* dumpTo_: DumperProxy-saving and restoring. -* e <1>: FloatQ class-characterization. -* e <2>: FloatE class-characterization. -* e: Float class-characterization. -* edenSize: ObjectMemory-accessing. -* edenUsedBytes: ObjectMemory-accessing. -* edit_: Behavior-method dictionary. -* elementType <1>: CStringCType-accessing. -* elementType <2>: CPtrCType-accessing. -* elementType: CAggregate-accessing. -* elementType_ <1>: CPtrCType class-instance creation. -* elementType_: CArrayCType class-instance creation. -* elementType_numberOfElements_: CArrayCType class-instance creation. -* emax <1>: FloatQ class-characterization. -* emax <2>: FloatE class-characterization. -* emax: FloatD class-characterization. -* emin <1>: FloatQ class-characterization. -* emin <2>: FloatE class-characterization. -* emin: FloatD class-characterization. -* emitInspectTo_for_: CCompound class-subclass creation. -* empty: Collection-removing. -* emptyStream: WriteStream-positioning. -* enableInterrupts: ProcessorScheduler-built ins. -* encode_: NetClients.URL class-encoding URLs. -* endEntry: TextCollector-accessing. -* ensure_: BlockClosure-unwind protection. -* ensureReadable: FileDescriptor-accessing. -* ensureWriteable: FileDescriptor-accessing. -* environment <1>: Metaclass-delegation. -* environment <2>: HomedAssociation-accessing. -* environment <3>: ContextPart-accessing. -* environment <4>: Class-accessing instances and variables. -* environment <5>: BindingDictionary-accessing. -* environment <6>: Behavior-support for lightweight classes. -* environment <7>: AutoloadClass-accessing. -* environment: Association-accessing. -* environment_ <1>: HomedAssociation-accessing. -* environment_ <2>: Class-accessing instances and variables. -* environment_ <3>: BindingDictionary-accessing. -* environment_ <4>: AutoloadClass-accessing. -* environment_: Association-accessing. -* eof: Character class-constants. -* eot: Character class-constants. -* epsilon: Float class-characterization. -* eqv_ <1>: True-basic. -* eqv_ <2>: False-basic. -* eqv_: Boolean-basic. -* errno: File class-C functions. -* error_: Object-error raising. -* esc: Character class-constants. -* estimatedLog <1>: Number-misc math. -* estimatedLog <2>: LargeInteger-arithmetic. -* estimatedLog <3>: Integer-math methods. -* estimatedLog <4>: Fraction-arithmetic. -* estimatedLog: Float-coercing. -* evalString_to_: Behavior-evaluating. -* evalString_to_ifError_: Behavior-evaluating. -* evaluate_: Behavior-evaluating. -* evaluate_ifError_: Behavior-evaluating. -* evaluate_notifying_: Behavior-evaluating. -* evaluate_to_: Behavior-evaluating. -* evaluate_to_ifError_: Behavior-evaluating. -* evaluatorClass: Behavior-pluggable behavior (not yet implemented). -* even <1>: Number-testing. -* even: Integer-math methods. -* example: ObjectDumper class-testing. -* exception: Signal-accessing. -* exceptionalCondition: FileDescriptor-accessing. -* executionTrace: SystemDictionary-builtins. -* executionTrace_: SystemDictionary-builtins. -* exists <1>: VFS.VFSHandler-testing. -* exists <2>: VFS.RealFileHandler-testing. -* exists <3>: VFS.ArchiveMemberHandler-testing. -* exists: File-testing. -* exists_: File class-testing. -* exp <1>: Number-misc math. -* exp: Float-built ins. -* expandBy_: Rectangle-rectangle functions. -* exponent <1>: FloatQ-built ins. -* exponent <2>: FloatE-built ins. -* exponent: FloatD-built ins. -* extend: Class-instance creation. -* extension: File-file name management. -* extensionFor_: File class-file name management. -* extent: Rectangle-accessing. -* extent_ <1>: Rectangle-accessing. -* extent_: Point-converting. -* externalInterruptsEnabled: Process-accessing. -* extractDependenciesFor_onError_: PackageLoader class-loading. -* extractDirentName_: VFS.VFSHandler-C functions. -* extractMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* extractMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* factorial: Integer-math methods. -* fd: FileDescriptor-accessing. -* fileIn: FileStream-filing in. -* fileIn_: FileStream class-file-in. -* fileIn_ifMissing_: FileStream class-file-in. -* fileIn_ifTrue_: FileStream class-file-in. -* fileIn_line_from_at_: FileStream class-file-in. -* fileInLine_fileName_at_: FileStream-filing in. -* fileInPackage_: PackageLoader class-loading. -* fileInPackages_: PackageLoader class-loading. -* fileIns: Package-accessing. -* fileInsFor_: PackageLoader class-accessing. -* fileName <1>: FileSegment-basic. -* fileName <2>: CharacterArray-converting. -* fileName: AutoloadClass-accessing. -* fileName_: AutoloadClass-accessing. -* fileOp_: FileDescriptor-built ins. -* fileOp_ifFail_: FileDescriptor-built ins. -* fileOp_with_: FileDescriptor-built ins. -* fileOp_with_ifFail_: FileDescriptor-built ins. -* fileOp_with_with_: FileDescriptor-built ins. -* fileOp_with_with_ifFail_: FileDescriptor-built ins. -* fileOp_with_with_with_: FileDescriptor-built ins. -* fileOp_with_with_with_ifFail_: FileDescriptor-built ins. -* fileOut_ <1>: Stream-filing out. -* fileOut_: ClassDescription-filing. -* fileOutCategory_to_: ClassDescription-filing. -* fileOutCategory_toStream_: ClassDescription-filing. -* fileOutDeclarationOn_: Class-filing. -* fileOutHeaderOn_: Class-filing. -* fileOutOn_ <1>: Metaclass-filing. -* fileOutOn_ <2>: ClassDescription-filing. -* fileOutOn_: Class-filing. -* fileOutSelector_to_: ClassDescription-filing. -* filePos <1>: FileSegment-basic. -* filePos: CharacterArray-converting. -* files: Package-accessing. -* filesFor_: PackageLoader class-accessing. -* filesMatching_do_: Directory-enumerating. -* fileSystems <1>: VFS.VFSHandler class-initializing. -* fileSystems <2>: VFS.ExternalArchiveFileHandler class-registering. -* fileSystems: VFS.DecodedFileHandler class-registering. -* fileSystemsIn_: VFS.ExternalArchiveFileHandler class-registering. -* fill: FileStream-buffering. -* fillMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* fillMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* finalIP: BlockClosure-accessing. -* finalizableObjects: Object class-initialization. -* finalize <1>: VFS.DecodedFileHandler-files. -* finalize <2>: VFS.ArchiveFileHandler-directory operations. -* finalize <3>: Object-finalization. -* finalize <4>: FileDescriptor-basic. -* finalize: CObject-finalization. -* findFirst_: SequenceableCollection-enumerating. -* findKeyIndex_: Dictionary-awful ST-80 compatibility hacks. -* findLast_: SequenceableCollection-enumerating. -* findObjectIndex_: Set-awful ST-80 compatibility hacks. -* finishIncrementalGC: ObjectMemory class-builtins. -* first <1>: SequenceableCollection-basic. -* first <2>: RunArray-basic. -* first: LargeArraySubpart-accessing. -* first_last_index_ <1>: LargeArraySubpart-accessing. -* first_last_index_: LargeArraySubpart class-instance creation. -* firstDayOfMonth: Date-date computations. -* firstIndex: LargeArraySubpart-accessing. -* fixedSpaceSize: ObjectMemory-accessing. -* fixedSpaceUsedBytes: ObjectMemory-accessing. -* fixTemps: BlockClosure-accessing. -* flags <1>: CompiledMethod-accessing. -* flags <2>: CompiledCode-accessing. -* flags: CompiledBlock-accessing. -* floatAt_ <1>: Memory class-accessing. -* floatAt_: ByteArray-more advanced accessing. -* floatAt_put_ <1>: Memory class-accessing. -* floatAt_put_: ByteArray-more advanced accessing. -* floor <1>: Number-truncation and round off. -* floor <2>: Integer-converting. -* floor <3>: Fraction-coercing. -* floor: Float-built ins. -* floorLog_ <1>: Number-misc math. -* floorLog_: Integer-math methods. -* flush <1>: Stream-providing consistent protocols. -* flush <2>: PackageLoader class-accessing. -* flush <3>: ObjectDumper-accessing. -* flush: FileStream-buffering. -* flushCache: Behavior-built ins. -* flushTranslatorCache: CompiledCode class-cache flushing. -* fmax <1>: FloatQ class-characterization. -* fmax <2>: FloatE class-characterization. -* fmax: FloatD class-characterization. -* fmin: Float class-characterization. -* fminDenormalized: Float class-characterization. -* fminNormalized <1>: FloatQ class-characterization. -* fminNormalized <2>: FloatE class-characterization. -* fminNormalized: FloatD class-characterization. -* fold_: Collection-enumeration. -* fopen_mode_: FileDescriptor class-instance creation. -* fopen_mode_ifFail_: FileDescriptor class-instance creation. -* for_: VFS.VFSHandler class-instance creation. -* for_returning_withArgs_: CFunctionDescriptor class-instance creation. -* fork <1>: DirectedMessage-multiple process. -* fork: BlockClosure-multiple process. -* forkAt_ <1>: DirectedMessage-multiple process. -* forkAt_: BlockClosure-multiple process. -* forkWithoutPreemption: BlockClosure-multiple process. -* forMilliseconds_: Delay class-instance creation. -* forMutualExclusion: Semaphore class-instance creation. -* forSeconds_: Delay class-instance creation. -* fractionPart <1>: ScaledDecimal-coercion. -* fractionPart <2>: Number-truncation and round off. -* fractionPart <3>: FloatQ-built ins. -* fractionPart <4>: FloatE-built ins. -* fractionPart: FloatD-built ins. -* fragment: NetClients.URL-accessing. -* fragment_: NetClients.URL-accessing. -* free <1>: UndefinedObject-CObject interoperability. -* free: CObject-C data access. -* from_to_: Interval class-instance creation. -* from_to_by_: Interval class-instance creation. -* from_to_do_: SequenceableCollection-enumerating. -* from_to_doWithIndex_: SequenceableCollection-enumerating. -* from_to_keysAndValuesDo_: SequenceableCollection-enumerating. -* fromCData_size_: String class-instance creation. -* fromDays_: Date class-instance creation (Blue Book). -* fromDays_seconds_offset_ <1>: Duration class-instance creation (non ANSI). -* fromDays_seconds_offset_: DateTime class-instance creation (non-ANSI). -* fromJulian_: Date class-instance creation (Blue Book). -* fromSeconds_ <1>: Time class-instance creation. -* fromSeconds_: Date class-instance creation (Blue Book). -* fromString_ <1>: NetClients.URL class-instance creation. -* fromString_: CharacterArray class-basic. -* fullName: File-file name management. -* fullNameAt_: Directory-accessing. -* fullNameFor_: File class-file name management. -* fullRequestString: NetClients.URL-accessing. -* gcd_ <1>: LargePositiveInteger-arithmetic. -* gcd_ <2>: LargeNegativeInteger-reverting to LargePositiveInteger. -* gcd_: Integer-math methods. -* gcMessage: ObjectMemory class-builtins. -* gcMessage_: ObjectMemory class-builtins. -* generality <1>: SmallInteger-coercion methods. -* generality <2>: ScaledDecimal-coercion. -* generality <3>: Number-converting. -* generality <4>: LargeInteger-coercion. -* generality <5>: Fraction-coercing. -* generality <6>: FloatQ-coercing. -* generality <7>: FloatE-coercing. -* generality: FloatD-coercing. -* generateMakefileOnto_: FileStream class-file-in. -* getArgc: SystemDictionary-C functions. -* getArgv_: SystemDictionary-C functions. -* getBlock_putBlock_: PluggableAdaptor class-creating instances. -* getenv_: SystemDictionary-C functions. -* getTraceFlag_: SystemDictionary-builtins. -* globalGarbageCollect: ObjectMemory class-builtins. -* goodness_ <1>: TrappableEvent-enumerating. -* goodness_ <2>: ExceptionSet-enumerating. -* goodness_ <3>: Exception class-comparison. -* goodness_: CoreException-enumerating. -* grid_: Point-point functions. -* grow: LargeArraySubpart-modifying. -* growBy_: LargeArraySubpart-modifying. -* growThresholdPercent: ObjectMemory class-builtins. -* growThresholdPercent_: ObjectMemory class-builtins. -* growTo_: ObjectMemory class-builtins. -* halt <1>: SystemDictionary-basic. -* halt: Object-built ins. -* halt_: Object-error raising. -* handles_ <1>: TrappableEvent-enumerating. -* handles_ <2>: ExceptionSet-enumerating. -* handles_ <3>: Exception class-comparison. -* handles_: CoreException-enumerating. -* hasBytecode_between_and_: CompiledCode-testing accesses. -* hasFeatures_: SystemDictionary-special accessing. -* hasFragment: NetClients.URL-testing. -* hash <1>: Time-comparing. -* hash <2>: SystemDictionary-basic. -* hash <3>: Symbol-built ins. -* hash <4>: String-built ins. -* hash <5>: SequenceableCollection-testing. -* hash <6>: ScaledDecimal-comparing. -* hash <7>: RunArray-testing. -* hash <8>: Rectangle-testing. -* hash <9>: Point-converting. -* hash <10>: Object-built ins. -* hash <11>: NetClients.URL-comparing. -* hash <12>: MethodInfo-equality. -* hash <13>: LookupTable-hashing. -* hash <14>: LookupKey-testing. -* hash <15>: LargeZeroInteger-accessing. -* hash <16>: LargeInteger-built-ins. -* hash <17>: LargeArraySubpart-comparing. -* hash <18>: LargeArrayedCollection-basic. -* hash <19>: Interval-testing. -* hash <20>: Integer-basic. -* hash <21>: HashedCollection-testing collections. -* hash <22>: Fraction-comparing. -* hash <23>: Float-basic. -* hash <24>: FileSegment-equality. -* hash <25>: Exception-comparison. -* hash <26>: Dictionary-testing. -* hash <27>: Delay-comparing. -* hash <28>: DateTime-testing. -* hash <29>: Date-testing. -* hash <30>: CompiledMethod-basic. -* hash <31>: CompiledCode-basic. -* hash <32>: ByteArray-built ins. -* hash <33>: Bag-testing collections. -* hash <34>: Association-testing. -* hash: AbstractNamespace-basic & copying. -* hasInterned_ifTrue_: Symbol class-symbol table. -* hasMethodReturn: BlockClosure-testing. -* hasMethods: Behavior-testing the method dictionary. -* hasPostData: NetClients.URL-accessing. -* hasPostData_: NetClients.URL-accessing. -* hasProxyFor_: ObjectDumper class-establishing proxy classes. -* hasQuery: NetClients.URL-testing. -* hasValue: Promise-accessing. -* height: Rectangle-accessing. -* height_: Rectangle-accessing. -* hereAt_: AbstractNamespace-overrides for superspaces. -* hereAt_ifAbsent_: AbstractNamespace-overrides for superspaces. -* hierarchyIndent: Behavior-printing hierarchy. -* high: SystemExceptions.ArgumentOutOfRange-accessing. -* high_: SystemExceptions.ArgumentOutOfRange-accessing. -* highBit <1>: SmallInteger-bit arithmetic. -* highBit <2>: LargePositiveInteger-arithmetic. -* highBit <3>: LargeNegativeInteger-reverting to LargePositiveInteger. -* highBit: Integer-bit operators. -* highestPriority: ProcessorScheduler-priorities. -* highIOPriority: ProcessorScheduler-priorities. -* home <1>: MethodContext-accessing. -* home <2>: Directory class-reading system defaults. -* home <3>: ContextPart-accessing. -* home: BlockContext-accessing. -* host: NetClients.URL-accessing. -* host_: NetClients.URL-accessing. -* hour <1>: Time-accessing (ANSI for DateAndTimes). -* hour: DateTime-computations. -* hour12 <1>: Time-accessing (ANSI for DateAndTimes). -* hour12: DateTime-computations. -* hour24 <1>: Time-accessing (ANSI for DateAndTimes). -* hour24: DateTime-computations. -* hours: Time-accessing (non ANSI & for Durations). -* hours_: Time class-instance creation. -* hours_minutes_seconds_: Time class-instance creation. -* identityHash: Object-built ins. -* identityIncludes_ <1>: SequenceableCollection-basic. -* identityIncludes_ <2>: IdentitySet-testing. -* identityIncludes_: Collection-testing collections. -* identityIndexOf_: SequenceableCollection-basic. -* identityIndexOf_ifAbsent_: SequenceableCollection-basic. -* identityIndexOf_startingAt_: SequenceableCollection-basic. -* identityIndexOf_startingAt_ifAbsent_: SequenceableCollection-basic. -* idle: ProcessorScheduler-idle tasks. -* idleAdd_: ProcessorScheduler-idle tasks. -* ifCurtailed_: BlockClosure-unwind protection. -* ifError_: BlockClosure-exception handling. -* ifFalse_ <1>: True-basic. -* ifFalse_ <2>: False-basic. -* ifFalse_: Boolean-basic. -* ifFalse_ifTrue_ <1>: True-basic. -* ifFalse_ifTrue_ <2>: False-basic. -* ifFalse_ifTrue_: Boolean-basic. -* ifNil_ <1>: UndefinedObject-testing. -* ifNil_: Object-testing functionality. -* ifNil_ifNotNil_ <1>: UndefinedObject-testing. -* ifNil_ifNotNil_: Object-testing functionality. -* ifNotNil_ <1>: UndefinedObject-testing. -* ifNotNil_: Object-testing functionality. -* ifNotNil_ifNil_ <1>: UndefinedObject-testing. -* ifNotNil_ifNil_: Object-testing functionality. -* ifTrue_ <1>: True-basic. -* ifTrue_ <2>: False-basic. -* ifTrue_: Boolean-basic. -* ifTrue_ifFalse_ <1>: True-basic. -* ifTrue_ifFalse_ <2>: False-basic. -* ifTrue_ifFalse_: Boolean-basic. -* ignoreCallouts: PackageLoader class-accessing. -* ignoreCallouts_: PackageLoader class-accessing. -* image <1>: File class-reading system defaults. -* image: Directory class-reading system defaults. -* import_from_: BindingDictionary-accessing. -* includes_ <1>: SortedCollection-searching. -* includes_ <2>: SequenceableCollection-basic. -* includes_ <3>: HashedCollection-testing collections. -* includes_ <4>: Directory-accessing. -* includes_ <5>: Dictionary-dictionary testing. -* includes_ <6>: Collection-testing collections. -* includes_: Bag-testing collections. -* includesAssociation_: Dictionary-dictionary testing. -* includesBehavior_: Behavior-testing the class hierarchy. -* includesClassNamed_: AbstractNamespace-namespace hierarchy. -* includesGlobalNamed_: AbstractNamespace-namespace hierarchy. -* includesKey_ <1>: WeakValueLookupTable-hacks. -* includesKey_ <2>: Namespace-overrides for superspaces. -* includesKey_: Dictionary-dictionary testing. -* includesSelector_: Behavior-testing the method dictionary. -* incr: CObject-pointer-like behavior. -* incrBy_: CObject-pointer-like behavior. -* incrementalGCStep: ObjectMemory class-builtins. -* indexOf_: SequenceableCollection-basic. -* indexOf_ifAbsent_: SequenceableCollection-basic. -* indexOf_matchCase_startingAt_: CharacterArray-comparing. -* indexOf_startingAt_: SequenceableCollection-basic. -* indexOf_startingAt_ifAbsent_ <1>: SortedCollection-searching. -* indexOf_startingAt_ifAbsent_ <2>: SequenceableCollection-basic. -* indexOf_startingAt_ifAbsent_: RunArray-searching. -* indexOfMonth_: Date class-basic. -* indexOfSubCollection_: SequenceableCollection-basic. -* indexOfSubCollection_ifAbsent_: SequenceableCollection-basic. -* indexOfSubCollection_startingAt_: SequenceableCollection-basic. -* indexOfSubCollection_startingAt_ifAbsent_: SequenceableCollection-basic. -* infinity <1>: FloatQ class-characterization. -* infinity <2>: FloatE class-characterization. -* infinity: FloatD class-characterization. -* inheritedKeys <1>: RootNamespace-overrides for superspaces. -* inheritedKeys <2>: Namespace-accessing. -* inheritedKeys: AbstractNamespace-overrides for superspaces. -* inheritsFrom_ <1>: Behavior-testing the class hierarchy. -* inheritsFrom_: AbstractNamespace-namespace hierarchy. -* initDayNameDict: Date class-basic. -* initialIP <1>: ContextPart-accessing. -* initialIP: BlockClosure-accessing. -* initialize <1>: VFS.VFSHandler class-initializing. -* initialize <2>: VFS.RealFileHandler class-initialization. -* initialize <3>: VFS.DecodedFileHandler class-registering. -* initialize <4>: ValueHolder-initializing. -* initialize <5>: Time class-initialization. -* initialize <6>: ScaledDecimal class-constants. -* initialize <7>: Promise-initializing. -* initialize <8>: ProcessorScheduler-idle tasks. -* initialize <9>: ObjectMemory class-initialization. -* initialize <10>: Object class-initialization. -* initialize <11>: NetClients.URL-initialize-release. -* initialize <12>: NetClients.URL class-encoding URLs. -* initialize <13>: Namespace class-initialization. -* initialize <14>: Fraction class-instance creation. -* initialize <15>: FileStream class-file-in. -* initialize <16>: FileDescriptor-initialize-release. -* initialize <17>: FileDescriptor class-initialization. -* initialize <18>: Exception class-initialization. -* initialize <19>: Duration class-instance creation. -* initialize <20>: DLD class-dynamic linking. -* initialize <21>: Delay class-initialization. -* initialize <22>: DateTime class-information. -* initialize <23>: Date class-basic. -* initialize <24>: Class-accessing instances and variables. -* initialize <25>: Character class-initializing lookup tables. -* initialize: CCompound class-subclass creation. -* initMonthNameDict: Date class-basic. -* inject_into_: Collection-enumeration. -* insetBy_: Rectangle-rectangle functions. -* insetOriginBy_corner_: Rectangle-rectangle functions. -* inspect <1>: SequenceableCollection-testing. -* inspect <2>: Object-debugging. -* inspect <3>: Dictionary-printing. -* inspect <4>: CompiledCode-debugging. -* inspect <5>: Collection-printing. -* inspect: CCompound-instance creation. -* inspectSelectorList: CCompound-instance creation. -* instanceClass: Metaclass-accessing. -* instanceCount: Behavior-accessing instances and variables. -* instanceVariableNames_: Metaclass-basic. -* instanceVariableString: ClassDescription-printing. -* instSize: Behavior-testing the form of the instances. -* instVarAt_: Object-built ins. -* instVarAt_put_: Object-built ins. -* instVarNames: Behavior-accessing instances and variables. -* intAt_ <1>: Memory class-accessing. -* intAt_: ByteArray-more advanced accessing. -* intAt_put_ <1>: Memory class-accessing. -* intAt_put_: ByteArray-more advanced accessing. -* integerPart <1>: ScaledDecimal-coercion. -* integerPart <2>: Number-truncation and round off. -* integerPart <3>: Fraction-converting. -* integerPart: Float-arithmetic. -* intern_: Symbol class-built ins. -* internCharacter_: Symbol class-instance creation. -* intersect_: Rectangle-rectangle functions. -* intersects_: Rectangle-testing. -* invalidate: FileDescriptor-basic. -* ip: ContextPart-accessing. -* ip_: ContextPart-accessing. -* isAccessible <1>: VFS.VFSHandler-testing. -* isAccessible <2>: VFS.ArchiveMemberHandler-testing. -* isAccessible <3>: VFS.ArchiveFileHandler class-registering. -* isAccessible: File-testing. -* isAccessible_: File class-testing. -* isAlive_: WeakArray-accessing. -* isAlphaNumeric: Character-testing. -* isArray <1>: Object-testing functionality. -* isArray: Array-testing. -* isBehavior <1>: Object-testing functionality. -* isBehavior: Behavior-testing functionality. -* isBinary: FileDescriptor-class type methods. -* isBits: Behavior-testing the form of the instances. -* isBitSet_: Integer-bit operators. -* isBlock <1>: MethodContext-accessing. -* isBlock <2>: ContextPart-accessing. -* isBlock: BlockContext-accessing. -* isBytes: Behavior-testing the form of the instances. -* isCharacter <1>: Object-testing functionality. -* isCharacter: Character-testing functionality. -* isCharacterArray <1>: Object-testing functionality. -* isCharacterArray: CharacterArray-testing functionality. -* isClass <1>: Object-testing functionality. -* isClass: Class-testing functionality. -* isDefined: VariableBinding-testing. -* isDigit: Character-testing. -* isDirectory <1>: VFS.VFSHandler-testing. -* isDirectory <2>: VFS.RealFileHandler-testing. -* isDirectory <3>: VFS.ArchiveMemberHandler-testing. -* isDirectory <4>: VFS.ArchiveFileHandler class-registering. -* isDirectory: File-testing. -* isDisabled <1>: MethodContext-accessing. -* isDisabled <2>: ContextPart-accessing. -* isDisabled: BlockContext-accessing. -* isEmpty <1>: SharedQueue-accessing. -* isEmpty <2>: PositionableStream-testing. -* isEmpty <3>: LinkedList-testing. -* isEmpty <4>: HashedCollection-testing collections. -* isEmpty <5>: FileDescriptor-overriding inherited methods. -* isEmpty: Collection-testing collections. -* isEnvironment <1>: MethodContext-accessing. -* isEnvironment <2>: ContextPart-accessing. -* isEnvironment: BlockContext-accessing. -* isExecutable <1>: VFS.VFSHandler-testing. -* isExecutable <2>: VFS.RealFileHandler-testing. -* isExecutable <3>: VFS.ArchiveMemberHandler-testing. -* isExecutable: File-testing. -* isExecutable_: File class-testing. -* isExternalStream <1>: Stream-testing. -* isExternalStream <2>: PositionableStream-class type methods. -* isExternalStream: FileDescriptor-class type methods. -* isFile: File-testing. -* isFileScheme: NetClients.URL-testing. -* isFinite <1>: Number-testing. -* isFinite: Float-testing. -* isFixed: Behavior-testing the form of the instances. -* isFloat <1>: Object-testing functionality. -* isFloat: Float-testing functionality. -* isFragmentOnly: NetClients.URL-testing. -* isFunction_: CFunctionDescriptor class-testing. -* isIdentity <1>: SmallInteger class-testing. -* isIdentity <2>: Character class-testing. -* isIdentity <3>: Boolean class-testing. -* isIdentity: Behavior-testing the form of the instances. -* isImmediate <1>: Number class-testing. -* isImmediate <2>: Character class-testing. -* isImmediate <3>: Boolean class-testing. -* isImmediate <4>: BlockClosure class-testing. -* isImmediate: Behavior-testing the form of the instances. -* isInfinite <1>: Number-testing. -* isInfinite: Float-testing. -* isInteger <1>: Object-testing functionality. -* isInteger: Integer-testing functionality. -* isInternalExceptionHandlingContext: ContextPart-debugging. -* isKindOf_: Object-testing functionality. -* isLeapYear: Date-date computations. -* isLetter: Character-testing. -* isLowercase: Character-testing. -* isMemberOf_: Object-testing functionality. -* isMeta: Object-testing functionality. -* isMetaClass: Object-testing functionality. -* isMetaclass <1>: Object-testing functionality. -* isMetaclass: Metaclass-testing functionality. -* isNamespace <1>: Object-testing functionality. -* isNamespace: AbstractNamespace-testing. -* isNaN <1>: Number-testing. -* isNaN: Float-testing. -* isNested: Signal-exception handling. -* isNil <1>: UndefinedObject-testing. -* isNil: Object-testing functionality. -* isNumber <1>: Object-testing functionality. -* isNumber: Number-testing. -* isNumeric: CharacterArray-converting. -* isOpen: FileDescriptor-accessing. -* isOwnerProcess: RecursionLock-accessing. -* isPipe: FileDescriptor-accessing. -* isPointers: Behavior-testing the form of the instances. -* isProcess: ContextPart-accessing. -* isPunctuation: Character-testing. -* isRational <1>: Number-testing. -* isRational <2>: Integer-testing functionality. -* isRational: Fraction-testing. -* isReadable <1>: VFS.VFSHandler-testing. -* isReadable <2>: VFS.RealFileHandler-testing. -* isReadable <3>: VFS.ArchiveMemberHandler-testing. -* isReadable: File-testing. -* isReadable_: File class-testing. -* isReadOnly: Object-built ins. -* isResumable <1>: Signal-exception handling. -* isResumable <2>: Notification-exception description. -* isResumable <3>: Halt-description. -* isResumable <4>: Exception-exception description. -* isResumable <5>: Error-exception description. -* isResumable: CoreException-accessing. -* isResumable_: CoreException-accessing. -* isSeparator: Character-testing. -* isSimpleSymbol: Symbol-testing. -* isSmall: LargePositiveInteger-primitive operations. -* isSmallInteger <1>: SmallInteger-testing functionality. -* isSmallInteger: Object-testing functionality. -* isSmalltalk <1>: Namespace-testing. -* isSmalltalk: AbstractNamespace-testing. -* isString <1>: Symbol-testing functionality. -* isString <2>: String-testing functionality. -* isString: Object-testing functionality. -* isSymbol <1>: Symbol-testing functionality. -* isSymbol: Object-testing functionality. -* isSymbolString_: Symbol class-symbol table. -* isText: FileDescriptor-class type methods. -* isTimeoutProgrammed: ProcessorScheduler-timed invocation. -* isUnwind <1>: MethodContext-accessing. -* isUnwind <2>: ContextPart-accessing. -* isUnwind: BlockContext-accessing. -* isUppercase: Character-testing. -* isValid: CFunctionDescriptor-accessing. -* isVariable: Behavior-testing the form of the instances. -* isVowel: Character-testing. -* isWords: Behavior-testing the form of the instances. -* isWriteable <1>: VFS.VFSHandler-testing. -* isWriteable <2>: VFS.RealFileHandler-testing. -* isWriteable <3>: VFS.ArchiveMemberHandler-testing. -* isWriteable: File-testing. -* isWriteable_: File class-testing. -* jumpDestinationAt_: CompiledCode-testing accesses. -* kernel: Directory class-reading system defaults. -* key: LookupKey-accessing. -* key_ <1>: LookupKey-accessing. -* key_: LookupKey class-basic. -* key_value_ <1>: Association-accessing. -* key_value_: Association class-basic. -* key_value_environment_: HomedAssociation class-basic. -* keyAtValue_: Dictionary-accessing. -* keyAtValue_ifAbsent_: Dictionary-accessing. -* keys: Dictionary-accessing. -* keysAndValuesDo_ <1>: SequenceableCollection-enumerating. -* keysAndValuesDo_ <2>: Namespace-overrides for superspaces. -* keysAndValuesDo_ <3>: LookupTable-enumerating. -* keysAndValuesDo_: Dictionary-dictionary enumerating. -* keysDo_ <1>: Namespace-overrides for superspaces. -* keysDo_: Dictionary-dictionary enumerating. -* keywords: Symbol-basic. -* kindOfSubclass: Behavior-testing the class hierarchy. -* largeNegated: LargeInteger-primitive operations. -* largest: SmallInteger class-getting limits. -* last <1>: SortedCollection-basic. -* last <2>: SequenceableCollection-basic. -* last <3>: RunArray-basic. -* last: LargeArraySubpart-accessing. -* lastAccessTime <1>: VFS.VFSHandler-accessing. -* lastAccessTime <2>: VFS.RealFileHandler-accessing. -* lastAccessTime <3>: VFS.ArchiveMemberHandler-accessing. -* lastAccessTime: File-accessing. -* lastChangeTime <1>: VFS.VFSHandler-accessing. -* lastChangeTime <2>: VFS.RealFileHandler-accessing. -* lastChangeTime <3>: VFS.ArchiveMemberHandler-accessing. -* lastChangeTime: File-accessing. -* lastDayOfMonth: Date-date computations. -* lastIndex: LargeArraySubpart-accessing. -* lastModifyTime <1>: VFS.VFSHandler-accessing. -* lastModifyTime <2>: VFS.RealFileHandler-accessing. -* lastModifyTime <3>: VFS.ArchiveMemberHandler-accessing. -* lastModifyTime: File-accessing. -* lastUnwindPoint: ContextPart class-exception handling. -* lcm_: Integer-math methods. -* left: Rectangle-accessing. -* left_: Rectangle-accessing. -* left_right_top_bottom_: Rectangle class-instance creation. -* left_top_right_bottom_: Rectangle-accessing. -* leftCenter: Rectangle-accessing. -* lf: Character class-constants. -* libraries: Package-accessing. -* librariesFor_: PackageLoader class-accessing. -* library_getFunc_: DLD class-C functions. -* libraryList: DLD class-dynamic linking. -* lineDelimiter: CharacterArray class-basic. -* linesDo_: String-useful functionality. -* linkFile_: DLD class-C functions. -* literalAt_: CompiledCode-accessing. -* literalAt_put_: CompiledCode-accessing. -* literals: CompiledCode-accessing. -* literals_numArgs_numTemps_primitive_bytecodes_depth_: CompiledMethod class-instance creation. -* ln <1>: Number-misc math. -* ln: Float-built ins. -* ln10 <1>: FloatQ class-characterization. -* ln10 <2>: FloatE class-characterization. -* ln10: Float class-characterization. -* load: ObjectDumper-loading/dumping objects. -* loadedClass: AutoloadClass-accessing. -* loadedMetaclass: AutoloadClass-accessing. -* loadFrom_ <1>: VersionableObjectProxy class-saving and restoring. -* loadFrom_ <2>: ObjectDumper class-shortcuts. -* loadFrom_ <3>: NullProxy class-instance creation. -* loadFrom_: DumperProxy class-accessing. -* localKernel: Directory class-reading system defaults. -* lock: Semaphore-builtins. -* log: Number-misc math. -* log10Base2 <1>: FloatQ class-characterization. -* log10Base2 <2>: FloatE class-characterization. -* log10Base2: Float class-characterization. -* log_: Number-misc math. -* longAt_ <1>: Memory class-accessing. -* longAt_: ByteArray-more advanced accessing. -* longAt_put_ <1>: Memory class-accessing. -* longAt_put_: ByteArray-more advanced accessing. -* low: SystemExceptions.ArgumentOutOfRange-accessing. -* low_: SystemExceptions.ArgumentOutOfRange-accessing. -* lowerPriority: Process-basic. -* lowestPriority: ProcessorScheduler-priorities. -* lowIOPriority: ProcessorScheduler-priorities. -* makeEphemeron: Object-built ins. -* makeFixed: Object-built ins. -* makeReadOnly_: Object-built ins. -* makeWeak: Object-built ins. -* map: MappedCollection-basic. -* mark: ContextPart-exception handling. -* mark_: Object-built ins. -* match_: CharacterArray-comparing. -* match_ignoreCase_: CharacterArray-comparing. -* max_ <1>: Point-comparing. -* max_ <2>: Number-comparing. -* max_: Magnitude-misc methods. -* member_do_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* member_do_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* merge_: Rectangle-rectangle functions. -* meridianAbbreviation: DateTime-computations. -* message <1>: TextCollector-set up. -* message: MessageNotUnderstood-accessing. -* message_ <1>: TextCollector-set up. -* message_: TextCollector class-accessing. -* messageText <1>: SystemExceptions.WrongMessageSent-accessing. -* messageText <2>: SystemExceptions.WrongClass-accessing. -* messageText <3>: SystemExceptions.InvalidValue-accessing. -* messageText <4>: SystemExceptions.InvalidArgument-accessing. -* messageText <5>: SystemExceptions.IndexOutOfRange-accessing. -* messageText: Signal-accessing. -* messageText_: Signal-accessing. -* metaclassFor_: UndefinedObject-class creation. -* method <1>: ContextPart-accessing. -* method <2>: CompiledBlock-accessing. -* method: BlockClosure-accessing. -* methodCategory <1>: CompiledMethod-basic. -* methodCategory <2>: CompiledCode-basic. -* methodCategory: CompiledBlock-basic. -* methodCategory_ <1>: CompiledMethod-basic. -* methodCategory_ <2>: CompiledCode-basic. -* methodCategory_: CompiledBlock-basic. -* methodClass <1>: MethodInfo-accessing. -* methodClass <2>: ContextPart-accessing. -* methodClass <3>: CompiledMethod-accessing. -* methodClass <4>: CompiledCode-accessing. -* methodClass: CompiledBlock-accessing. -* methodClass_ <1>: MethodInfo-accessing. -* methodClass_ <2>: CompiledMethod-accessing. -* methodClass_ <3>: CompiledCode-accessing. -* methodClass_: CompiledBlock-accessing. -* methodDictionary: Behavior-method dictionary. -* methodDictionary_: Behavior-method dictionary. -* methods: Behavior-compilation (alternative). -* methodsFor: Behavior-compilation (alternative). -* methodsFor_: Behavior-compiling methods. -* methodsFor_ifFeatures_: Behavior-compilation (alternative). -* methodsFor_ifTrue_: Behavior-built ins. -* methodsFor_stamp_: Behavior-compilation (alternative). -* methodSourceCode <1>: CompiledMethod-basic. -* methodSourceCode <2>: CompiledCode-basic. -* methodSourceCode: CompiledBlock-basic. -* methodSourceFile <1>: CompiledMethod-basic. -* methodSourceFile <2>: CompiledCode-basic. -* methodSourceFile: CompiledBlock-basic. -* methodSourcePos <1>: CompiledMethod-basic. -* methodSourcePos <2>: CompiledCode-basic. -* methodSourcePos: CompiledBlock-basic. -* methodSourceString <1>: CompiledMethod-basic. -* methodSourceString <2>: CompiledCode-basic. -* methodSourceString: CompiledBlock-basic. -* millisecondClock: Time class-clocks. -* millisecondClockValue <1>: Time class-clocks. -* millisecondClockValue: Delay class-general inquiries. -* millisecondsPerDay: Time class-clocks. -* millisecondsToRun_: Time class-clocks. -* min_ <1>: Point-comparing. -* min_ <2>: Number-comparing. -* min_: Magnitude-misc methods. -* minute <1>: Time-accessing (ANSI for DateAndTimes). -* minute: DateTime-computations. -* minutes: Time-accessing (non ANSI & for Durations). -* minutes_: Time class-instance creation. -* module: Directory class-reading system defaults. -* moduleList: DLD class-dynamic linking. -* modules: Package-accessing. -* modulesFor_: PackageLoader class-accessing. -* month: Date-date computations. -* monthAbbreviation: Date-date computations. -* monthName: Date-date computations. -* mourn <1>: Object-finalization. -* mourn <2>: HomedAssociation-finalization. -* mourn: Association-finalization. -* mourn_: Collection-finalization. -* moveBy_: Rectangle-transforming. -* moveTo_: Rectangle-transforming. -* multiBecome_: Array-mutating objects. -* multiply_: LargePositiveInteger-primitive operations. -* mustBeBoolean: Object-exception handling. -* name <1>: VFS.VFSHandler-accessing. -* name <2>: Semaphore-accessing. -* name <3>: RecursionLock-accessing. -* name <4>: Process-accessing. -* name <5>: Package-accessing. -* name <6>: Metaclass-delegation. -* name <7>: FileDescriptor-accessing. -* name <8>: File-accessing. -* name <9>: Class-accessing instances and variables. -* name <10>: CFunctionDescriptor-accessing. -* name <11>: BindingDictionary-accessing. -* name <12>: Behavior-support for lightweight classes. -* name <13>: AutoloadClass-accessing. -* name: AbstractNamespace-printing. -* name_ <1>: VFS.VFSHandler-accessing. -* name_ <2>: VFS.RealFileHandler-accessing. -* name_ <3>: Semaphore-accessing. -* name_ <4>: RecursionLock-accessing. -* name_ <5>: Process-accessing. -* name_ <6>: Package-accessing. -* name_ <7>: File class-instance creation. -* name_ <8>: AutoloadClass-accessing. -* name_: AbstractNamespace-printing. -* name_environment_subclassOf_instanceVariableNames_variable_words_pointers_classVariableNames_poolDictionaries_category_: Metaclass-basic. -* name_realFileName_: VFS.DecodedFileHandler-files. -* nameAt_: Directory-accessing. -* nameIn_ <1>: SystemDictionary-printing. -* nameIn_ <2>: RootNamespace-printing. -* nameIn_ <3>: Namespace-printing. -* nameIn_ <4>: Metaclass-printing. -* nameIn_ <5>: ClassDescription-printing. -* nameIn_ <6>: BindingDictionary-accessing. -* nameIn_ <7>: Behavior-support for lightweight classes. -* nameIn_: AbstractNamespace-printing. -* nameOfDay_: Date class-basic. -* nameOfMonth_: Date class-basic. -* namesMatching_do_: Directory-enumerating. -* nan <1>: FloatQ class-characterization. -* nan <2>: FloatE class-characterization. -* nan: FloatD class-characterization. -* narrow: CObject-conversion. -* negated <1>: Number-misc math. -* negated <2>: LargeInteger-arithmetic. -* negated <3>: Fraction-optimized cases. -* negated <4>: Float-arithmetic. -* negated: Duration-arithmetics. -* negative <1>: Number-testing. -* negative <2>: LargePositiveInteger-numeric testing. -* negative <3>: LargeNegativeInteger-numeric testing. -* negative <4>: Float-testing. -* negative: Duration-arithmetics. -* negativeInfinity <1>: FloatQ class-characterization. -* negativeInfinity <2>: FloatE class-characterization. -* negativeInfinity: FloatD class-characterization. -* new <1>: ZeroDivide class-instance creation. -* new <2>: ValueHolder class-creating instances. -* new <3>: ValueAdaptor class-creating instances. -* new <4>: Time class-instance creation. -* new <5>: TextCollector class-accessing. -* new <6>: Symbol class-instance creation. -* new <7>: SortedCollection class-instance creation. -* new <8>: SharedQueue class-instance creation. -* new <9>: Semaphore class-instance creation. -* new <10>: RunArray class-instance creation. -* new <11>: RecursionLock class-instance creation. -* new <12>: Rectangle class-instance creation. -* new <13>: Random class-instance creation. -* new <14>: ProcessorScheduler class-instance creation. -* new <15>: Point class-instance creation. -* new <16>: OrderedCollection class-instance creation. -* new <17>: ObjectDumper class-instance creation. -* new <18>: NullValueHolder class-creating instances. -* new <19>: NetClients.URL class-instance creation. -* new <20>: Namespace class-disabling instance creation. -* new <21>: MappedCollection class-instance creation. -* new <22>: LookupTable class-instance creation. -* new <23>: HashedCollection class-instance creation. -* new <24>: ExceptionSet class-instance creation. -* new <25>: Exception class-instance creation. -* new <26>: Dictionary class-instance creation. -* new <27>: CType-C instance creation. -* new <28>: CoreException class-instance creation. -* new <29>: CObject class-instance creation. -* new <30>: CCompound class-instance creation. -* new <31>: Behavior-built ins. -* new <32>: Bag class-basic. -* new: AbstractNamespace class-instance creation. -* new_ <1>: WeakArray class-instance creation. -* new_ <2>: Symbol class-instance creation. -* new_ <3>: SortedCollection class-instance creation. -* new_ <4>: RunArray class-instance creation. -* new_ <5>: RootNamespace class-instance creation. -* new_ <6>: OrderedCollection class-instance creation. -* new_ <7>: Namespace class-disabling instance creation. -* new_ <8>: LargeArrayedCollection class-instance creation. -* new_ <9>: HashedCollection class-instance creation. -* new_ <10>: CPtrCType-accessing. -* new_ <11>: CObject class-instance creation. -* new_ <12>: Behavior-built ins. -* new_: Bag class-basic. -* new_withAll_: ArrayedCollection class-instance creation. -* newBuffer <1>: FileStream-buffering. -* newBuffer: FileDescriptor-initialize-release. -* newChild: CoreException-instance creation. -* newCollection_ <1>: LargeWordArray-overridden. -* newCollection_ <2>: LargeByteArray-overridden. -* newCollection_: LargeArray-overridden. -* newDay_month_year_: Date class-instance creation (Blue Book). -* newDay_monthIndex_year_: Date class-instance creation (Blue Book). -* newDay_year_: Date class-instance creation (Blue Book). -* newFromNumber_scale_: ScaledDecimal class-instance creation. -* newInFixedSpace: Behavior-instance creation. -* newInFixedSpace_: Behavior-instance creation. -* newMemberHandlerFor_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* newMeta_environment_subclassOf_instanceVariableNames_variable_words_pointers_classVariableNames_poolDictionaries_category_: Metaclass-basic. -* newMethod_header_literals_: CompiledCode class-instance creation. -* newMethod_header_method_: CompiledBlock class-instance creation. -* newMethod_header_numLiterals_: CompiledCode class-instance creation. -* newPage: Character class-constants. -* newProcess <1>: DirectedMessage-multiple process. -* newProcess: BlockClosure-multiple process. -* newProcessWith_: BlockClosure-multiple process. -* newsGroup: NetClients.URL-accessing. -* newStruct_declaration_: CCompound class-subclass creation. -* next <1>: TokenStream-basic. -* next <2>: Stream-accessing-reading. -* next <3>: SharedQueue-accessing. -* next <4>: Random-basic. -* next <5>: Random class-shortcuts. -* next <6>: PositionableStream-accessing-reading. -* next <7>: ObjectDumper-stream interface. -* next <8>: FileStream-basic. -* next <9>: FileDescriptor-basic. -* next: ByteStream-basic. -* next_ <1>: Stream-accessing-reading. -* next_ <2>: FileStream-overriding inherited methods. -* next_: FileDescriptor-overriding inherited methods. -* next_put_ <1>: TextCollector-accessing. -* next_put_: Stream-accessing-writing. -* next_putAll_startingAt_: Stream-accessing-writing. -* nextAvailable_: Stream-accessing-reading. -* nextByte <1>: FileStream-basic. -* nextByte <2>: FileDescriptor-basic. -* nextByte: ByteStream-basic. -* nextByteArray_ <1>: FileStream-overriding inherited methods. -* nextByteArray_ <2>: FileDescriptor-overriding inherited methods. -* nextByteArray_: ByteStream-basic. -* nextHunk <1>: FileStream-buffering. -* nextHunk: FileDescriptor-initialize-release. -* nextInstance: Object-built ins. -* nextLine <1>: Stream-accessing-reading. -* nextLine: FileStream-overriding inherited methods. -* nextLink: Link-basic. -* nextLink_ <1>: Link-basic. -* nextLink_: Link class-instance creation. -* nextLong: ByteStream-basic. -* nextMatchFor_: Stream-accessing-reading. -* nextPut_ <1>: WriteStream-accessing-writing. -* nextPut_ <2>: TokenStream-write methods. -* nextPut_ <3>: TextCollector-accessing. -* nextPut_ <4>: Stream-accessing-writing. -* nextPut_ <5>: SharedQueue-accessing. -* nextPut_ <6>: Random-basic. -* nextPut_ <7>: ObjectDumper-stream interface. -* nextPut_ <8>: FileStream-basic. -* nextPut_ <9>: FileDescriptor-basic. -* nextPut_: ByteStream-basic. -* nextPutAll_ <1>: TextCollector-accessing. -* nextPutAll_ <2>: Stream-accessing-writing. -* nextPutAll_ <3>: FileStream-overriding inherited methods. -* nextPutAll_ <4>: FileDescriptor-overriding inherited methods. -* nextPutAll_: ByteStream-basic. -* nextPutAllFlush_: FileStream-overriding inherited methods. -* nextPutByte_ <1>: FileStream-basic. -* nextPutByte_ <2>: FileDescriptor-basic. -* nextPutByte_: ByteStream-basic. -* nextPutByteArray_ <1>: FileStream-basic. -* nextPutByteArray_ <2>: FileDescriptor-basic. -* nextPutByteArray_: ByteStream-basic. -* nextPutLong_: ByteStream-basic. -* nextPutShort_: ByteStream-basic. -* nextShort: ByteStream-basic. -* nextSignedByte: ByteStream-basic. -* nextUlong: ByteStream-basic. -* nextUshort: ByteStream-basic. -* nextValidOop: SmallInteger-built ins. -* nl <1>: Stream-character writing. -* nl: Character class-constants. -* nlTab: Stream-character writing. -* noMask_: Integer-bit operators. -* nonVersionedInstSize: Class-saving and loading. -* normal: Point-point functions. -* noRunnableProcess: Object-exception handling. -* not <1>: True-basic. -* not <2>: False-basic. -* not: Boolean-basic. -* notEmpty <1>: LinkedList-testing. -* notEmpty: Collection-testing collections. -* notify: Semaphore-builtins. -* notifyAll: Semaphore-builtins. -* notNil <1>: UndefinedObject-testing. -* notNil: Object-testing functionality. -* notYetImplemented: Object-built ins. -* now <1>: Time class-instance creation. -* now: DateTime class-instance creation. -* nthOuterContext_: BlockContext-accessing. -* nul: Character class-constants. -* null <1>: ValueHolder class-creating instances. -* null: Promise class-creating instances. -* numArgs <1>: Symbol-basic. -* numArgs <2>: ContextPart-accessing. -* numArgs <3>: CompiledMethod-accessing. -* numArgs <4>: CompiledCode-accessing. -* numArgs <5>: CompiledBlock-accessing. -* numArgs: BlockClosure-accessing. -* numArgs_numTemps_bytecodes_depth_literals_ <1>: CompiledBlock class-instance creation. -* numArgs_numTemps_bytecodes_depth_literals_: BlockClosure class-instance creation. -* numberOfElements: CArrayCType-accessing. -* numCompactions: ObjectMemory-accessing. -* numerator <1>: Integer-accessing. -* numerator: Fraction-accessing. -* numerator_denominator_: Fraction class-instance creation. -* numFixedOOPs: ObjectMemory-accessing. -* numFreeOTEs: ObjectMemory-accessing. -* numGlobalGCs: ObjectMemory-accessing. -* numGrowths: ObjectMemory-accessing. -* numLiterals <1>: CompiledCode-accessing. -* numLiterals: CompiledBlock-accessing. -* numOldOOPs: ObjectMemory-accessing. -* numOTEs: ObjectMemory-accessing. -* numScavenges: ObjectMemory-accessing. -* numTemps <1>: ContextPart-accessing. -* numTemps <2>: CompiledMethod-accessing. -* numTemps <3>: CompiledCode-accessing. -* numTemps <4>: CompiledBlock-accessing. -* numTemps: BlockClosure-accessing. -* numWeakOOPs: ObjectMemory-accessing. -* object <1>: SingletonProxy-saving and restoring. -* object <2>: PluggableProxy-saving and restoring. -* object <3>: DumperProxy-saving and restoring. -* object: AlternativeObjectProxy-accessing. -* object_: AlternativeObjectProxy-accessing. -* objectAt_: ByteArray-more advanced accessing. -* objectAt_put_: ByteArray-more advanced accessing. -* objectsAndRunLengthsDo_: RunArray-enumerating. -* occurrencesOf_ <1>: SortedCollection-searching. -* occurrencesOf_ <2>: HashedCollection-testing collections. -* occurrencesOf_ <3>: Dictionary-dictionary testing. -* occurrencesOf_ <4>: Collection-testing collections. -* occurrencesOf_: Bag-testing collections. -* odd <1>: Number-testing. -* odd: Integer-math methods. -* offset: DateTime-time zones. -* offset_: DateTime-time zones. -* oldSpaceSize: ObjectMemory-accessing. -* oldSpaceUsedBytes: ObjectMemory-accessing. -* on_ <1>: WriteStream class-instance creation. -* on_ <2>: TokenStream class-instance creation. -* on_ <3>: SingletonProxy class-instance creation. -* on_ <4>: ReadWriteStream class-instance creation. -* on_ <5>: ReadStream class-instance creation. -* on_ <6>: PositionableStream class-instance creation. -* on_ <7>: PluggableProxy class-accessing. -* on_ <8>: ObjectDumper class-instance creation. -* on_ <9>: NetClients.URIResolver class-instance creation. -* on_ <10>: FileDescriptor class-instance creation. -* on_ <11>: File class-instance creation. -* on_ <12>: DumperProxy class-instance creation. -* on_: AlternativeObjectProxy class-instance creation. -* on_aspect_: PluggableAdaptor class-creating instances. -* on_do_: BlockClosure-exception handling. -* on_do_on_do_: BlockClosure-exception handling. -* on_do_on_do_on_do_: BlockClosure-exception handling. -* on_do_on_do_on_do_on_do_: BlockClosure-exception handling. -* on_do_on_do_on_do_on_do_on_do_: BlockClosure-exception handling. -* on_from_to_: PositionableStream class-instance creation. -* on_getSelector_putSelector_: PluggableAdaptor class-creating instances. -* on_index_: PluggableAdaptor class-creating instances. -* on_key_: PluggableAdaptor class-creating instances. -* on_startingAt_for_: FileSegment class-basic. -* one: ScaledDecimal-constants. -* onStream_: TokenStream class-instance creation. -* open_ <1>: FileDescriptor class-instance creation. -* open_: File-file operations. -* open_ifFail_ <1>: VFS.VFSHandler-file operations. -* open_ifFail_: File-file operations. -* open_mode_: FileDescriptor class-instance creation. -* open_mode_ifFail_ <1>: VFS.VFSHandler-file operations. -* open_mode_ifFail_ <2>: VFS.RealFileHandler-file operations. -* open_mode_ifFail_ <3>: VFS.ArchiveMemberHandler-file operations. -* open_mode_ifFail_: FileDescriptor class-instance creation. -* openDescriptor_: File-file operations. -* openDescriptor_ifFail_: VFS.VFSHandler-file operations. -* openDir_: VFS.VFSHandler-C functions. -* openOn_: NetClients.URIResolver class-api. -* openOn_ifFail_: NetClients.URIResolver class-api. -* openStreamOn_: NetClients.URIResolver class-api. -* openStreamOn_ifFail_: NetClients.URIResolver class-api. -* openTemporaryFile_: FileDescriptor class-instance creation. -* or_ <1>: True-basic. -* or_ <2>: False-basic. -* or_: Boolean-basic. -* origin: Rectangle-accessing. -* origin_: Rectangle-accessing. -* origin_corner_ <1>: Rectangle-accessing. -* origin_corner_: Rectangle class-instance creation. -* origin_extent_ <1>: Rectangle-accessing. -* origin_extent_: Rectangle class-instance creation. -* outer: Signal-exception handling. -* outerContext <1>: BlockContext-accessing. -* outerContext: BlockClosure-accessing. -* outerContext_: BlockClosure-accessing. -* parent <1>: VFS.ArchiveMemberHandler-accessing. -* parent: CoreException-accessing. -* parent_: VFS.ArchiveMemberHandler-initializing. -* parentContext: ContextPart-accessing. -* parentContext_: ContextPart-accessing. -* parserClass: Behavior-pluggable behavior (not yet implemented). -* pass: Signal-exception handling. -* password: NetClients.URL-accessing. -* password_: NetClients.URL-accessing. -* path <1>: VariableBinding-printing. -* path <2>: NetClients.URL-accessing. -* path: File-file name management. -* path_: NetClients.URL-accessing. -* pathFor_: File class-file name management. -* pathSeparator: Directory class-file name management. -* pathSeparatorString: Directory class-file name management. -* peek <1>: SharedQueue-accessing. -* peek <2>: PositionableStream-accessing-reading. -* peek <3>: FileStream-basic. -* peek: FileDescriptor-basic. -* peekFor_: PositionableStream-accessing-reading. -* pendingWrite: FileStream-buffering. -* perform_: Object-built ins. -* perform_with_: Object-built ins. -* perform_with_with_: Object-built ins. -* perform_with_with_with_: Object-built ins. -* perform_withArguments_: Object-built ins. -* pi <1>: FloatQ class-characterization. -* pi <2>: FloatE class-characterization. -* pi: Float class-characterization. -* popen_dir_: FileDescriptor class-instance creation. -* popen_dir_ifFail_: FileDescriptor class-instance creation. -* port: NetClients.URL-accessing. -* port_: NetClients.URL-accessing. -* position <1>: PositionableStream-positioning. -* position <2>: FileStream-basic. -* position: FileDescriptor-basic. -* position_ <1>: ReadWriteStream-positioning. -* position_ <2>: PositionableStream-positioning. -* position_ <3>: FileStream-basic. -* position_: FileDescriptor-basic. -* positive <1>: Number-testing. -* positive <2>: LargePositiveInteger-numeric testing. -* positive <3>: LargeNegativeInteger-numeric testing. -* positive <4>: Float-testing. -* positive: Duration-arithmetics. -* positiveDifference_: Number-misc math. -* postCopy <1>: Object-copying. -* postCopy <2>: NetClients.URL-copying. -* postCopy: CoreException-basic. -* postData: NetClients.URL-accessing. -* postData_: NetClients.URL-accessing. -* postLoad <1>: WeakArray-loading. -* postLoad <2>: SortedCollection-saving and loading. -* postLoad <3>: Object-saving and loading. -* postLoad: HashedCollection-saving and loading. -* postStore <1>: Object-saving and loading. -* postStore: HashedCollection-saving and loading. -* precision <1>: FloatQ class-characterization. -* precision <2>: FloatE class-characterization. -* precision: FloatD class-characterization. -* prerequisites: Package-accessing. -* prerequisitesFor_: PackageLoader class-accessing. -* preStore <1>: SortedCollection-saving and loading. -* preStore: Object-saving and loading. -* primaryInstance: Metaclass-accessing. -* primAt_: HashedCollection-builtins. -* primAt_put_: HashedCollection-builtins. -* primCreateDir_mode_: VFS.VFSHandler-C functions. -* primDefineExternFunc_: DLD class-dynamic linking. -* primDivide_: LargePositiveInteger-helper byte-level methods. -* primError_: Object-built ins. -* primHash: Float-built ins. -* primIsExecutable_: VFS.VFSHandler-C functions. -* primIsReadable_: VFS.VFSHandler-C functions. -* primIsWriteable_: VFS.VFSHandler-C functions. -* primitive <1>: CompiledMethod-accessing. -* primitive: CompiledCode-accessing. -* primitiveFailed: Object-built ins. -* primMillisecondClock: Time class-builtins. -* primNew_name_: AbstractNamespace class-instance creation. -* primObject: AlternativeObjectProxy-accessing. -* primRemoveDir_: VFS.VFSHandler-C functions. -* primRename_to_: VFS.VFSHandler-C functions. -* primReplaceFrom_to_with_startingAt_ <1>: String-built ins. -* primReplaceFrom_to_with_startingAt_ <2>: LargeInteger-built-ins. -* primReplaceFrom_to_with_startingAt_: ByteArray-built ins. -* primSecondClock: Time class-builtins. -* primSize: HashedCollection-builtins. -* primTerminate: Process-basic. -* primUnlink_: VFS.VFSHandler-C functions. -* primWorking_: Directory class-C functions. -* print: Object-printing. -* print_ <1>: TextCollector-printing. -* print_: Stream-printing. -* printHierarchy: Behavior-printing hierarchy. -* printNl: Object-printing. -* printOn_ <1>: VariableBinding-printing. -* printOn_ <2>: ValueAdaptor-printing. -* printOn_ <3>: UndefinedObject-printing. -* printOn_ <4>: True-printing. -* printOn_ <5>: Time-arithmetic. -* printOn_ <6>: TextCollector-printing. -* printOn_ <7>: SymLink-printing. -* printOn_ <8>: Symbol-storing. -* printOn_ <9>: Semaphore-printing. -* printOn_ <10>: ScaledDecimal-printing. -* printOn_ <11>: RecursionLock-printing. -* printOn_ <12>: Rectangle-printing. -* printOn_ <13>: Promise-printing. -* printOn_ <14>: ProcessorScheduler-printing. -* printOn_ <15>: Process-printing. -* printOn_ <16>: Point-printing. -* printOn_ <17>: Package-accessing. -* printOn_ <18>: Object-printing. -* printOn_ <19>: NetClients.URL-printing. -* printOn_ <20>: MethodContext-printing. -* printOn_ <21>: Metaclass-printing. -* printOn_ <22>: Message-basic. -* printOn_ <23>: LookupKey-printing. -* printOn_ <24>: Interval-printing. -* printOn_ <25>: Integer-printing. -* printOn_ <26>: Fraction-printing. -* printOn_ <27>: Float-printing. -* printOn_ <28>: FileDescriptor-printing. -* printOn_ <29>: False-printing. -* printOn_ <30>: Duration-arithmetics. -* printOn_ <31>: DirectedMessage-basic. -* printOn_ <32>: Dictionary-printing. -* printOn_ <33>: DateTime-printing. -* printOn_ <34>: Date-printing. -* printOn_ <35>: CompiledMethod-printing. -* printOn_ <36>: CompiledBlock-printing. -* printOn_ <37>: Collection-printing. -* printOn_ <38>: CObject-accessing. -* printOn_ <39>: Class-printing. -* printOn_ <40>: CharacterArray-printing. -* printOn_ <41>: Character-printing. -* printOn_ <42>: CFunctionDescriptor-printing. -* printOn_ <43>: BlockContext-printing. -* printOn_ <44>: Bag-printing. -* printOn_ <45>: Association-printing. -* printOn_ <46>: Array-printing. -* printOn_: AbstractNamespace-printing. -* printOn_base_: Integer-printing. -* printOn_in_ <1>: SystemDictionary-printing. -* printOn_in_ <2>: RootNamespace-printing. -* printOn_in_ <3>: Namespace-printing. -* printOn_in_ <4>: Metaclass-printing. -* printOn_in_ <5>: ClassDescription-printing. -* printOn_in_ <6>: BindingDictionary-printing. -* printOn_in_: Behavior-support for lightweight classes. -* printString <1>: Object-printing. -* printString: Integer-printing. -* printString_: Integer-printing. -* printStringRadix_: Integer-printing. -* printSubclasses_using_: Behavior-printing hierarchy. -* printXmlOn_collection_tag_: Package-accessing. -* priority: Process-accessing. -* priority_: Process-accessing. -* priorityName_: ProcessorScheduler-priorities. -* privateMethods: Behavior-compilation (alternative). -* processesAt_: ProcessorScheduler-basic. -* proxyClassFor_: ObjectDumper class-establishing proxy classes. -* proxyFor_: ObjectDumper class-establishing proxy classes. -* ptrType: CType-accessing. -* publicMethods: Behavior-compilation (alternative). -* putenv_: SystemDictionary-C functions. -* query: NetClients.URL-accessing. -* query_: NetClients.URL-accessing. -* queueInterrupt_: Process-accessing. -* quit: ObjectMemory class-builtins. -* quit_: ObjectMemory class-builtins. -* quo_ <1>: SmallInteger-built ins. -* quo_ <2>: Number-arithmetic. -* quo_ <3>: LargeZeroInteger-arithmetic. -* quo_: LargeInteger-arithmetic. -* radiansToDegrees: Number-converting. -* radix: Float class-characterization. -* radix_: Integer-printing. -* raisedTo_ <1>: Number-misc math. -* raisedTo_: Float-built ins. -* raisedToInteger_ <1>: Number-misc math. -* raisedToInteger_: Fraction-optimized cases. -* raisePriority: Process-basic. -* read: FileDescriptor class-instance creation. -* read_: FileDescriptor-low-level access. -* read_from_to_: FileDescriptor-low-level access. -* read_numBytes_: FileDescriptor-low-level access. -* readDir_: VFS.VFSHandler-C functions. -* readFrom_ <1>: Time class-instance creation. -* readFrom_ <2>: Number class-converting. -* readFrom_ <3>: DateTime class-instance creation. -* readFrom_: Date class-instance creation (Blue Book). -* reads_ <1>: CompiledMethod-testing. -* reads_: CompiledCode-testing accesses. -* readStream <1>: SequenceableCollection-enumerating. -* readStream: File-file operations. -* readWrite: FileDescriptor class-instance creation. -* readWriteStream: SequenceableCollection-enumerating. -* realFileName <1>: VFS.VFSHandler-accessing. -* realFileName <2>: VFS.DecodedFileHandler-files. -* realFileName: VFS.ArchiveMemberHandler-finalization. -* rebuildTable: Symbol class-symbol table. -* receiver <1>: MessageNotUnderstood-accessing. -* receiver <2>: DirectedMessage-accessing. -* receiver <3>: ContextPart-accessing. -* receiver: BlockClosure-accessing. -* receiver_ <1>: DirectedMessage-accessing. -* receiver_: BlockClosure-accessing. -* reciprocal <1>: Number-arithmetic. -* reciprocal: Fraction-optimized cases. -* reclaimedBytesPerGlobalGC: ObjectMemory-accessing. -* reclaimedBytesPerScavenge: ObjectMemory-accessing. -* reclaimedPercentPerScavenge: ObjectMemory-accessing. -* recompile_: Behavior-method dictionary. -* recompile_notifying_: Behavior-method dictionary. -* reconstructOriginalObject <1>: Object-saving and loading. -* reconstructOriginalObject: DirectedMessage-saving and loading. -* record_: FileStream class-file-in. -* refersTo_: CompiledCode-testing accesses. -* refresh <1>: VFS.VFSHandler-accessing. -* refresh <2>: VFS.RealFileHandler-accessing. -* refresh <3>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* refresh <4>: VFS.ArchiveMemberHandler-accessing. -* refresh: File-accessing. -* refreshDependencies: PackageLoader class-accessing. -* register_forClass_: VFS.VFSHandler class-initializing. -* registerProxyClass_for_: ObjectDumper class-establishing proxy classes. -* rehash <1>: WeakValueLookupTable-rehashing. -* rehash <2>: MethodDictionary-rehashing. -* rehash <3>: LookupTable-rehashing. -* rehash <4>: HashedCollection-rehashing. -* rehash: Dictionary-rehashing. -* reinvokeFor_: Message-basic. -* reject_ <1>: MappedCollection-basic. -* reject_ <2>: Dictionary-dictionary enumerating. -* reject_ <3>: Collection-enumeration. -* reject_: ArrayedCollection-enumerating the elements of a collection. -* release <1>: VFS.ExternalArchiveFileHandler-releasing. -* release <2>: VFS.DecodedFileHandler-files. -* release <3>: VFS.ArchiveMemberHandler-finalization. -* release <4>: VFS.ArchiveFileHandler-directory operations. -* release <5>: UndefinedObject-dependents access. -* release: Object-dependents access. -* relocateFrom_to_: FileSegment class-installing. -* relocateFrom_to_map_: FileSegment-basic. -* relocateTo_: LargeArraySubpart-modifying. -* rem_ <1>: Number-arithmetic. -* rem_ <2>: LargeZeroInteger-arithmetic. -* rem_: LargeInteger-arithmetic. -* remove <1>: VFS.VFSHandler-file operations. -* remove <2>: VFS.RealFileHandler-file operations. -* remove <3>: VFS.ArchiveMemberHandler-file operations. -* remove <4>: VFS.ArchiveFileHandler-file operations. -* remove: File-file operations. -* remove_ <1>: MethodDictionary-removing. -* remove_ <2>: LookupTable-removing. -* remove_ <3>: File class-file operations. -* remove_ <4>: Dictionary-dictionary removing. -* remove_: Collection-removing. -* remove_ifAbsent_ <1>: WeakSet-accessing. -* remove_ifAbsent_ <2>: OrderedCollection-removing. -* remove_ifAbsent_ <3>: LookupTable-removing. -* remove_ifAbsent_ <4>: LinkedList-adding. -* remove_ifAbsent_ <5>: HashedCollection-removing. -* remove_ifAbsent_ <6>: Dictionary-dictionary removing. -* remove_ifAbsent_ <7>: Collection-removing. -* remove_ifAbsent_: Bag-removing. -* removeAll_: Collection-removing. -* removeAll_ifAbsent_: Collection-removing. -* removeAllKeys_: Dictionary-dictionary removing. -* removeAllKeys_ifAbsent_: Dictionary-dictionary removing. -* removeAtIndex_ <1>: RunArray-removing. -* removeAtIndex_: OrderedCollection-removing. -* removeCategory_: ClassDescription-organization of messages and classes. -* removeClassVarName_ <1>: Metaclass-delegation. -* removeClassVarName_: Class-accessing instances and variables. -* removeDependent_: Object-dependents access. -* removeFeature_: SystemDictionary-special accessing. -* removeFirst <1>: RunArray-removing. -* removeFirst <2>: OrderedCollection-removing. -* removeFirst: LinkedList-adding. -* removeFirst_: LargeArraySubpart-modifying. -* removeInstVarName_: Behavior-instance variables. -* removeKey_: Dictionary-dictionary removing. -* removeKey_ifAbsent_ <1>: MethodDictionary-removing. -* removeKey_ifAbsent_ <2>: LookupTable-removing. -* removeKey_ifAbsent_: Dictionary-dictionary removing. -* removeLast <1>: SortedCollection-basic. -* removeLast <2>: RunArray-removing. -* removeLast <3>: OrderedCollection-removing. -* removeLast: LinkedList-adding. -* removeLast_: LargeArraySubpart-modifying. -* removeLastUnwindPoint: ContextPart class-exception handling. -* removeMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* removeMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* removeSelector_: Behavior-method dictionary. -* removeSelector_ifAbsent_: Behavior-method dictionary. -* removeSharedPool_ <1>: Metaclass-delegation. -* removeSharedPool_: Class-accessing instances and variables. -* removeSubclass_ <1>: UndefinedObject-class creation. -* removeSubclass_: Behavior-creating a class hierarchy. -* removeToBeFinalized: Object-finalization. -* rename_to_: File class-file operations. -* renameTo_ <1>: VFS.VFSHandler-file operations. -* renameTo_ <2>: VFS.RealFileHandler-file operations. -* renameTo_ <3>: VFS.ArchiveMemberHandler-file operations. -* renameTo_: File-file operations. -* repeat: BlockClosure-control structures. -* replace_withStringBase_ <1>: LargeZeroInteger-printing. -* replace_withStringBase_: LargePositiveInteger-converting. -* replaceAll_with_: SequenceableCollection-replacing items. -* replaceFrom_to_with_: SequenceableCollection-replacing items. -* replaceFrom_to_with_startingAt_ <1>: String-built ins. -* replaceFrom_to_with_startingAt_ <2>: SequenceableCollection-replacing items. -* replaceFrom_to_with_startingAt_: ByteArray-built ins. -* replaceFrom_to_withByteArray_startingAt_: String-built ins. -* replaceFrom_to_withObject_: SequenceableCollection-replacing items. -* replaceFrom_to_withString_startingAt_: ByteArray-built ins. -* requestString: NetClients.URL-accessing. -* require_: FileStream class-file-in. -* reset <1>: PositionableStream-positioning. -* reset: FileDescriptor-basic. -* resignalAs_: Signal-exception handling. -* respondsTo_: Object-testing functionality. -* resume <1>: Signal-exception handling. -* resume: Process-builtins. -* resume_: Signal-exception handling. -* resumptionTime: Delay-accessing. -* retry: Signal-exception handling. -* retry_coercing_: Number-retrying. -* retryDifferenceCoercing_: Number-retrying. -* retryDivisionCoercing_: Number-retrying. -* retryEqualityCoercing_: Number-retrying. -* retryError: Number-retrying. -* retryInequalityCoercing_: Number-retrying. -* retryMultiplicationCoercing_: Number-retrying. -* retryRelationalOp_coercing_: Number-retrying. -* retrySumCoercing_: Number-retrying. -* retryUsing_: Signal-exception handling. -* return: Signal-exception handling. -* return_: Signal-exception handling. -* reverse <1>: SequenceableCollection-enumerating. -* reverse <2>: Interval-basic. -* reverse: ArrayedCollection-copying Collections. -* reverseContents <1>: WriteStream-accessing-writing. -* reverseContents <2>: ReadStream-accessing-reading. -* reverseContents <3>: PositionableStream-accessing-reading. -* reverseContents: FileDescriptor-overriding inherited methods. -* reverseDo_: SequenceableCollection-enumerating. -* rewindDir_: VFS.VFSHandler-C functions. -* right: Rectangle-accessing. -* right_: Rectangle-accessing. -* rightCenter: Rectangle-accessing. -* rockBottomPriority: ProcessorScheduler-priorities. -* rounded <1>: Rectangle-truncation and round off. -* rounded <2>: Point-truncation and round off. -* rounded <3>: Number-truncation and round off. -* rounded: Integer-converting. -* roundTo_: Number-truncation and round off. -* sameAs_: CharacterArray-comparing. -* scalarIndex <1>: CUShort-accessing. -* scalarIndex <2>: CUShort class-accessing. -* scalarIndex <3>: CULong-accessing. -* scalarIndex <4>: CULong class-accessing. -* scalarIndex <5>: CUInt-accessing. -* scalarIndex <6>: CUInt class-accessing. -* scalarIndex <7>: CUChar-accessing. -* scalarIndex <8>: CUChar class-getting info. -* scalarIndex <9>: CSmalltalk-accessing. -* scalarIndex <10>: CSmalltalk class-accessing. -* scalarIndex <11>: CShort-accessing. -* scalarIndex <12>: CShort class-accessing. -* scalarIndex <13>: CObject-conversion. -* scalarIndex <14>: CObject class-conversion. -* scalarIndex <15>: CLong-accessing. -* scalarIndex <16>: CLong class-accessing. -* scalarIndex <17>: CInt-accessing. -* scalarIndex <18>: CInt class-accessing. -* scalarIndex <19>: CFloat-accessing. -* scalarIndex <20>: CFloat class-accessing. -* scalarIndex <21>: CDouble-accessing. -* scalarIndex <22>: CDouble class-accessing. -* scalarIndex <23>: CChar-accessing. -* scalarIndex <24>: CChar class-accessing. -* scalarIndex <25>: CByte-accessing. -* scalarIndex: CByte class-conversion. -* scaleBy_: Rectangle-transforming. -* scanBacktraceFor_do_: ContextPart-enumerating. -* scavenge: ObjectMemory class-builtins. -* scavengesBeforeTenuring: ObjectMemory-derived information. -* scheme: NetClients.URL-accessing. -* scheme_: NetClients.URL-accessing. -* scheme_host_port_path_: NetClients.URL class-instance creation. -* scheme_path_: NetClients.URL class-instance creation. -* scheme_username_password_host_port_path_: NetClients.URL class-instance creation. -* scopeHas_ifTrue_: Behavior-testing the method dictionary. -* scramble: SmallInteger-builtins. -* second <1>: Time-accessing (ANSI for DateAndTimes). -* second: DateTime-computations. -* secondClock: Time class-clocks. -* seconds: Time-accessing (non ANSI & for Durations). -* seconds_: Time class-instance creation. -* seed_: Random class-instance creation. -* select_ <1>: MappedCollection-basic. -* select_ <2>: Dictionary-dictionary enumerating. -* select_ <3>: Collection-enumeration. -* select_: ArrayedCollection-enumerating the elements of a collection. -* selector <1>: SystemExceptions.WrongMessageSent-accessing. -* selector <2>: MethodInfo-accessing. -* selector <3>: Message-accessing. -* selector <4>: ContextPart-accessing. -* selector <5>: CompiledMethod-accessing. -* selector <6>: CompiledCode-accessing. -* selector: CompiledBlock-accessing. -* selector_ <1>: SystemExceptions.WrongMessageSent-accessing. -* selector_ <2>: MethodInfo-accessing. -* selector_ <3>: Message-accessing. -* selector_ <4>: CompiledMethod-accessing. -* selector_ <5>: CompiledCode-accessing. -* selector_: CompiledBlock-accessing. -* selector_arguments_ <1>: Message class-creating instances. -* selector_arguments_: DirectedMessage class-creating instances. -* selector_arguments_receiver_: DirectedMessage class-creating instances. -* selectorAt_: Behavior-accessing the methodDictionary. -* selectors: Behavior-accessing the methodDictionary. -* selectorsAndMethodsDo_: Behavior-method dictionary. -* selectSubclasses_: Behavior-enumerating. -* selectSubspaces_: AbstractNamespace-namespace hierarchy. -* selectSuperclasses_: Behavior-enumerating. -* selectSuperspaces_: AbstractNamespace-namespace hierarchy. -* send: DirectedMessage-basic. -* sender: MethodContext-accessing. -* sendTo_: Message-basic. -* set_to_: AbstractNamespace-overrides for superspaces. -* set_to_ifAbsent_ <1>: RootNamespace-overrides for superspaces. -* set_to_ifAbsent_ <2>: Namespace-overrides for superspaces. -* set_to_ifAbsent_: AbstractNamespace-overrides for superspaces. -* setBit_: Integer-bit operators. -* setPriorityFrom_to_suspend_: Process-accessing. -* setToEnd <1>: PositionableStream-positioning. -* setToEnd: FileDescriptor-overriding inherited methods. -* setTraceFlag_to_: SystemDictionary-builtins. -* shallowCopy <1>: WeakArray-conversion. -* shallowCopy <2>: UndefinedObject-basic. -* shallowCopy <3>: Symbol-basic. -* shallowCopy <4>: RunArray-copying. -* shallowCopy <5>: Object-built ins. -* shallowCopy <6>: Number-copying. -* shallowCopy <7>: HashedCollection-copying. -* shallowCopy <8>: Boolean-overriding. -* shallowCopy <9>: BlockClosure-overriding. -* shallowCopy: BindingDictionary-copying. -* sharedPools <1>: Metaclass-delegation. -* sharedPools <2>: Class-accessing instances and variables. -* sharedPools: Behavior-accessing instances and variables. -* sharedVariableString: ClassDescription-printing. -* shortAt_ <1>: Memory class-accessing. -* shortAt_: ByteArray-more advanced accessing. -* shortAt_put_ <1>: Memory class-accessing. -* shortAt_put_: ByteArray-more advanced accessing. -* shortMonthName: Date-compatibility (non-ANSI). -* shortNameOfMonth_: Date class-basic. -* shouldNotImplement: Object-built ins. -* show_: TextCollector-accessing. -* showCr_: TextCollector-accessing. -* showOnNewLine_: TextCollector-accessing. -* siblings <1>: RootNamespace-namespace hierarchy. -* siblings <2>: Namespace-namespace hierarchy. -* siblings: AbstractNamespace-namespace hierarchy. -* siblingsDo_ <1>: RootNamespace-namespace hierarchy. -* siblingsDo_ <2>: Namespace-namespace hierarchy. -* siblingsDo_: AbstractNamespace-namespace hierarchy. -* sign <1>: Number-testing. -* sign <2>: LargeZeroInteger-numeric testing. -* sign <3>: LargePositiveInteger-numeric testing. -* sign <4>: LargeNegativeInteger-numeric testing. -* sign: Float-testing. -* signal <1>: Semaphore-builtins. -* signal <2>: Exception-exception signaling. -* signal <3>: Exception class-instance creation. -* signal: CoreException-exception handling. -* signal_ <1>: Exception-exception signaling. -* signal_: Exception class-instance creation. -* signal_atMilliseconds_: ProcessorScheduler-timed invocation. -* signal_onInterrupt_: ProcessorScheduler-timed invocation. -* signalClass: CoreException-accessing. -* signalClass_: CoreException-accessing. -* signalOn_ <1>: SystemExceptions.InvalidValue class-signaling. -* signalOn_: SystemExceptions.EndOfStream class-signaling. -* signalOn_mustBe_: SystemExceptions.WrongClass class-signaling. -* signalOn_mustBeBetween_and_: SystemExceptions.ArgumentOutOfRange class-signaling. -* signalOn_reason_: SystemExceptions.InvalidValue class-signaling. -* signalOn_useInstead_: SystemExceptions.WrongMessageSent class-signaling. -* signalOn_what_: SystemExceptions.NotFound class-accessing. -* signalOn_withIndex_: SystemExceptions.IndexOutOfRange class-signaling. -* signalWith_: CoreException-exception handling. -* signalWith_with_: CoreException-exception handling. -* signalWithArguments_: CoreException-exception handling. -* signByte <1>: FloatQ class-byte-order dependancies. -* signByte <2>: FloatE class-byte-order dependancies. -* signByte <3>: FloatD class-byte-order dependancies. -* signByte: Float class-byte-order dependancies. -* similarityTo_: String-built ins. -* sin <1>: Number-misc math. -* sin: Float-built ins. -* singleStep: Process-basic. -* singleStepWaitingOn_: Process-builtins. -* size <1>: WriteStream-accessing. -* size <2>: WeakArray-accessing. -* size <3>: VFS.VFSHandler-accessing. -* size <4>: VFS.RealFileHandler-accessing. -* size <5>: VFS.ArchiveMemberHandler-accessing. -* size <6>: String-built ins. -* size <7>: RunArray-basic. -* size <8>: ReadStream-accessing-reading. -* size <9>: PositionableStream-positioning. -* size <10>: OrderedCollection-accessing. -* size <11>: Object-built ins. -* size <12>: Namespace-overrides for superspaces. -* size <13>: MappedCollection-basic. -* size <14>: LinkedList-testing. -* size <15>: Link-iteration. -* size <16>: LargeZeroInteger-accessing. -* size <17>: LargeInteger-built-ins. -* size <18>: LargeArrayedCollection-basic. -* size <19>: Interval-basic. -* size <20>: HashedCollection-testing collections. -* size <21>: FileStream-basic. -* size <22>: FileSegment-basic. -* size <23>: FileDescriptor-basic. -* size <24>: File-accessing. -* size <25>: ContextPart-accessing. -* size <26>: Collection-testing collections. -* size <27>: Bag-testing collections. -* size: ArrayedCollection-built ins. -* size_stCtime_stMtime_stAtime_isDirectory_: VFS.ArchiveMemberHandler-initializing. -* sizeof <1>: CUShort-accessing. -* sizeof <2>: CUShort class-accessing. -* sizeof <3>: CULong-accessing. -* sizeof <4>: CULong class-accessing. -* sizeof <5>: CUInt-accessing. -* sizeof <6>: CUInt class-accessing. -* sizeof <7>: CUChar-accessing. -* sizeof <8>: CUChar class-getting info. -* sizeof <9>: CType-accessing. -* sizeof <10>: CSmalltalk-accessing. -* sizeof <11>: CSmalltalk class-accessing. -* sizeof <12>: CShort-accessing. -* sizeof <13>: CShort class-accessing. -* sizeof <14>: CPtr-accessing. -* sizeof <15>: CLong-accessing. -* sizeof <16>: CLong class-accessing. -* sizeof <17>: CInt-accessing. -* sizeof <18>: CInt class-accessing. -* sizeof <19>: CFloat-accessing. -* sizeof <20>: CFloat class-accessing. -* sizeof <21>: CDouble-accessing. -* sizeof <22>: CDouble class-accessing. -* sizeof <23>: CCompound class-subclass creation. -* sizeof <24>: CChar-accessing. -* sizeof <25>: CChar class-accessing. -* sizeof <26>: CArrayCType-accessing. -* sizeof <27>: CArray-accessing. -* sizeof: CAggregate class-accessing. -* skip_ <1>: Stream-positioning. -* skip_ <2>: ReadWriteStream-positioning. -* skip_ <3>: PositionableStream-positioning. -* skip_: FileDescriptor-overriding inherited methods. -* skipSeparators: PositionableStream-positioning. -* skipTo_: Stream-positioning. -* skipToAll_: Stream-positioning. -* smallest: SmallInteger class-getting limits. -* smoothingFactor: ObjectMemory class-builtins. -* smoothingFactor_: ObjectMemory class-builtins. -* snapshot: ObjectMemory class-saving the image. -* snapshot_: ObjectMemory class-builtins. -* soleInstance: Metaclass-accessing. -* someInstance: Behavior-built ins. -* sortBlock: SortedCollection-basic. -* sortBlock_ <1>: SortedCollection-basic. -* sortBlock_ <2>: SortedCollection class-instance creation. -* sortBlock_: SharedQueue class-instance creation. -* sortedByCount: Bag-extracting items. -* sourceCode: MethodInfo-accessing. -* sourceCodeAt_: Behavior-accessing the methodDictionary. -* sourceCodeMap: CompiledCode-testing accesses. -* sourceFile: MethodInfo-accessing. -* sourceMethodAt_: Behavior-accessing the methodDictionary. -* sourcePos: MethodInfo-accessing. -* sourceString: MethodInfo-accessing. -* sp: ContextPart-accessing. -* sp_: ContextPart-accessing. -* space <1>: Stream-character writing. -* space: Character class-constants. -* space_: Stream-character writing. -* spaceGrowRate: ObjectMemory class-builtins. -* spaceGrowRate_: ObjectMemory class-builtins. -* species <1>: WeakArray-conversion. -* species <2>: Symbol-misc. -* species <3>: Stream-basic. -* species <4>: PositionableStream-class type methods. -* species <5>: Object-class type methods. -* species <6>: Interval-basic. -* species: BindingDictionary-testing. -* splitAt_: Stream-accessing-reading. -* sqrt <1>: Number-misc math. -* sqrt: Float-built ins. -* squared <1>: Number-misc math. -* squared: Fraction-optimized cases. -* stackDepth <1>: CompiledMethod-accessing. -* stackDepth <2>: CompiledCode-accessing. -* stackDepth <3>: CompiledBlock-accessing. -* stackDepth: BlockClosure-accessing. -* startsWith_: CharacterArray-comparing. -* statOn_into_: VFS.VFSHandler-C functions. -* stderr: FileStream class-standard streams. -* stdin: FileStream class-standard streams. -* stdout: FileStream class-standard streams. -* store: Object-storing. -* store_ <1>: TextCollector-storing. -* store_: Stream-storing. -* storeNl: Object-storing. -* storeOn_ <1>: VariableBinding-storing. -* storeOn_ <2>: UndefinedObject-storing. -* storeOn_ <3>: TextCollector-storing. -* storeOn_ <4>: SystemDictionary-printing. -* storeOn_ <5>: String-storing. -* storeOn_ <6>: ScaledDecimal-storing. -* storeOn_ <7>: RootNamespace-printing. -* storeOn_ <8>: Rectangle-printing. -* storeOn_ <9>: ProcessorScheduler-storing. -* storeOn_ <10>: Point-storing. -* storeOn_ <11>: Object-storing. -* storeOn_ <12>: Namespace-printing. -* storeOn_ <13>: Metaclass-printing. -* storeOn_ <14>: LookupTable-storing. -* storeOn_ <15>: LookupKey-storing. -* storeOn_ <16>: Interval-storing. -* storeOn_ <17>: Integer-storing. -* storeOn_ <18>: HomedAssociation-storing. -* storeOn_ <19>: HashedCollection-storing. -* storeOn_ <20>: Fraction-printing. -* storeOn_ <21>: Float-storing. -* storeOn_ <22>: Dictionary-storing. -* storeOn_ <23>: DateTime-storing. -* storeOn_ <24>: Date-storing. -* storeOn_ <25>: CType-storing. -* storeOn_ <26>: CScalarCType-storing. -* storeOn_ <27>: CompiledMethod-printing. -* storeOn_ <28>: Collection-storing. -* storeOn_ <29>: Class-printing. -* storeOn_ <30>: CharacterArray-storing. -* storeOn_ <31>: Character-storing. -* storeOn_ <32>: Boolean-storing. -* storeOn_ <33>: Bag-storing. -* storeOn_ <34>: Association-storing. -* storeOn_ <35>: ArrayedCollection-storing. -* storeOn_: AbstractNamespace-printing. -* storeOn_base_: Integer-printing. -* storeString <1>: Object-storing. -* storeString: Integer-storing. -* stream <1>: SystemExceptions.EndOfStream-accessing. -* stream: ObjectDumper-accessing. -* stream_ <1>: SystemExceptions.EndOfStream-accessing. -* stream_: ObjectDumper-accessing. -* streamContents_: SequenceableCollection class-instance creation. -* strictlyPositive <1>: Number-testing. -* strictlyPositive <2>: LargeZeroInteger-numeric testing. -* strictlyPositive <3>: LargePositiveInteger-numeric testing. -* strictlyPositive <4>: LargeNegativeInteger-numeric testing. -* strictlyPositive: Float-testing. -* stringAt_ <1>: Memory class-accessing. -* stringAt_: ByteArray-more advanced accessing. -* stringAt_put_ <1>: Memory class-accessing. -* stringAt_put_: ByteArray-more advanced accessing. -* stringError_: File class-C functions. -* stripExtension: File-file name management. -* stripExtensionFrom_: File class-file name management. -* stripFileName: File-file name management. -* stripFileNameFor_: File class-file name management. -* stripPath: File-file name management. -* stripPathFrom_: File class-file name management. -* stripSourceCode <1>: MethodInfo-accessing. -* stripSourceCode: CompiledMethod class-lean images. -* subclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. -* subclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* subclass_declaration_classVariableNames_poolDictionaries_category_: CCompound class-subclass creation. -* subclass_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. -* subclass_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* subclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. -* subclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. -* subclasses: Behavior-accessing class hierarchy. -* subclassesDo_: Behavior-enumerating. -* subclassInstVarNames: Behavior-accessing instances and variables. -* subclassOf_: Metaclass class-instance creation. -* subclassResponsibility: Object-built ins. -* subspaces: AbstractNamespace-namespace hierarchy. -* subspacesDo_: AbstractNamespace-namespace hierarchy. -* substrings: CharacterArray-string processing. -* subStrings: CharacterArray-string processing. -* subStrings_: CharacterArray-string processing. -* substrings_: CharacterArray-string processing. -* subtractDate_: Date-basic. -* subtractDays_: Date-basic. -* subtractTime_: Time-arithmetic. -* suggestedSelector: SystemExceptions.WrongMessageSent-accessing. -* suggestedSelector_: SystemExceptions.WrongMessageSent-accessing. -* superclass: Behavior-accessing class hierarchy. -* superclass_: Behavior-creating a class hierarchy. -* superspace: AbstractNamespace-namespace hierarchy. -* superspace_: AbstractNamespace-namespace hierarchy. -* survSpaceSize: ObjectMemory-accessing. -* survSpaceUsedBytes: ObjectMemory-accessing. -* suspend: Process-basic. -* suspendedContext: Process-accessing. -* symbol: SymLink-accessing. -* symbol_: SymLink-accessing. -* symbol_nextLink_: SymLink class-instance creation. -* system_: SystemDictionary-C functions. -* systemBackgroundPriority: ProcessorScheduler-priorities. -* systemKernel: Directory class-reading system defaults. -* tab <1>: Stream-character writing. -* tab: Character class-constants. -* tab_: Stream-character writing. -* tag: Signal-accessing. -* tag_: Signal-accessing. -* tan <1>: Number-misc math. -* tan: Float-built ins. -* temporary: Directory class-reading system defaults. -* tenure: Object-built ins. -* tenuredBytesPerScavenge: ObjectMemory-accessing. -* terminate: Process-basic. -* terminateActive: ProcessorScheduler-basic. -* timeBetweenGlobalGCs: ObjectMemory-accessing. -* timeBetweenGrowths: ObjectMemory-accessing. -* timeBetweenScavenges: ObjectMemory-accessing. -* timeSlice: ProcessorScheduler-basic. -* timeSlice_: ProcessorScheduler-basic. -* timesRepeat_: Integer-iterators. -* timesTwoPower_ <1>: FloatQ-built ins. -* timesTwoPower_ <2>: FloatE-built ins. -* timesTwoPower_: FloatD-built ins. -* timeToCollect: ObjectMemory-accessing. -* timeToCompact: ObjectMemory-accessing. -* timeToScavenge: ObjectMemory-accessing. -* timezone: Time class-builtins. -* timeZoneAbbreviation: DateTime-time zones. -* timezoneBias: Time class-builtins. -* timeZoneName: DateTime-time zones. -* timingPriority: ProcessorScheduler-priorities. -* to_: Number-shortcuts and iterators. -* to_by_: Number-shortcuts and iterators. -* to_by_do_: Number-shortcuts and iterators. -* to_do_: Number-shortcuts and iterators. -* today: Date class-instance creation (Blue Book). -* top: Rectangle-accessing. -* top_: Rectangle-accessing. -* topCenter: Rectangle-accessing. -* topLeft: Rectangle-accessing. -* topLeft_: Rectangle-accessing. -* topRight: Rectangle-accessing. -* topRight_: Rectangle-accessing. -* translateBy_: Rectangle-transforming. -* translatedToBeWithin_: Rectangle-rectangle functions. -* transpose: Point-point functions. -* trigger: DelayedAdaptor-accessing. -* trimSeparators: CharacterArray-converting. -* truncate <1>: PositionableStream-truncating. -* truncate <2>: FileStream-basic. -* truncate: FileDescriptor-basic. -* truncated <1>: ScaledDecimal-coercion. -* truncated <2>: Number-truncation and round off. -* truncated <3>: Integer-converting. -* truncated <4>: Fraction-coercing. -* truncated <5>: FloatQ-built ins. -* truncated <6>: FloatE-built ins. -* truncated <7>: FloatD-built ins. -* truncated: Float-coercing. -* truncatedGrid_: Point-point functions. -* truncateTo_ <1>: Point-truncation and round off. -* truncateTo_: Number-truncation and round off. -* type <1>: CString class-instance creation. -* type <2>: CScalar class-instance creation. -* type <3>: CObject-conversion. -* type <4>: CObject class-conversion. -* type <5>: CCompound class-instance creation. -* type <6>: CByte-accessing. -* type: CByte class-conversion. -* type_: CObject-accessing. -* ucharAt_: ByteArray-more advanced accessing. -* ucharAt_put_ <1>: Memory class-accessing. -* ucharAt_put_: ByteArray-more advanced accessing. -* uintAt_: ByteArray-more advanced accessing. -* uintAt_put_ <1>: Memory class-accessing. -* uintAt_put_: ByteArray-more advanced accessing. -* ulongAt_: ByteArray-more advanced accessing. -* ulongAt_put_ <1>: Memory class-accessing. -* ulongAt_put_: ByteArray-more advanced accessing. -* unity <1>: SmallInteger-coercion methods. -* unity <2>: Number-converting. -* unity <3>: LargeInteger-coercion. -* unity <4>: Fraction-coercing. -* unity <5>: FloatQ-coercing. -* unity <6>: FloatE-coercing. -* unity: FloatD-coercing. -* unpreemptedPriority: ProcessorScheduler-priorities. -* unsignedCharAt_ <1>: Memory class-accessing. -* unsignedCharAt_: ByteArray-more advanced accessing. -* unsignedCharAt_put_ <1>: Memory class-accessing. -* unsignedCharAt_put_: ByteArray-more advanced accessing. -* unsignedIntAt_ <1>: Memory class-accessing. -* unsignedIntAt_: ByteArray-more advanced accessing. -* unsignedIntAt_put_ <1>: Memory class-accessing. -* unsignedIntAt_put_: ByteArray-more advanced accessing. -* unsignedLongAt_ <1>: Memory class-accessing. -* unsignedLongAt_: ByteArray-more advanced accessing. -* unsignedLongAt_put_ <1>: Memory class-accessing. -* unsignedLongAt_put_: ByteArray-more advanced accessing. -* unsignedShortAt_ <1>: Memory class-accessing. -* unsignedShortAt_: ByteArray-more advanced accessing. -* unsignedShortAt_put_ <1>: Memory class-accessing. -* unsignedShortAt_put_: ByteArray-more advanced accessing. -* untilMilliseconds_: Delay class-instance creation. -* unwind: ContextPart class-exception handling. -* unwind_: ContextPart class-exception handling. -* update: ObjectMemory-builtins. -* update_ <1>: VFS.VFSHandler class-initializing. -* update_ <2>: VFS.ArchiveMemberHandler-file operations. -* update_ <3>: Time class-initialization. -* update_ <4>: ProcessorScheduler-idle tasks. -* update_ <5>: Object-change and update. -* update_ <6>: Object class-initialization. -* update_ <7>: FileDescriptor class-initialization. -* update_: DLD class-dynamic linking. -* updateMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* updateMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* upTo_: Stream-accessing-reading. -* upToAll_: Stream-accessing-reading. -* upToEnd: Stream-accessing-reading. -* userBackgroundPriority: ProcessorScheduler-priorities. -* userInterrupt: Object-exception handling. -* userInterruptPriority: ProcessorScheduler-priorities. -* username: NetClients.URL-accessing. -* username_: NetClients.URL-accessing. -* userSchedulingPriority: ProcessorScheduler-priorities. -* ushortAt_: ByteArray-more advanced accessing. -* ushortAt_put_ <1>: Memory class-accessing. -* ushortAt_put_: ByteArray-more advanced accessing. -* utcDateAndTimeNow: Date class-instance creation (Blue Book). -* utcNow: Time class-basic (UTC). -* utcSecondClock: Time class-basic (UTC). -* utcToday: Date class-instance creation (Blue Book). -* validClasses: SystemExceptions.WrongClass-accessing. -* validClasses_: SystemExceptions.WrongClass-accessing. -* validClassesString: SystemExceptions.WrongClass-accessing. -* validSize <1>: Object-debugging. -* validSize: ContextPart-accessing. -* value <1>: ValueHolder-accessing. -* value <2>: ValueAdaptor-accessing. -* value <3>: SystemExceptions.InvalidValue-accessing. -* value <4>: Promise-accessing. -* value <5>: PluggableAdaptor-accessing. -* value <6>: NullValueHolder-accessing. -* value <7>: DirectedMessage-basic. -* value <8>: DelayedAdaptor-accessing. -* value <9>: CString-accessing. -* value <10>: CScalar-accessing. -* value <11>: CPtr-accessing. -* value <12>: Character-built ins. -* value <13>: CByte-accessing. -* value <14>: CBoolean-accessing. -* value <15>: BlockClosure-built ins. -* value: Association-accessing. -* value_ <1>: ValueHolder-accessing. -* value_ <2>: ValueAdaptor-accessing. -* value_ <3>: SystemExceptions.InvalidValue-accessing. -* value_ <4>: Promise-accessing. -* value_ <5>: PluggableAdaptor-accessing. -* value_ <6>: NullValueHolder-accessing. -* value_ <7>: DelayedAdaptor-accessing. -* value_ <8>: CString-accessing. -* value_ <9>: CString class-instance creation. -* value_ <10>: CScalar-accessing. -* value_ <11>: CScalar class-instance creation. -* value_ <12>: CPtr-accessing. -* value_ <13>: Character class-built ins. -* value_ <14>: CByte-accessing. -* value_ <15>: CBoolean-accessing. -* value_ <16>: BlockClosure-built ins. -* value_: Association-accessing. -* value_value_: BlockClosure-built ins. -* value_value_value_: BlockClosure-built ins. -* valueAt_: CharacterArray-built ins. -* valueAt_put_: CharacterArray-built ins. -* values <1>: Dictionary-accessing. -* values: AbstractNamespace-overrides for superspaces. -* valueType <1>: CType-accessing. -* valueType: CScalarCType-accessing. -* valueWithArguments_: BlockClosure-built ins. -* valueWithoutInterrupts: BlockClosure-multiple process. -* valueWithoutInterrupts_: Process-accessing. -* valueWithoutPreemption: BlockClosure-multiple process. -* valueWithUnwind: BlockClosure-unwind protection. -* variableByteSubclass_classInstanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* variableByteSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. -* variableByteSubclass_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* variableByteSubclass_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. -* variableByteSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. -* variableByteSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. -* variableLongSubclass_classInstanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* variableLongSubclass_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* variableSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. -* variableSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. -* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. -* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. -* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. -* variableWordSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. -* variableWordSubclass_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. -* variableWordSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. -* variableWordSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. -* verbose_: FileStream class-file-in. -* verboseTrace: SystemDictionary-builtins. -* verboseTrace_: SystemDictionary-builtins. -* version: SystemDictionary-special accessing. -* vfsFor_name_subPath_ <1>: VFS.ExternalArchiveFileHandler class-registering. -* vfsFor_name_subPath_: VFS.DecodedFileHandler class-registering. -* wait <1>: Semaphore-builtins. -* wait: Delay-process delay. -* waitAfterSignalling_: Semaphore-builtins. -* waitForException: FileDescriptor-accessing. -* waitingProcesses <1>: Semaphore-accessing. -* waitingProcesses: RecursionLock-accessing. -* whenSignalledIn_do_exitBlock_: Exception class-interoperability with TrappableEvents. -* whichCategoryIncludesSelector_: ClassDescription-organization of messages and classes. -* whichClassIncludesSelector_: Behavior-testing the method dictionary. -* whichSelectorsAccess_: Behavior-testing the method dictionary. -* whichSelectorsAssign_: Behavior-testing the method dictionary. -* whichSelectorsRead_: Behavior-testing the method dictionary. -* whichSelectorsReferTo_: Behavior-testing the method dictionary. -* whichSelectorsReferToByteCode_: Behavior-testing the method dictionary. -* whileCurrentDo_: AbstractNamespace-copying. -* whileFalse: BlockClosure-control structures. -* whileFalse_: BlockClosure-control structures. -* whileTrue: BlockClosure-control structures. -* whileTrue_: BlockClosure-control structures. -* width: Rectangle-accessing. -* width_: Rectangle-accessing. -* with_ <1>: WriteStream class-instance creation. -* with_ <2>: ValueHolder class-creating instances. -* with_ <3>: Symbol class-instance creation. -* with_ <4>: ReadWriteStream class-instance creation. -* with_ <5>: Collection class-instance creation. -* with_: ArrayedCollection class-instance creation. -* with_collect_ <1>: SequenceableCollection-enumerating. -* with_collect_: ArrayedCollection-enumerating the elements of a collection. -* with_do_: SequenceableCollection-enumerating. -* with_from_to_: WriteStream class-instance creation. -* with_with_ <1>: Symbol class-instance creation. -* with_with_ <2>: Collection class-instance creation. -* with_with_: ArrayedCollection class-instance creation. -* with_with_with_ <1>: Symbol class-instance creation. -* with_with_with_ <2>: Collection class-instance creation. -* with_with_with_: ArrayedCollection class-instance creation. -* with_with_with_with_ <1>: Symbol class-instance creation. -* with_with_with_with_ <2>: Collection class-instance creation. -* with_with_with_with_: ArrayedCollection class-instance creation. -* with_with_with_with_with_ <1>: Symbol class-instance creation. -* with_with_with_with_with_ <2>: Collection class-instance creation. -* with_with_with_with_with_: ArrayedCollection class-instance creation. -* withAll_ <1>: Interval class-instance creation. -* withAll_ <2>: Collection class-instance creation. -* withAll_: ArrayedCollection class-instance creation. -* withAllBlocksDo_: CompiledMethod-accessing. -* withAllSubclasses: Behavior-accessing class hierarchy. -* withAllSubclassesDo_: Behavior-enumerating. -* withAllSubspaces: AbstractNamespace-namespace hierarchy. -* withAllSubspacesDo_: AbstractNamespace-namespace hierarchy. -* withAllSuperclasses: Behavior-accessing class hierarchy. -* withAllSuperclassesDo_: Behavior-enumerating. -* withAllSuperspaces <1>: Dictionary-polymorphism hacks. -* withAllSuperspaces: AbstractNamespace-namespace hierarchy. -* withAllSuperspacesDo_: AbstractNamespace-namespace hierarchy. -* withFileDo_: FileSegment-basic. -* withNewMethodClass_: CompiledMethod-accessing. -* withNewMethodClass_selector_: CompiledMethod-accessing. -* withSignOf_: Number-misc math. -* working <1>: VFS.RealFileHandler class-C functions. -* working: Directory class-C functions. -* working_: Directory class-file operations. -* wouldBlock <1>: Semaphore-accessing. -* wouldBlock: RecursionLock-accessing. -* write: FileDescriptor class-instance creation. -* write_: FileDescriptor-low-level access. -* write_from_to_: FileDescriptor-low-level access. -* write_numBytes_: FileDescriptor-low-level access. -* writeStream <1>: SequenceableCollection-enumerating. -* writeStream: File-file operations. -* x: Point-accessing. -* x_: Point-accessing. -* x_y_ <1>: Point-accessing. -* x_y_: Point class-instance creation. -* xor_ <1>: True-basic. -* xor_ <2>: False-basic. -* xor_: Boolean-basic. -* y: Point-accessing. -* y_: Point-accessing. -* year: Date-date computations. -* year_day_hour_minute_second_ <1>: DateTime class-instance creation. -* year_day_hour_minute_second_: Date class-instance creation (ANSI). -* year_day_hour_minute_second_offset_: DateTime class-instance creation. -* year_month_day_hour_minute_second_ <1>: DateTime class-instance creation. -* year_month_day_hour_minute_second_: Date class-instance creation (ANSI). -* year_month_day_hour_minute_second_offset_: DateTime class-instance creation. -* yield <1>: ProcessorScheduler-basic. -* yield: Process-builtins. -* yourself: Object-class type methods. -* zero <1>: SmallInteger-coercion methods. -* zero <2>: ScaledDecimal-constants. -* zero <3>: Number-converting. -* zero <4>: LargeInteger-coercion. -* zero <5>: Fraction-coercing. -* zero <6>: FloatQ-coercing. -* zero <7>: FloatE-coercing. -* zero <8>: FloatD-coercing. -* zero: Duration class-instance creation. -* zeroDivide: Number-error raising. -* | <1>: True-basic. -* | <2>: False-basic. -* |: Boolean-basic. -* ~= <1>: SmallInteger-built ins. -* ~= <2>: ScaledDecimal-comparing. -* ~= <3>: Object-relational operators. -* ~= <4>: LargeInteger-testing. -* ~= <5>: FloatQ-built ins. -* ~= <6>: FloatE-built ins. -* ~=: FloatD-built ins. -* ~~ <1>: SmallInteger-built ins. -* ~~: Object-relational operators. - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-16 smalltalk-2.1.7/doc/gst-base.info-16 --- smalltalk-2.1.6/doc/gst-base.info-16 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-16 1970-01-01 01:00:00.000000000 +0100 @@ -1,222 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: Cross-reference, Prev: Method index, Up: Top - -Selector cross-reference -************************ - -* Menu: - -* *: Number-retrying. -* + <1>: Symbol-basic. -* +: Number-retrying. -* -: Number-retrying. -* /: Number-retrying. -* = <1>: Stream-accessing-reading. -* =: Number-retrying. -* >>: CompiledMethod-saving and loading. -* add_: SequenceableCollection-copying SequenceableCollections. -* addSubspace_: Namespace class-disabling instance creation. -* addToBeFinalized <1>: FileDescriptor class-instance creation. -* addToBeFinalized <2>: CString class-instance creation. -* addToBeFinalized <3>: CScalar class-instance creation. -* addToBeFinalized <4>: CObject-finalization. -* addToBeFinalized: CCompound class-instance creation. -* AM: DateTime-computations. -* append: FileDescriptor class-instance creation. -* asciiValue: Character-built ins. -* asciiValue_: Character class-built ins. -* asInteger: Character-built ins. -* asyncCallFrom_: CFunctionDescriptor-calling. -* at_ <1>: VariableBinding-saving and loading. -* at_: PluggableAdaptor class-creating instances. -* at_put_ <1>: PluggableAdaptor class-creating instances. -* at_put_ <2>: CString-accessing. -* at_put_ <3>: CScalar-accessing. -* at_put_: BindingDictionary-accessing. -* basicNew: Behavior-built ins. -* basicNew_: Behavior-built ins. -* basicPrint: Object-built ins. -* become_: Object-built ins. -* binaryRepresentationObject <1>: PluggableProxy class-accessing. -* binaryRepresentationObject: Object-saving and loading. -* binaryRepresentationVersion: VersionableObjectProxy class-saving and restoring. -* blockAt_: CompiledBlock-saving and loading. -* bz2: VFS.DecodedFileHandler class-registering. -* callFrom_into_: CFunctionDescriptor-calling. -* changed: Object-change and update. -* changed_: Object-change and update. -* class: Object-class type methods. -* close: FileDescriptor class-instance creation. -* cObject: CObject-conversion. -* codePoint: Character-built ins. -* codePoint_: Character class-built ins. -* collect_: BindingDictionary-copying. -* collection_map_: MappedCollection class-instance creation. -* continue_ <1>: MethodContext-accessing. -* continue_ <2>: ContextPart-accessing. -* continue_: BlockContext-accessing. -* convertFromVersion_withFixedVariables_instanceVariables_for_: VersionableObjectProxy class-saving and restoring. -* copy: RunArray-copying. -* copyEmpty_ <1>: WeakArray-conversion. -* copyEmpty_: Object-class type methods. -* create: FileDescriptor class-instance creation. -* day: Date-date computations. -* debuggingPriority: Behavior-pluggable behavior (not yet implemented). -* directoryFor_: PackageLoader class-accessing. -* disableInterrupts: ProcessorScheduler-built ins. -* display_: Stream-printing. -* do_ <1>: SortedCollection-enumerating. -* do_ <2>: RunArray-adding. -* do_ <3>: Collection-enumeration. -* do_: Collection-converting. -* dumpTo_ <1>: DumperProxy class-instance creation. -* dumpTo_: AlternativeObjectProxy class-instance creation. -* enableInterrupts: ProcessorScheduler-built ins. -* ensure_ <1>: Process-basic. -* ensure_ <2>: MethodContext-accessing. -* ensure_ <3>: ContextPart-built ins. -* ensure_ <4>: ContextPart-accessing. -* ensure_ <5>: BlockContext-accessing. -* ensure_: BlockClosure-unwind protection. -* error_ <1>: BlockClosure-exception handling. -* error_ <2>: Behavior-method dictionary. -* error_: Behavior-evaluating. -* fileSystems: VFS.VFSHandler class-initializing. -* finalize: Object-finalization. -* first <1>: LargeArraySubpart-accessing. -* first: LargeArraySubpart class-instance creation. -* firstIndex <1>: LargeArraySubpart-accessing. -* firstIndex: LargeArraySubpart class-instance creation. -* free: CObject-finalization. -* from_to_keysAndValuesDo_: SequenceableCollection-enumerating. -* generateMakefileOnto_: FileStream class-file-in. -* gz: VFS.DecodedFileHandler class-registering. -* halt: Halt-description. -* hash: Symbol class-symbol table. -* identityHash: AbstractNamespace-basic & copying. -* ifCurtailed_ <1>: Process-basic. -* ifCurtailed_: ContextPart-built ins. -* ifTrue_ifFalse_: Symbol-basic. -* includes_: IdentitySet-testing. -* includesClassNamed_: AbstractNamespace-namespace hierarchy. -* includesGlobalNamed_: AbstractNamespace-namespace hierarchy. -* includesKey_: AbstractNamespace-namespace hierarchy. -* inspect: CCompound-instance creation. -* integerPart: Number-truncation and round off. -* keysAndValuesDo_: SequenceableCollection-enumerating. -* last <1>: LargeArraySubpart-accessing. -* last: LargeArraySubpart class-instance creation. -* line: FileStream-filing in. -* loadFrom_: DumperProxy-saving and restoring. -* lowerPriority: Process-basic. -* mark_: Object-built ins. -* match_: Directory-enumerating. -* mourn: Object-built ins. -* new <1>: Behavior-instance creation. -* new: AbstractNamespace class-instance creation. -* new_: Behavior-instance creation. -* newProcess: ContextPart-accessing. -* next <1>: SharedQueue-accessing. -* next: PositionableStream-positioning. -* nonVersionedInstSize: VersionableObjectProxy class-saving and restoring. -* nop: VFS.DecodedFileHandler class-registering. -* not: Symbol-basic. -* notify: Semaphore-builtins. -* notifyAll: Semaphore-builtins. -* on_: AlternativeObjectProxy class-instance creation. -* on_do_ <1>: Signal-exception handling. -* on_do_: BlockClosure-unwind protection. -* on_index_: PluggableAdaptor class-creating instances. -* outer: Signal-exception handling. -* pass: Signal-exception handling. -* PM: DateTime-computations. -* postLoad <1>: SingletonProxy-saving and restoring. -* postLoad <2>: PluggableProxy-saving and restoring. -* postLoad <3>: Object-saving and loading. -* postLoad: HashedCollection-saving and loading. -* postStore: PluggableProxy class-accessing. -* preStore: PluggableProxy class-accessing. -* primDefineExternFunc_: DLD class-dynamic linking. -* print: Object-printing. -* printHierarchy: Behavior-printing hierarchy. -* printNl: Object-printing. -* printOn_ <1>: Symbol-storing. -* printOn_ <2>: Symbol-basic. -* printOn_ <3>: Object-printing. -* printOn_ <4>: Object-built ins. -* printOn_ <5>: CharacterArray-printing. -* printOn_: Character-printing. -* printString <1>: Symbol-storing. -* printString <2>: ScaledDecimal-printing. -* printString <3>: Object-printing. -* printString: CharacterArray-printing. -* printStringRadix_: Integer-printing. -* raisePriority: Process-basic. -* read: FileDescriptor class-instance creation. -* readWrite: FileDescriptor class-instance creation. -* reconstructOriginalObject <1>: SingletonProxy-saving and restoring. -* reconstructOriginalObject: PluggableProxy-saving and restoring. -* removeFirst_: LargeArraySubpart-modifying. -* removeToBeFinalized: FileDescriptor class-instance creation. -* return_: BlockClosure-exception handling. -* secondClock: Time class-basic (UTC). -* select_: PositionableStream-class type methods. -* self: CFunctionDescriptor-calling. -* selfSmalltalk: CFunctionDescriptor-calling. -* signal: Signal-exception handling. -* signal_atMilliseconds_: ProcessorScheduler-timed invocation. -* singleStepWaitingOn_: Process-basic. -* size_stCtime_stMtime_stAtime_isDirectory_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. -* size_stCtime_stMtime_stAtime_isDirectory_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. -* skipSeparators: PositionableStream-positioning. -* species: Object-class type methods. -* strings: VFS.DecodedFileHandler class-registering. -* subclass_declaration_: CCompound class-subclass creation. -* subclassResponsibility: Number-testing. -* tar: VFS.DecodedFileHandler class-registering. -* tgz: VFS.DecodedFileHandler class-registering. -* timeZoneAbbreviation: DateTime-time zones. -* trigger: DelayedAdaptor-accessing. -* ubz2: VFS.DecodedFileHandler class-registering. -* ugz: VFS.DecodedFileHandler class-registering. -* upTo_: PositionableStream-class type methods. -* uZ: VFS.DecodedFileHandler class-registering. -* value <1>: PluggableAdaptor class-creating instances. -* value: Character-built ins. -* value_ <1>: PluggableAdaptor class-creating instances. -* value_: Character class-built ins. -* valueWithoutPreemption: ProcessorScheduler-priorities. -* valueWithUnwind: BlockClosure-unwind protection. -* Variable: BindingDictionary-accessing. -* vfsFor_name_subPath_: VFS.VFSHandler class-initializing. -* wait: RecursionLock-accessing. -* write: FileDescriptor class-instance creation. -* Z: VFS.DecodedFileHandler class-registering. -* ~=: Number-retrying. - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-2 smalltalk-2.1.7/doc/gst-base.info-2 --- smalltalk-2.1.6/doc/gst-base.info-2 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-2 2003-12-17 14:58:53.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. +This is gst-base.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-base-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Base classes: (gst-base). The GNU Smalltalk base classes. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -24,1615 +24,10295 @@ There are no Cover Texts and no Invariant Sections; this text, along with its equivalent in the printed manual, constitutes the Title Page.  -File: gst-base.info, Node: Behavior-instance variables, Next: Behavior-method dictionary, Prev: Behavior-instance creation, Up: Behavior +File: gst-base.info, Node: Fraction-comparing, Next: Fraction-converting, Prev: Fraction-coercing, Up: Fraction -Behavior: instance variables +Fraction: comparing +------------------- + +< arg + Test if the receiver is less than arg. + +<= arg + Test if the receiver is less than or equal to arg. + += arg + Test if the receiver equals arg. + +> arg + Test if the receiver is more than arg. + +>= arg + Test if the receiver is greater than or equal to arg. + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: Fraction-converting, Next: Fraction-optimized cases, Prev: Fraction-comparing, Up: Fraction + +Fraction: converting +-------------------- + +asFloatD + Answer the receiver converted to a FloatD + +asFloatE + Answer the receiver converted to a FloatD + +asFloatQ + Answer the receiver converted to a FloatD + +asFraction + Answer the receiver, it is already a Fraction + +integerPart + Answer the integer part of the receiver, expressed as a Fraction + + + +File: gst-base.info, Node: Fraction-optimized cases, Next: Fraction-printing, Prev: Fraction-converting, Up: Fraction + +Fraction: optimized cases +------------------------- + +negated + Return the receiver, with its sign changed. + +raisedToInteger: anInteger + Return self raised to the anInteger-th power. + +reciprocal + Return the reciprocal of the receiver + +squared + Return the square of the receiver. + + + +File: gst-base.info, Node: Fraction-printing, Next: Fraction-testing, Prev: Fraction-optimized cases, Up: Fraction + +Fraction: printing +------------------ + +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: Fraction-testing, Prev: Fraction-printing, Up: Fraction + +Fraction: testing +----------------- + +isRational + Answer whether the receiver is rational - true + + + +File: gst-base.info, Node: Halt, Next: HashedCollection, Prev: Fraction, Up: Base classes + +Halt +==== + +Defined in namespace Smalltalk +Superclass: Error +Category: Language-Exceptions + Halt represents a resumable error, usually a bug. + +* Menu: + +* Halt-description:: (instance) + + +File: gst-base.info, Node: Halt-description, Up: Halt + +Halt: description +----------------- + +description + Answer a textual description of the exception. + +isResumable + Answer true. #halt exceptions are by default resumable. + + + +File: gst-base.info, Node: HashedCollection, Next: HomedAssociation, Prev: Halt, Up: Base classes + +HashedCollection +================ + +Defined in namespace Smalltalk +Superclass: Collection +Category: Collections-Unordered + I am an hashed collection that can store objects uniquely and give + fast responses on their presence in the collection. + +* Menu: + +* HashedCollection class-instance creation:: (class) +* HashedCollection-accessing:: (instance) +* HashedCollection-builtins:: (instance) +* HashedCollection-copying:: (instance) +* HashedCollection-enumerating the elements of a collection:: (instance) +* HashedCollection-rehashing:: (instance) +* HashedCollection-removing:: (instance) +* HashedCollection-saving and loading:: (instance) +* HashedCollection-storing:: (instance) +* HashedCollection-testing collections:: (instance) + + +File: gst-base.info, Node: HashedCollection class-instance creation, Next: HashedCollection-accessing, Up: HashedCollection + +HashedCollection class: instance creation +----------------------------------------- + +new + Answer a new instance of the receiver with a default size + +new: anInteger + Answer a new instance of the receiver with the given size + + + +File: gst-base.info, Node: HashedCollection-accessing, Next: HashedCollection-builtins, Prev: HashedCollection class-instance creation, Up: HashedCollection + +HashedCollection: accessing +--------------------------- + +add: newObject + Add newObject to the set, if and only if the set doesn't already + contain an occurrence of it. Don't fail if a duplicate is found. + Answer anObject + +at: index + This method should not be called for instances of this class. + +at: index put: value + This method should not be called for instances of this class. + + + +File: gst-base.info, Node: HashedCollection-builtins, Next: HashedCollection-copying, Prev: HashedCollection-accessing, Up: HashedCollection + +HashedCollection: builtins +-------------------------- + +primAt: anIndex + Private - Answer the anIndex-th item of the hash table for the + receiver. Using this instead of basicAt: allows for easier + changes in the representation + +primAt: anIndex put: value + Private - Store value in the anIndex-th item of the hash table for + the receiver. Using this instead of basicAt:put: allows for easier + changes in the representation + +primSize + Private - Answer the size of the hash table for the receiver. + Using this instead of basicSize allows for easier changes in the + representation + + + +File: gst-base.info, Node: HashedCollection-copying, Next: HashedCollection-enumerating the elements of a collection, Prev: HashedCollection-builtins, Up: HashedCollection + +HashedCollection: copying +------------------------- + +deepCopy + Returns a deep copy of the receiver (the instance variables are + copies of the receiver's instance variables) + +shallowCopy + Returns a shallow copy of the receiver (the instance variables are + not copied) + + + +File: gst-base.info, Node: HashedCollection-enumerating the elements of a collection, Next: HashedCollection-rehashing, Prev: HashedCollection-copying, Up: HashedCollection + +HashedCollection: enumerating the elements of a collection +---------------------------------------------------------- + +do: aBlock + Enumerate all the non-nil members of the set + + + +File: gst-base.info, Node: HashedCollection-rehashing, Next: HashedCollection-removing, Prev: HashedCollection-enumerating the elements of a collection, Up: HashedCollection + +HashedCollection: rehashing +--------------------------- + +rehash + Rehash the receiver + + + +File: gst-base.info, Node: HashedCollection-removing, Next: HashedCollection-saving and loading, Prev: HashedCollection-rehashing, Up: HashedCollection + +HashedCollection: removing +-------------------------- + +remove: oldObject ifAbsent: anExceptionBlock + Remove oldObject to the set. If it is found, answer oldObject. + Otherwise, evaluate anExceptionBlock and return its value. + + + +File: gst-base.info, Node: HashedCollection-saving and loading, Next: HashedCollection-storing, Prev: HashedCollection-removing, Up: HashedCollection + +HashedCollection: saving and loading +------------------------------------ + +postLoad + Called after loading an object; rehash the collection because + identity objects will most likely mutate their hashes. + +postStore + Called after an object is dumped. Do nothing - necessary because + by default this calls #postLoad by default + + + +File: gst-base.info, Node: HashedCollection-storing, Next: HashedCollection-testing collections, Prev: HashedCollection-saving and loading, Up: HashedCollection + +HashedCollection: storing +------------------------- + +storeOn: aStream + Store on aStream some Smalltalk code which compiles to the receiver + + + +File: gst-base.info, Node: HashedCollection-testing collections, Prev: HashedCollection-storing, Up: HashedCollection + +HashedCollection: testing collections +------------------------------------- + += aHashedCollection + Returns true if the two sets have the same membership, false if not + +capacity + Answer how many elements the receiver can hold before having to + grow. + +hash + Return the hash code for the members of the set. Since order is + unimportant, we use a commutative operator to compute the hash + value. + +includes: anObject + Answer whether the receiver contains an instance of anObject. + +isEmpty + Answer whether the receiver is empty. + +occurrencesOf: anObject + Return the number of occurrences of anObject. Since we're a set, + this is either 0 or 1. Nil is never directly in the set, so we + special case it (the result is always 1). + +size + Answer the receiver's size + + + +File: gst-base.info, Node: HomedAssociation, Next: IdentityDictionary, Prev: HashedCollection, Up: Base classes + +HomedAssociation +================ + +Defined in namespace Smalltalk +Superclass: Association +Category: Language-Data types + My instances represent know about their parent namespace, which is + of use when implementing weak collections and finalizations. + +* Menu: + +* HomedAssociation class-basic:: (class) +* HomedAssociation-accessing:: (instance) +* HomedAssociation-finalization:: (instance) +* HomedAssociation-storing:: (instance) + + +File: gst-base.info, Node: HomedAssociation class-basic, Next: HomedAssociation-accessing, Up: HomedAssociation + +HomedAssociation class: basic +----------------------------- + +key: aKey value: aValue environment: aNamespace + Answer a new association with the given key and value + + + +File: gst-base.info, Node: HomedAssociation-accessing, Next: HomedAssociation-finalization, Prev: HomedAssociation class-basic, Up: HomedAssociation + +HomedAssociation: accessing +--------------------------- + +environment + Answer the namespace in which I live. + +environment: aNamespace + Set the namespace in which I live to be aNamespace. + + + +File: gst-base.info, Node: HomedAssociation-finalization, Next: HomedAssociation-storing, Prev: HomedAssociation-accessing, Up: HomedAssociation + +HomedAssociation: finalization +------------------------------ + +mourn + This message is sent to the receiver when the object is made + ephemeron (which is common when HomedAssociations are used by a + WeakKeyDictionary or a WeakSet). The mourning of the object's key + is first of all demanded to the environment (which will likely + remove the object from itself), and then performed as usual by + clearing the key and value fields. + + + +File: gst-base.info, Node: HomedAssociation-storing, Prev: HomedAssociation-finalization, Up: HomedAssociation + +HomedAssociation: storing +------------------------- + +storeOn: aStream + Put on aStream some Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: IdentityDictionary, Next: IdentitySet, Prev: HomedAssociation, Up: Base classes + +IdentityDictionary +================== + +Defined in namespace Smalltalk +Superclass: LookupTable +Category: Collections-Keyed + I am similar to LookupTable, except that I use the object identity + comparision message == to determine equivalence of indices. + +* Menu: + + +File: gst-base.info, Node: IdentitySet, Next: Integer, Prev: IdentityDictionary, Up: Base classes + +IdentitySet +=========== + +Defined in namespace Smalltalk +Superclass: Set +Category: Collections-Unordered + I am the typical set object; I can store any objects uniquely. I + use the == operator to determine duplication of objects. + +* Menu: + +* IdentitySet-testing:: (instance) + + +File: gst-base.info, Node: IdentitySet-testing, Up: IdentitySet + +IdentitySet: testing +-------------------- + +identityIncludes: anObject + Answer whether we include the anObject object; for IdentitySets + this is identical to #includes: + + + +File: gst-base.info, Node: Integer, Next: Interval, Prev: IdentitySet, Up: Base classes + +Integer +======= + +Defined in namespace Smalltalk +Superclass: Number +Category: Language-Data types + I am the abstract integer class of the GNU Smalltalk system. My + subclasses' instances can represent signed integers of various + sizes (a subclass is picked according to the size), with varying + efficiency. + +* Menu: + +* Integer class-converting:: (class) +* Integer-accessing:: (instance) +* Integer-basic:: (instance) +* Integer-bit operators:: (instance) +* Integer-converting:: (instance) +* Integer-extension:: (instance) +* Integer-iterators:: (instance) +* Integer-math methods:: (instance) +* Integer-printing:: (instance) +* Integer-storing:: (instance) +* Integer-testing functionality:: (instance) + + +File: gst-base.info, Node: Integer class-converting, Next: Integer-accessing, Up: Integer + +Integer class: converting +------------------------- + +coerce: aNumber + Answer aNumber converted to a kind of Integer + + + +File: gst-base.info, Node: Integer-accessing, Next: Integer-basic, Prev: Integer class-converting, Up: Integer + +Integer: accessing +------------------ + +denominator + Answer `1'. + +numerator + Answer the receiver. + + + +File: gst-base.info, Node: Integer-basic, Next: Integer-bit operators, Prev: Integer-accessing, Up: Integer + +Integer: basic +-------------- + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: Integer-bit operators, Next: Integer-converting, Prev: Integer-basic, Up: Integer + +Integer: bit operators +---------------------- + +allMask: anInteger + True if all 1 bits in anInteger are 1 in the receiver + +anyMask: anInteger + True if any 1 bits in anInteger are 1 in the receiver + +bitAt: index + Answer the index-th bit of the receiver (the LSB has an index of 1) + +bitAt: index put: value + Answer an integer which is identical to the receiver, possibly + with the exception of the index-th bit of the receiver (the LSB + having an index of 1), which assumes a value equal to the + low-order bit of the second parameter. + +bitClear: aMask + Answer an Integer equal to the receiver, except that all the bits + that are set in aMask are cleared. + +bitInvert + Return the 1's complement of the bits of the receiver + +clearBit: index + Clear the index-th bit of the receiver and answer a new Integer + +highBit + Return the index of the highest order 1 bit of the receiver + +isBitSet: index + Answer whether the index-th bit of the receiver is set + +noMask: anInteger + True if no 1 bits in anInteger are 1 in the receiver + +setBit: index + Set the index-th bit of the receiver and answer a new Integer + + + +File: gst-base.info, Node: Integer-converting, Next: Integer-extension, Prev: Integer-bit operators, Up: Integer + +Integer: converting +------------------- + +asCharacter + Return self as an ascii character + +asFraction + Return the receiver converted to a fraction + +asScaledDecimal: n + Answer the receiver, converted to a ScaledDecimal object. The + scale is forced to be 0. + +ceiling + Return the receiver - it's already truncated + +coerce: aNumber + Coerce aNumber to the receiver's class + +floor + Return the receiver - it's already truncated + +rounded + Return the receiver - it's already truncated + +truncated + Return the receiver - it's already truncated + + + +File: gst-base.info, Node: Integer-extension, Next: Integer-iterators, Prev: Integer-converting, Up: Integer + +Integer: extension +------------------ + +alignTo: anInteger + Answer the receiver, truncated to the first higher or equal + multiple of anInteger (which must be a power of two) + + + +File: gst-base.info, Node: Integer-iterators, Next: Integer-math methods, Prev: Integer-extension, Up: Integer + +Integer: iterators +------------------ + +timesRepeat: aBlock + Evaluate aBlock a number of times equal to the receiver's value. + Compiled in-line for no argument aBlocks without temporaries, and + therefore not overridable. + + + +File: gst-base.info, Node: Integer-math methods, Next: Integer-printing, Prev: Integer-iterators, Up: Integer + +Integer: math methods +--------------------- + +binomial: anInteger + Compute the number of combinations of anInteger objects among a + number of objects given by the receiver. + +estimatedLog + Answer an estimate of (self abs floorLog: 10) + +even + Return whether the receiver is even + +factorial + Return the receiver's factorial. + +floorLog: radix + return (self log: radix) floor. Optimized to answer an integer. + +gcd: anInteger + Return the greatest common divisor (Euclid's algorithm) between the + receiver and anInteger + +lcm: anInteger + Return the least common multiple between the receiver and anInteger + +odd + Return whether the receiver is odd + + + +File: gst-base.info, Node: Integer-printing, Next: Integer-storing, Prev: Integer-math methods, Up: Integer + +Integer: printing +----------------- + +displayOn: aStream + Print on aStream the base 10 representation of the receiver + +displayString + Return the base 10 representation of the receiver + +printOn: aStream + Print on aStream the base 10 representation of the receiver + +printOn: aStream base: b + Print on aStream the base b representation of the receiver + +printString + Return the base 10 representation of the receiver + +printString: baseInteger + Return the base b representation of the receiver + +printStringRadix: baseInteger + Return the base b representation of the receiver, with BBr in + front of it + + instead + +radix: baseInteger + Return the base b representation of the receiver, with BBr in + front of it. This method is deprecated, use #printStringRadix: + instead. + +storeOn: aStream base: b + Print on aStream Smalltalk code compiling to the receiver, + represented in base b + + + +File: gst-base.info, Node: Integer-storing, Next: Integer-testing functionality, Prev: Integer-printing, Up: Integer + +Integer: storing +---------------- + +storeOn: aStream + Print on aStream the base 10 representation of the receiver + +storeString + Return the base 10 representation of the receiver + + + +File: gst-base.info, Node: Integer-testing functionality, Prev: Integer-storing, Up: Integer + +Integer: testing functionality +------------------------------ + +isInteger + Answer `true'. + +isRational + Answer whether the receiver is rational - true + + + +File: gst-base.info, Node: Interval, Next: LargeArray, Prev: Integer, Up: Base classes + +Interval +======== + +Defined in namespace Smalltalk +Superclass: ArrayedCollection +Category: Collections-Sequenceable + My instances represent ranges of objects, typically Number type + objects. I provide iteration/enumeration messages for producing + all the members that my instance represents. + +* Menu: + +* Interval class-instance creation:: (class) +* Interval-basic:: (instance) +* Interval-printing:: (instance) +* Interval-storing:: (instance) +* Interval-testing:: (instance) + + +File: gst-base.info, Node: Interval class-instance creation, Next: Interval-basic, Up: Interval + +Interval class: instance creation +--------------------------------- + +from: startInteger to: stopInteger + Answer an Interval going from startInteger to the stopInteger, + with a step of 1 + +from: startInteger to: stopInteger by: stepInteger + Answer an Interval going from startInteger to the stopInteger, + with a step of stepInteger + +withAll: aCollection + Answer an Interval containing the same elements as aCollection. + Fail if it is not possible to create one. + + + +File: gst-base.info, Node: Interval-basic, Next: Interval-printing, Prev: Interval class-instance creation, Up: Interval + +Interval: basic +--------------- + +at: index + Answer the index-th element of the receiver. + +at: index put: anObject + This method should not be called for instances of this class. + +collect: aBlock + Evaluate the receiver for each element in aBlock, collect in an + array the result of the evaluations. + +do: aBlock + Evaluate the receiver for each element in aBlock + +reverse + Answer a copy of the receiver with all of its items reversed + +size + Answer the number of elements in the receiver. + +species + Answer `Array'. + + + +File: gst-base.info, Node: Interval-printing, Next: Interval-storing, Prev: Interval-basic, Up: Interval + +Interval: printing +------------------ + +printOn: aStream + Print a representation for the receiver on aStream + + + +File: gst-base.info, Node: Interval-storing, Next: Interval-testing, Prev: Interval-printing, Up: Interval + +Interval: storing +----------------- + +storeOn: aStream + Store Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Interval-testing, Prev: Interval-storing, Up: Interval + +Interval: testing +----------------- + += anInterval + Answer whether anInterval is the same interval as the receiver + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: LargeArray, Next: LargeArrayedCollection, Prev: Interval, Up: Base classes + +LargeArray +========== + +Defined in namespace Smalltalk +Superclass: LargeArrayedCollection +Category: Collections-Sequenceable + I am similar to a plain array, but I'm specially designed to save + memory when lots of items are nil. + +* Menu: + +* LargeArray-overridden:: (instance) + + +File: gst-base.info, Node: LargeArray-overridden, Up: LargeArray + +LargeArray: overridden +---------------------- + +newCollection: size + Create an Array of the given size + + + +File: gst-base.info, Node: LargeArrayedCollection, Next: LargeArraySubpart, Prev: LargeArray, Up: Base classes + +LargeArrayedCollection +====================== + +Defined in namespace Smalltalk +Superclass: ArrayedCollection +Category: Collections-Sequenceable + I am an abstract class specially designed to save memory when lots + of items have the same value. + +* Menu: + +* LargeArrayedCollection class-instance creation:: (class) +* LargeArrayedCollection-accessing:: (instance) +* LargeArrayedCollection-basic:: (instance) + + +File: gst-base.info, Node: LargeArrayedCollection class-instance creation, Next: LargeArrayedCollection-accessing, Up: LargeArrayedCollection + +LargeArrayedCollection class: instance creation +----------------------------------------------- + +new: anInteger + Answer a new instance of the receiver, with room for anInteger + elements. + + + +File: gst-base.info, Node: LargeArrayedCollection-accessing, Next: LargeArrayedCollection-basic, Prev: LargeArrayedCollection class-instance creation, Up: LargeArrayedCollection + +LargeArrayedCollection: accessing +--------------------------------- + +at: anIndex + Answer the anIndex-th item of the receiver. + +at: anIndex put: anObject + Replace the anIndex-th item of the receiver with anObject. + +compress + Arrange the representation of the array for maximum memory saving. + + + +File: gst-base.info, Node: LargeArrayedCollection-basic, Prev: LargeArrayedCollection-accessing, Up: LargeArrayedCollection + +LargeArrayedCollection: basic +----------------------------- + += aLargeArray + Answer whether the receiver and aLargeArray have the same contents + +hash + Answer an hash value for the receiver + +size + Answer the maximum valid index for the receiver + + + +File: gst-base.info, Node: LargeArraySubpart, Next: LargeByteArray, Prev: LargeArrayedCollection, Up: Base classes + +LargeArraySubpart +================= + +Defined in namespace Smalltalk +Superclass: Magnitude +Category: Collections-Sequenceable + This class is an auxiliary class used to store information about a + LargeArrayedCollection's contents. LargeArrayedCollections store + their items non-contiguously in a separate storage object, and use + a SortedCollection to map between indices in the array and indices + in the storage object; instances of this class represent a block of + indices that is stored contiguously in the storage object. + +* Menu: + +* LargeArraySubpart class-instance creation:: (class) +* LargeArraySubpart-accessing:: (instance) +* LargeArraySubpart-comparing:: (instance) +* LargeArraySubpart-modifying:: (instance) + + +File: gst-base.info, Node: LargeArraySubpart class-instance creation, Next: LargeArraySubpart-accessing, Up: LargeArraySubpart + +LargeArraySubpart class: instance creation +------------------------------------------ + +first: first last: last index: index + Answer a LargeArraySubpart which answers first, last, and index + when it is sent (respectively) #first, #last and #firstIndex. + + + +File: gst-base.info, Node: LargeArraySubpart-accessing, Next: LargeArraySubpart-comparing, Prev: LargeArraySubpart class-instance creation, Up: LargeArraySubpart + +LargeArraySubpart: accessing +---------------------------- + +first + Answer the index of the first item of the LargeArrayedCollection + that the receiver refers to. + +first: firstIndex last: lastIndex index: storagePosition + Set up the receiver so that it answers first, last, and index when + it is sent (respectively) #first, #last and #firstIndex. + +firstIndex + Answer the index in the collection's storage object of the first + item of the LargeArrayedCollection that the receiver refers to. + +last + Answer the index of the last item of the LargeArrayedCollection + that the receiver refers to. + +lastIndex + Answer the index in the collection's storage object of the last + item of the LargeArrayedCollection that the receiver refers to. + + + +File: gst-base.info, Node: LargeArraySubpart-comparing, Next: LargeArraySubpart-modifying, Prev: LargeArraySubpart-accessing, Up: LargeArraySubpart + +LargeArraySubpart: comparing +---------------------------- + +< anObject + Answer whether the receiver points to a part of the array that is + before anObject (this makes sense only if the receiver and + anObject are two LargeArraySubparts referring to the same + LargeArrayedCollection). + +<= anObject + Answer whether the receiver points to a part of the array that is + before anObject or starts at the same point (this makes sense only + if the receiver and anObject are two LargeArraySubparts referring + to the same LargeArrayedCollection). + += anObject + Answer whether the receiver and anObject are equal (assuming that + the receiver and anObject are two LargeArraySubparts referring to + the same LargeArrayedCollection, which the receiver cannot check + for). + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: LargeArraySubpart-modifying, Prev: LargeArraySubpart-comparing, Up: LargeArraySubpart + +LargeArraySubpart: modifying +---------------------------- + +cutAt: position + Answer a new LargeArraySubpart whose lastIndex is position - 1, + and apply a #removeFirst: to the receiver so that the firstIndex + becomes position + +grow + Add one to last and lastIndex + +growBy: numberOfElements + Add numberOfElements to last and lastIndex + +relocateTo: position + Move the firstIndex to position, and the lastIndex accordingly. + +removeFirst: n + Sum n to first and firstIndex, but leave last/lastIndex untouched + +removeLast: n + Subtract n from last and lastIndex, but leave first/firstIndex + untouched + + + +File: gst-base.info, Node: LargeByteArray, Next: LargeInteger, Prev: LargeArraySubpart, Up: Base classes + +LargeByteArray +============== + +Defined in namespace Smalltalk +Superclass: LargeArrayedCollection +Category: Collections-Sequenceable + I am similar to a plain ByteArray, but I'm specially designed to + save memory when lots of items are zero. + +* Menu: + +* LargeByteArray-overridden:: (instance) + + +File: gst-base.info, Node: LargeByteArray-overridden, Up: LargeByteArray + +LargeByteArray: overridden +-------------------------- + +costOfNewIndex + Answer the maximum number of consecutive items set to the + defaultElement that can be present in a compressed array. + +defaultElement + Answer the value which is hoped to be the most common in the array + +newCollection: size + Create a ByteArray of the given size + + + +File: gst-base.info, Node: LargeInteger, Next: LargeNegativeInteger, Prev: LargeByteArray, Up: Base classes + +LargeInteger +============ + +Defined in namespace Smalltalk +Superclass: Integer +Category: Language-Data types + I represent a large integer, which has to be stored as a long + sequence of bytes. I have methods to do arithmetics and + comparisons, but I need some help from my children, + LargePositiveInteger and LargeNegativeInteger, to speed them up a + bit. + +* Menu: + +* LargeInteger-arithmetic:: (instance) +* LargeInteger-bit operations:: (instance) +* LargeInteger-built-ins:: (instance) +* LargeInteger-coercion:: (instance) +* LargeInteger-disabled:: (instance) +* LargeInteger-primitive operations:: (instance) +* LargeInteger-testing:: (instance) + + +File: gst-base.info, Node: LargeInteger-arithmetic, Next: LargeInteger-bit operations, Up: LargeInteger + +LargeInteger: arithmetic +------------------------ + +* aNumber + Multiply aNumber and the receiver, answer the result + ++ aNumber + Sum the receiver and aNumber, answer the result + +- aNumber + Sum the receiver and aNumber, answer the result + +/ aNumber + Divide aNumber and the receiver, answer the result (an Integer or + Fraction) + +// aNumber + Divide aNumber and the receiver, answer the result truncated + towards -infinity + +\\ aNumber + Divide aNumber and the receiver, answer the remainder truncated + towards -infinity + +estimatedLog + Answer an estimate of (self abs floorLog: 10) + +negated + Answer the receiver's negated + +quo: aNumber + Divide aNumber and the receiver, answer the result truncated + towards 0 + +rem: aNumber + Divide aNumber and the receiver, answer the remainder truncated + towards 0 + + + +File: gst-base.info, Node: LargeInteger-bit operations, Next: LargeInteger-built-ins, Prev: LargeInteger-arithmetic, Up: LargeInteger + +LargeInteger: bit operations +---------------------------- + +bitAnd: aNumber + Answer the receiver ANDed with aNumber + +bitAt: aNumber + Answer the aNumber-th bit in the receiver, where the LSB is 1 + +bitInvert + Answer the receiver's 1's complement + +bitOr: aNumber + Answer the receiver ORed with aNumber + +bitShift: aNumber + Answer the receiver shifted by aNumber places + +bitXor: aNumber + Answer the receiver XORed with aNumber + + + +File: gst-base.info, Node: LargeInteger-built-ins, Next: LargeInteger-coercion, Prev: LargeInteger-bit operations, Up: LargeInteger + +LargeInteger: built-ins +----------------------- + +at: anIndex + Answer the anIndex-th byte in the receiver's representation + +at: anIndex put: aNumber + Set the anIndex-th byte in the receiver's representation + +digitAt: anIndex + Answer the anIndex-th base-256 digit in the receiver's + representation + +digitAt: anIndex put: aNumber + Set the anIndex-th base-256 digit in the receiver's representation + +digitLength + Answer the number of base-256 digits in the receiver + +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 + +size + Answer the number of indexed instance variable in the receiver + + + +File: gst-base.info, Node: LargeInteger-coercion, Next: LargeInteger-disabled, Prev: LargeInteger-built-ins, Up: LargeInteger + +LargeInteger: coercion +---------------------- + +coerce: aNumber + Truncate the number; if needed, convert it to LargeInteger + representation. + +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: LargeInteger-disabled, Next: LargeInteger-primitive operations, Prev: LargeInteger-coercion, Up: LargeInteger + +LargeInteger: disabled +---------------------- + +asObject + This method always fails. The number of OOPs is far less than the + minimum number represented with a LargeInteger. + +asObjectNoFail + Answer `nil'. + + + +File: gst-base.info, Node: LargeInteger-primitive operations, Next: LargeInteger-testing, Prev: LargeInteger-disabled, Up: LargeInteger + +LargeInteger: primitive operations +---------------------------------- + +basicLeftShift: totalShift + Private - Left shift the receiver by aNumber places + +basicRightShift: totalShift + Private - Right shift the receiver by 'shift' places + +largeNegated + Private - Same as negated, but always answer a LargeInteger + + + +File: gst-base.info, Node: LargeInteger-testing, Prev: LargeInteger-primitive operations, Up: LargeInteger + +LargeInteger: testing +--------------------- + +< aNumber + Answer whether the receiver is smaller than aNumber + +<= aNumber + Answer whether the receiver is smaller than aNumber or equal to it + += aNumber + Answer whether the receiver and aNumber identify the same number + +> aNumber + Answer whether the receiver is greater than aNumber + +>= aNumber + Answer whether the receiver is greater than aNumber or equal to it + +~= aNumber + Answer whether the receiver and aNumber identify the same number + + + +File: gst-base.info, Node: LargeNegativeInteger, Next: LargePositiveInteger, Prev: LargeInteger, Up: Base classes + +LargeNegativeInteger +==================== + +Defined in namespace Smalltalk +Superclass: LargeInteger +Category: Language-Data types + Just like my brother LargePositiveInteger, I provide a few methods + that allow LargeInteger to determine the sign of a large integer + in a fast way during its calculations. For example, I know that I + am smaller than any LargePositiveInteger + +* Menu: + +* LargeNegativeInteger-converting:: (instance) +* LargeNegativeInteger-numeric testing:: (instance) +* LargeNegativeInteger-reverting to LargePositiveInteger:: (instance) + + +File: gst-base.info, Node: LargeNegativeInteger-converting, Next: LargeNegativeInteger-numeric testing, Up: LargeNegativeInteger + +LargeNegativeInteger: converting +-------------------------------- + +asFloatD + Answer the receiver converted to a FloatD + +asFloatE + Answer the receiver converted to a FloatE + +asFloatQ + Answer the receiver converted to a FloatQ + + + +File: gst-base.info, Node: LargeNegativeInteger-numeric testing, Next: LargeNegativeInteger-reverting to LargePositiveInteger, Prev: LargeNegativeInteger-converting, Up: LargeNegativeInteger + +LargeNegativeInteger: numeric testing +------------------------------------- + +abs + Answer the receiver's absolute value. + +negative + Answer whether the receiver is < 0 + +positive + Answer whether the receiver is >= 0 + +sign + Answer the receiver's sign + +strictlyPositive + Answer whether the receiver is > 0 + + + +File: gst-base.info, Node: LargeNegativeInteger-reverting to LargePositiveInteger, Prev: LargeNegativeInteger-numeric testing, Up: LargeNegativeInteger + +LargeNegativeInteger: reverting to LargePositiveInteger +------------------------------------------------------- + ++ aNumber + Sum the receiver and aNumber, answer the result + +- aNumber + Sum the receiver and aNumber, answer the result + +gcd: anInteger + Return the greatest common divisor between the receiver and + anInteger + +highBit + Answer the receiver's highest bit's index + + + +File: gst-base.info, Node: LargePositiveInteger, Next: LargeWordArray, Prev: LargeNegativeInteger, Up: Base classes + +LargePositiveInteger +==================== + +Defined in namespace Smalltalk +Superclass: LargeInteger +Category: Language-Data types + Just like my brother LargeNegativeInteger, I provide a few methods + that allow LargeInteger to determine the sign of a large integer + in a fast way during its calculations. For example, I know that I + am larger than any LargeNegativeInteger. In addition I implement + the guts of arbitrary precision arithmetic. + +* Menu: + +* LargePositiveInteger-arithmetic:: (instance) +* LargePositiveInteger-converting:: (instance) +* LargePositiveInteger-helper byte-level methods:: (instance) +* LargePositiveInteger-numeric testing:: (instance) +* LargePositiveInteger-primitive operations:: (instance) + + +File: gst-base.info, Node: LargePositiveInteger-arithmetic, Next: LargePositiveInteger-converting, Up: LargePositiveInteger + +LargePositiveInteger: arithmetic +-------------------------------- + ++ aNumber + Sum the receiver and aNumber, answer the result + +- aNumber + Subtract aNumber from the receiver, answer the result + +gcd: anInteger + Calculate the GCD between the receiver and anInteger + +highBit + Answer the receiver's highest bit's index + + + +File: gst-base.info, Node: LargePositiveInteger-converting, Next: LargePositiveInteger-helper byte-level methods, Prev: LargePositiveInteger-arithmetic, Up: LargePositiveInteger + +LargePositiveInteger: converting +-------------------------------- + +asFloatD + Answer the receiver converted to a FloatD + +asFloatE + Answer the receiver converted to a FloatE + +asFloatQ + Answer the receiver converted to a FloatQ + +replace: string withStringBase: radix + Return in a String str the base radix representation of the + receiver. + + + +File: gst-base.info, Node: LargePositiveInteger-helper byte-level methods, Next: LargePositiveInteger-numeric testing, Prev: LargePositiveInteger-converting, Up: LargePositiveInteger + +LargePositiveInteger: helper byte-level methods +----------------------------------------------- + +bytes: byteArray1 from: j compare: byteArray2 + Private - Answer the sign of byteArray2 - byteArray1; the j-th + byte of byteArray1 is compared with the first of byteArray2, the + j+1-th with the second, and so on. + +bytes: byteArray1 from: j subtract: byteArray2 + Private - Sutract the bytes in byteArray2 from those in byteArray1 + +bytes: bytes multiply: anInteger + Private - Multiply the bytes in bytes by anInteger, which must be + < 255. Put the result back in bytes. + +bytesLeftShift: aByteArray + Private - Left shift by 1 place the bytes in aByteArray + +bytesLeftShift: aByteArray big: totalShift + Private - Left shift the bytes in aByteArray by totalShift places + +bytesLeftShift: aByteArray n: shift + Private - Left shift by shift places the bytes in aByteArray + (shift <= 7) + +bytesRightShift: aByteArray big: totalShift + Private - Right shift the bytes in aByteArray by totalShift places + +bytesRightShift: bytes n: aNumber + Private - Right shift the bytes in `bytes' by 'aNumber' places + (shift <= 7) + +bytesTrailingZeros: bytes + Private - Answer the number of trailing zero bits in the receiver + +primDivide: rhs + Private - Implements Knuth's divide and correct algorithm from + `Seminumerical Algorithms' 3rd Edition, section 4.3.1 (which is + basically an enhanced version of the divide `algorithm' for + two-digit divisors which is taught in primary school!!!) + + + +File: gst-base.info, Node: LargePositiveInteger-numeric testing, Next: LargePositiveInteger-primitive operations, Prev: LargePositiveInteger-helper byte-level methods, Up: LargePositiveInteger + +LargePositiveInteger: numeric testing +------------------------------------- + +abs + Answer the receiver's absolute value + +negative + Answer whether the receiver is < 0 + +positive + Answer whether the receiver is >= 0 + +sign + Answer the receiver's sign + +strictlyPositive + Answer whether the receiver is > 0 + + + +File: gst-base.info, Node: LargePositiveInteger-primitive operations, Prev: LargePositiveInteger-numeric testing, Up: LargePositiveInteger + +LargePositiveInteger: primitive operations +------------------------------------------ + +divide: aNumber using: aBlock + Private - Divide the receiver by aNumber (unsigned division). + Evaluate aBlock passing the result ByteArray, the remainder + ByteArray, and whether the division had a remainder + +isSmall + Private - Answer whether the receiver is small enough to employ + simple scalar algorithms for division and multiplication + +multiply: aNumber + Private - Multiply the receiver by aNumber (unsigned multiply) + + + +File: gst-base.info, Node: LargeWordArray, Next: LargeZeroInteger, Prev: LargePositiveInteger, Up: Base classes + +LargeWordArray +============== + +Defined in namespace Smalltalk +Superclass: LargeArrayedCollection +Category: Collections-Sequenceable + I am similar to a plain WordArray, but I'm specially designed to + save memory when lots of items are zero. + +* Menu: + +* LargeWordArray-overridden:: (instance) + + +File: gst-base.info, Node: LargeWordArray-overridden, Up: LargeWordArray + +LargeWordArray: overridden +-------------------------- + +defaultElement + Answer the value which is hoped to be the most common in the array + +newCollection: size + Create a WordArray of the given size + + + +File: gst-base.info, Node: LargeZeroInteger, Next: Link, Prev: LargeWordArray, Up: Base classes + +LargeZeroInteger +================ + +Defined in namespace Smalltalk +Superclass: LargePositiveInteger +Category: Language-Data types + I am quite a strange class. Indeed, the concept of a "large + integer" that is zero is a weird one. Actually my only instance is + zero but is represented like LargeIntegers, has the same + generality as LargeIntegers, and so on. That only instance is + stored in the class variable Zero, and is used in arithmetical + methods, when we have to coerce a parameter that is zero. + +* Menu: + +* LargeZeroInteger-accessing:: (instance) +* LargeZeroInteger-arithmetic:: (instance) +* LargeZeroInteger-numeric testing:: (instance) +* LargeZeroInteger-printing:: (instance) + + +File: gst-base.info, Node: LargeZeroInteger-accessing, Next: LargeZeroInteger-arithmetic, Up: LargeZeroInteger + +LargeZeroInteger: accessing +--------------------------- + +at: anIndex + Answer `0'. + +hash + Answer `0'. + +size + Answer `0'. + + + +File: gst-base.info, Node: LargeZeroInteger-arithmetic, Next: LargeZeroInteger-numeric testing, Prev: LargeZeroInteger-accessing, Up: LargeZeroInteger + +LargeZeroInteger: arithmetic +---------------------------- + +* aNumber + Multiply aNumber and the receiver, answer the result + ++ aNumber + Sum the receiver and aNumber, answer the result + +- aNumber + Subtract aNumber from the receiver, answer the result + +/ aNumber + Divide aNumber and the receiver, answer the result (an Integer or + Fraction) + +// aNumber + Divide aNumber and the receiver, answer the result truncated + towards -infinity + +\\ aNumber + Divide aNumber and the receiver, answer the remainder truncated + towards -infinity + +quo: aNumber + Divide aNumber and the receiver, answer the result truncated + towards 0 + +rem: aNumber + Divide aNumber and the receiver, answer the remainder truncated + towards 0 + + + +File: gst-base.info, Node: LargeZeroInteger-numeric testing, Next: LargeZeroInteger-printing, Prev: LargeZeroInteger-arithmetic, Up: LargeZeroInteger + +LargeZeroInteger: numeric testing +--------------------------------- + +sign + Answer the receiver's sign + +strictlyPositive + Answer whether the receiver is > 0 + + + +File: gst-base.info, Node: LargeZeroInteger-printing, Prev: LargeZeroInteger-numeric testing, Up: LargeZeroInteger + +LargeZeroInteger: printing +-------------------------- + +replace: str withStringBase: radix + Return in a string the base radix representation of the receiver. + + + +File: gst-base.info, Node: Link, Next: LinkedList, Prev: LargeZeroInteger, Up: Base classes + +Link +==== + +Defined in namespace Smalltalk +Superclass: Object +Category: Collections-Sequenceable + I represent simple linked lists. Generally, I am not used by + myself, but rather a subclass adds other instance variables that + hold the information for each node, and I hold the glue that keeps + them together. + +* Menu: + +* Link class-instance creation:: (class) +* Link-basic:: (instance) +* Link-iteration:: (instance) + + +File: gst-base.info, Node: Link class-instance creation, Next: Link-basic, Up: Link + +Link class: instance creation +----------------------------- + +nextLink: aLink + Create an instance with the given next link + + + +File: gst-base.info, Node: Link-basic, Next: Link-iteration, Prev: Link class-instance creation, Up: Link + +Link: basic +----------- + +nextLink + Answer the next item in the list + +nextLink: aLink + Set the next item in the list + + + +File: gst-base.info, Node: Link-iteration, Prev: Link-basic, Up: Link + +Link: iteration +--------------- + +at: index + Retrieve a node (instance of Link) that is at a distance of `index' + after the receiver. + +at: index put: object + This method should not be called for instances of this class. + +do: aBlock + Evaluate aBlock for each element in the list + +size + Answer the number of elements in the list. Warning: this is O(n) + + + +File: gst-base.info, Node: LinkedList, Next: LookupKey, Prev: Link, Up: Base classes + +LinkedList +========== + +Defined in namespace Smalltalk +Superclass: SequenceableCollection +Category: Collections-Sequenceable + I provide methods that access and manipulate linked lists. I + assume that the elements of the linked list are subclasses of + Link, because I use the methods that class Link supplies to + implement my methods. + +* Menu: + +* LinkedList-accessing:: (instance) +* LinkedList-adding:: (instance) +* LinkedList-enumerating:: (instance) +* LinkedList-testing:: (instance) + + +File: gst-base.info, Node: LinkedList-accessing, Next: LinkedList-adding, Up: LinkedList + +LinkedList: accessing +--------------------- + +at: index + Return the element that is index into the linked list. + +at: index put: object + This method should not be called for instances of this class. + + + +File: gst-base.info, Node: LinkedList-adding, Next: LinkedList-enumerating, Prev: LinkedList-accessing, Up: LinkedList + +LinkedList: adding +------------------ + +add: aLink + Add aLink at the end of the list; return aLink. + +addFirst: aLink + Add aLink at the head of the list; return aLink. + +addLast: aLink + Add aLink at then end of the list; return aLink. + +remove: aLink ifAbsent: aBlock + Remove aLink from the list and return it, or invoke aBlock if it's + not found in the list. + +removeFirst + Remove the first element from the list and return it, or error if + the list is empty. + +removeLast + Remove the final element from the list and return it, or error if + the list is empty. + + + +File: gst-base.info, Node: LinkedList-enumerating, Next: LinkedList-testing, Prev: LinkedList-adding, Up: LinkedList + +LinkedList: enumerating +----------------------- + +do: aBlock + Enumerate each object in the list, passing it to aBlock (actual + behavior might depend on the subclass of Link that is being used). + + + +File: gst-base.info, Node: LinkedList-testing, Prev: LinkedList-enumerating, Up: LinkedList + +LinkedList: testing +------------------- + +isEmpty + Returns true if the list contains no members + +notEmpty + Returns true if the list contains at least a member + +size + Answer the number of elements in the list. Warning: this is O(n) + + + +File: gst-base.info, Node: LookupKey, Next: LookupTable, Prev: LinkedList, Up: Base classes + +LookupKey +========= + +Defined in namespace Smalltalk +Superclass: Magnitude +Category: Language-Data types + I represent a key for looking up entries in a data structure. + Subclasses of me, such as Association, typically represent + dictionary entries. + +* Menu: + +* LookupKey class-basic:: (class) +* LookupKey-accessing:: (instance) +* LookupKey-printing:: (instance) +* LookupKey-storing:: (instance) +* LookupKey-testing:: (instance) + + +File: gst-base.info, Node: LookupKey class-basic, Next: LookupKey-accessing, Up: LookupKey + +LookupKey class: basic +---------------------- + +key: aKey + Answer a new instance of the receiver with the given key and value + + + +File: gst-base.info, Node: LookupKey-accessing, Next: LookupKey-printing, Prev: LookupKey class-basic, Up: LookupKey + +LookupKey: accessing +-------------------- + +key + Answer the receiver's key + +key: aKey + Set the receiver's key to aKey + + + +File: gst-base.info, Node: LookupKey-printing, Next: LookupKey-storing, Prev: LookupKey-accessing, Up: LookupKey + +LookupKey: printing +------------------- + +printOn: aStream + Put on aStream a representation of the receiver + + + +File: gst-base.info, Node: LookupKey-storing, Next: LookupKey-testing, Prev: LookupKey-printing, Up: LookupKey + +LookupKey: storing +------------------ + +storeOn: aStream + Put on aStream some Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: LookupKey-testing, Prev: LookupKey-storing, Up: LookupKey + +LookupKey: testing +------------------ + +< aLookupKey + Answer whether the receiver's key is less than aLookupKey's + += aLookupKey + Answer whether the receiver's key and value are the same as + aLookupKey's, or false if aLookupKey is not an instance of the + receiver + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: LookupTable, Next: Magnitude, Prev: LookupKey, Up: Base classes + +LookupTable +=========== + +Defined in namespace Smalltalk +Superclass: Dictionary +Category: Collections-Keyed + I am similar to Dictionary, except that my representation is + different (more efficient, but not useful to store a variable + binding). I use the object equality comparison message #= to + determine equivalence of indices. + +* Menu: + +* LookupTable class-instance creation:: (class) +* LookupTable-accessing:: (instance) +* LookupTable-copying:: (instance) +* LookupTable-enumerating:: (instance) +* LookupTable-hashing:: (instance) +* LookupTable-rehashing:: (instance) +* LookupTable-removing:: (instance) +* LookupTable-storing:: (instance) + + +File: gst-base.info, Node: LookupTable class-instance creation, Next: LookupTable-accessing, Up: LookupTable + +LookupTable class: instance creation +------------------------------------ + +new + Create a new LookupTable with a default size + + + +File: gst-base.info, Node: LookupTable-accessing, Next: LookupTable-copying, Prev: LookupTable class-instance creation, Up: LookupTable + +LookupTable: accessing +---------------------- + +add: anAssociation + Add the anAssociation key to the receiver + +associationAt: key ifAbsent: aBlock + Answer the key/value Association for the given key. Evaluate aBlock + (answering the result) if the key is not found + +at: key ifAbsent: aBlock + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found + +at: aKey ifPresent: aBlock + If aKey is absent, answer nil. Else, evaluate aBlock passing the + associated value and answer the result of the invocation + +at: key put: value + Store value as associated to the given key + + + +File: gst-base.info, Node: LookupTable-copying, Next: LookupTable-enumerating, Prev: LookupTable-accessing, Up: LookupTable + +LookupTable: copying +-------------------- + +deepCopy + Returns a deep copy of the receiver (the instance variables are + copies of the receiver's instance variables) + + + +File: gst-base.info, Node: LookupTable-enumerating, Next: LookupTable-hashing, Prev: LookupTable-copying, Up: LookupTable + +LookupTable: enumerating +------------------------ + +associationsDo: aBlock + Pass each association in the LookupTable to aBlock + +keysAndValuesDo: aBlock + Pass each key/value pair in the LookupTable as two distinct + parameters to aBlock + + + +File: gst-base.info, Node: LookupTable-hashing, Next: LookupTable-rehashing, Prev: LookupTable-enumerating, Up: LookupTable + +LookupTable: hashing +-------------------- + +hash + Answer the hash value for the receiver + + + +File: gst-base.info, Node: LookupTable-rehashing, Next: LookupTable-removing, Prev: LookupTable-hashing, Up: LookupTable + +LookupTable: rehashing +---------------------- + +rehash + Rehash the receiver + + + +File: gst-base.info, Node: LookupTable-removing, Next: LookupTable-storing, Prev: LookupTable-rehashing, Up: LookupTable + +LookupTable: removing +--------------------- + +remove: anAssociation + Remove anAssociation's key from the dictionary + +remove: anAssociation ifAbsent: aBlock + Remove anAssociation's key from the dictionary + +removeKey: key ifAbsent: aBlock + Remove the passed key from the LookupTable, answer the result of + evaluating aBlock if it is not found + + + +File: gst-base.info, Node: LookupTable-storing, Prev: LookupTable-removing, Up: LookupTable + +LookupTable: storing +-------------------- + +storeOn: aStream + Print Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Magnitude, Next: MappedCollection, Prev: LookupTable, Up: Base classes + +Magnitude +========= + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Data types + I am an abstract class. My objects represent things that are + discrete and map to a number line. My instances can be compared + with < and >. + +* Menu: + +* Magnitude-basic:: (instance) +* Magnitude-misc methods:: (instance) + + +File: gst-base.info, Node: Magnitude-basic, Next: Magnitude-misc methods, Up: Magnitude + +Magnitude: basic +---------------- + +< aMagnitude + Answer whether the receiver is less than aMagnitude + +<= aMagnitude + Answer whether the receiver is less than or equal to aMagnitude + += aMagnitude + Answer whether the receiver is equal to aMagnitude + +> aMagnitude + Answer whether the receiver is greater than aMagnitude + +>= aMagnitude + Answer whether the receiver is greater than or equal to aMagnitude + + + +File: gst-base.info, Node: Magnitude-misc methods, Prev: Magnitude-basic, Up: Magnitude + +Magnitude: misc methods +----------------------- + +between: min and: max + Returns true if object is inclusively between min and max. + +max: aMagnitude + Returns the greatest object between the receiver and aMagnitude + +min: aMagnitude + Returns the least object between the receiver and aMagnitude + + + +File: gst-base.info, Node: MappedCollection, Next: Memory, Prev: Magnitude, Up: Base classes + +MappedCollection +================ + +Defined in namespace Smalltalk +Superclass: Collection +Category: Collections-Keyed + I represent collections of objects that are indirectly indexed by + names. There are really two collections involved: domain and a + map. The map maps between external names and indices into domain, + which contains the real association. In order to work properly, + the domain must be an instance of a subclass of + SequenceableCollection, and the map must be an instance of + Dictionary, or of a subclass of SequenceableCollection. + + As an example of using me, consider implenting a Dictionary whose + elements are indexed. The domain would be a SequenceableCollection + with n elements, the map a Dictionary associating each key to an + index in the domain. To access by key, to perform enumeration, + etc. you would ask an instance of me; to access by index, you + would access the domain directly. + + Another idea could be to implement row access or column access to + a matrix implemented as a single n*m Array: the Array would be the + domain, while the map would be an Interval. + + +* Menu: + +* MappedCollection class-instance creation:: (class) +* MappedCollection-basic:: (instance) + + +File: gst-base.info, Node: MappedCollection class-instance creation, Next: MappedCollection-basic, Up: MappedCollection + +MappedCollection class: instance creation +----------------------------------------- + +collection: aCollection map: aMap + Answer a new MappedCollection using the given domain (aCollection) + and map + +new + This method should not be used; instead, use #collection:map: to + create MappedCollection. + + + +File: gst-base.info, Node: MappedCollection-basic, Prev: MappedCollection class-instance creation, Up: MappedCollection + +MappedCollection: basic +----------------------- + +add: anObject + This method should not be called for instances of this class. + +at: key + Answer the object at the given key + +at: key put: value + Store value at the given key + +collect: aBlock + Answer a MappedCollection with a copy of the receiver's map and a + domain obtained by passing each object through aBlock + +contents + Answer a bag with the receiver's values + +do: aBlock + Evaluate aBlock for each object + +domain + Answer the domain + +map + Answer the map + +reject: aBlock + Answer the objects in the domain for which aBlock returns false + +select: aBlock + Answer the objects in the domain for which aBlock returns true + +size + Answer the receiver's size + + + +File: gst-base.info, Node: Memory, Next: Message, Prev: MappedCollection, Up: Base classes + +Memory +====== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + I provide access to actual machine addresses of OOPs and objects. + I have no instances; you send messages to my class to map between + an object and the address of its OOP or object. In addition I + provide direct memory access with different C types (ints, chars, + OOPs, floats,...). + +* Menu: + +* Memory class-accessing:: (class) + + +File: gst-base.info, Node: Memory class-accessing, Up: Memory + +Memory class: accessing +----------------------- + +at: anAddress + Access the Smalltalk object (OOP) at the given address. + +at: anAddress put: aValue + Store a pointer (OOP) to the Smalltalk object identified by `value' + at the given address. + +bigEndian + Answer whether we're running on a big- or little-endian system. + +charAt: anAddress + Access the C char at the given address. The value is returned as a + Smalltalk Character. + +charAt: anAddress put: aValue + Store as a C char the Smalltalk Character or Integer object + identified by `value', at the given address, using sizeof(char) + bytes - i.e. 1 byte. + +deref: anAddress + Access the C int pointed by the given address + +doubleAt: anAddress + Access the C double at the given address. + +doubleAt: anAddress put: aValue + Store the Smalltalk Float object identified by `value', at the + given address, writing it like a C double. + +floatAt: anAddress + Access the C float at the given address. + +floatAt: anAddress put: aValue + Store the Smalltalk Float object identified by `value', at the + given address, writing it like a C float. + +intAt: anAddress + Access the C int at the given address. + +intAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(int) bytes. + +longAt: anAddress + Access the C long int at the given address. + +longAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(long) bytes. + +shortAt: anAddress + Access the C short int at the given address. + +shortAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(short) bytes. + +stringAt: anAddress + Access the string pointed by the C `char *' at the given given + address. + +stringAt: anAddress put: aValue + Store the Smalltalk String object identified by `value', at the + given address in memory, writing it like a *FRESHLY ALLOCATED* C + string. It is the caller's responsibility to free it if necessary. + +ucharAt: anAddress put: aValue + Store as a C char the Smalltalk Character or Integer object + identified by `value', at the given address, using sizeof(char) + bytes - i.e. 1 byte. + +uintAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(int) bytes. + +ulongAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(long) bytes. + +unsignedCharAt: anAddress + Access the C unsigned char at the given address. The value is + returned as a Smalltalk Character. + +unsignedCharAt: anAddress put: aValue + Store as a C char the Smalltalk Character or Integer object + identified by `value', at the given address, using sizeof(char) + bytes - i.e. 1 byte. + +unsignedIntAt: anAddress + Access the C unsigned int at the given address. + +unsignedIntAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(int) bytes. + +unsignedLongAt: anAddress + Access the C unsigned long int at the given address. + +unsignedLongAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(long) bytes. + +unsignedShortAt: anAddress + Access the C unsigned short int at the given address. + +unsignedShortAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(short) bytes. + +ushortAt: anAddress put: aValue + Store the Smalltalk Integer object identified by `value', at the + given address, using sizeof(short) bytes. + + + +File: gst-base.info, Node: Message, Next: MessageNotUnderstood, Prev: Memory, Up: Base classes + +Message +======= + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + I am a virtually existent class. By that I mean that logically + instances of my class are created whenever a message is sent to an + object, but in reality my instances are only created to hold a + message that has failed, so that error reporting methods can + examine the sender and arguments. + +* Menu: + +* Message class-creating instances:: (class) +* Message-accessing:: (instance) +* Message-basic:: (instance) + + +File: gst-base.info, Node: Message class-creating instances, Next: Message-accessing, Up: Message + +Message class: creating instances +--------------------------------- + +selector: aSymbol arguments: anArray + Create a new Message with the given selector and arguments + + + +File: gst-base.info, Node: Message-accessing, Next: Message-basic, Prev: Message class-creating instances, Up: Message + +Message: accessing +------------------ + +argument + Answer the first of the receiver's arguments + +arguments + Answer the receiver's arguments + +arguments: anArray + Set the receiver's arguments + +selector + Answer the receiver's selector + +selector: aSymbol + Set the receiver's selector + + + +File: gst-base.info, Node: Message-basic, Prev: Message-accessing, Up: Message + +Message: basic +-------------- + +printOn: aStream + Print a representation of the receiver on aStream + +reinvokeFor: aReceiver + Resend to aReceiver - present for compatibility + +sendTo: aReceiver + Resend to aReceiver + + + +File: gst-base.info, Node: MessageNotUnderstood, Next: Metaclass, Prev: Message, Up: Base classes + +MessageNotUnderstood +==================== + +Defined in namespace Smalltalk +Superclass: Halt +Category: Language-Exceptions + MessageNotUnderstood represents an error during message lookup. + Signaling it is the default action of the #doesNotUnderstand: + handler + +* Menu: + +* MessageNotUnderstood-accessing:: (instance) +* MessageNotUnderstood-description:: (instance) + + +File: gst-base.info, Node: MessageNotUnderstood-accessing, Next: MessageNotUnderstood-description, Up: MessageNotUnderstood + +MessageNotUnderstood: accessing +------------------------------- + +message + Answer the message that wasn't understood + +receiver + Answer the object to whom the message send was directed + + + +File: gst-base.info, Node: MessageNotUnderstood-description, Prev: MessageNotUnderstood-accessing, Up: MessageNotUnderstood + +MessageNotUnderstood: description +--------------------------------- + +description + Answer a textual description of the exception. + + + +File: gst-base.info, Node: Metaclass, Next: MethodContext, Prev: MessageNotUnderstood, Up: Base classes + +Metaclass +========= + +Defined in namespace Smalltalk +Superclass: ClassDescription +Category: Language-Implementation + I am the root of the class hierarchy. My instances are + metaclasses, one for each real class. My instances have a single + instance, which they hold onto, which is the class that they are + the metaclass of. I provide methods for creation of actual class + objects from metaclass object, and the creation of metaclass + objects, which are my instances. If this is confusing to you, it + should be...the Smalltalk metaclass system is strange and complex. + +* Menu: + +* Metaclass class-instance creation:: (class) +* Metaclass-accessing:: (instance) +* Metaclass-basic:: (instance) +* Metaclass-delegation:: (instance) +* Metaclass-filing:: (instance) +* Metaclass-printing:: (instance) +* Metaclass-testing functionality:: (instance) + + +File: gst-base.info, Node: Metaclass class-instance creation, Next: Metaclass-accessing, Up: Metaclass + +Metaclass class: instance creation +---------------------------------- + +subclassOf: superMeta + Answer a new metaclass representing a subclass of superMeta + + + +File: gst-base.info, Node: Metaclass-accessing, Next: Metaclass-basic, Prev: Metaclass class-instance creation, Up: Metaclass + +Metaclass: accessing +-------------------- + +instanceClass + Answer the only instance of the metaclass + +primaryInstance + Answer the only instance of the metaclass - present for + compatibility + +soleInstance + Answer the only instance of the metaclass - present for + compatibility + + + +File: gst-base.info, Node: Metaclass-basic, Next: Metaclass-delegation, Prev: Metaclass-accessing, Up: Metaclass + +Metaclass: basic +---------------- + +instanceVariableNames: classInstVarNames + Set the class-instance variables for the receiver to be those in + classInstVarNames + +name: newName + environment: aNamespace subclassOf: superclass + instanceVariableNames: stringOfInstVarNames variable: + variableBoolean words: wordBoolean pointers: pointerBoolean + classVariableNames: stringOfClassVarNames + poolDictionaries: stringOfPoolNames category: categoryName + Private - create a full featured class and install it, or change an + existing one + +newMeta: className + environment: aNamespace subclassOf: superclass + instanceVariableNames: stringOfInstVarNames variable: + variableBoolean words: wordBoolean pointers: pointerBoolean + classVariableNames: stringOfClassVarNames + poolDictionaries: stringOfPoolNames category: categoryName + Private - create a full featured class and install it + + + +File: gst-base.info, Node: Metaclass-delegation, Next: Metaclass-filing, Prev: Metaclass-basic, Up: Metaclass + +Metaclass: delegation +--------------------- + +addClassVarName: aString + Add a class variable with the given name to the class pool + dictionary + +addSharedPool: aDictionary + Add the given shared pool to the list of the class' pool + dictionaries + +allClassVarNames + Answer the names of the variables in the receiver's class pool + dictionary and in each of the superclasses' class pool dictionaries + +allSharedPools + Return the names of the shared pools defined by the class and any + of its superclasses + +category + Answer the class category + +classPool + Answer the class pool dictionary + +classVarNames + Answer the names of the variables in the class pool dictionary + +comment + Answer the class comment + +debuggerClass + Answer the debugger class that was set in the instance class + +environment + Answer the namespace in which the receiver is implemented + +name + Answer the class name - it has none, actually + +removeClassVarName: aString + Removes the class variable from the class, error if not present, or + still in use. + +removeSharedPool: aDictionary + Remove the given dictionary to the list of the class' pool + dictionaries + +sharedPools + Return the names of the shared pools defined by the class + + + +File: gst-base.info, Node: Metaclass-filing, Next: Metaclass-printing, Prev: Metaclass-delegation, Up: Metaclass + +Metaclass: filing +----------------- + +fileOutOn: aFileStream + File out complete class description: class definition, class and + instance methods + + + +File: gst-base.info, Node: Metaclass-printing, Next: Metaclass-testing functionality, Prev: Metaclass-filing, Up: Metaclass + +Metaclass: printing +------------------- + +nameIn: aNamespace + Answer the class name when the class is referenced from aNamespace. + +printOn: aStream + Print a represention of the receiver on aStream + +printOn: aStream in: aNamespace + Print on aStream the class name when the class is referenced from + aNamespace. + +storeOn: aStream + Store Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Metaclass-testing functionality, Prev: Metaclass-printing, Up: Metaclass + +Metaclass: testing functionality +-------------------------------- + +asClass + Answer `instanceClass'. + +isMetaclass + Answer `true'. + + + +File: gst-base.info, Node: MethodContext, Next: MethodDictionary, Prev: Metaclass, Up: Base classes + +MethodContext +============= + +Defined in namespace Smalltalk +Superclass: ContextPart +Category: Language-Implementation + My instances represent an actively executing method. They record + various bits of information about the execution environment, and + contain the execution stack. + +* Menu: + +* MethodContext-accessing:: (instance) +* MethodContext-printing:: (instance) + + +File: gst-base.info, Node: MethodContext-accessing, Next: MethodContext-printing, Up: MethodContext + +MethodContext: accessing +------------------------ + +home + Answer the MethodContext to which the receiver refers (i.e. the + receiver itself) + +isBlock + Answer whether the receiver is a block context + + block + +isDisabled + Answers whether the receiver has actually ended execution and will + be skipped when doing a return. BlockContexts are removed from the + chain whenever a non-local return is done, but MethodContexts need + to stay there in case there is a non-local return from the #ensure: + block. + +isEnvironment + To create a valid execution environment for the interpreter even + before it starts, GST creates a fake context whose selector is nil + and which can be used as a marker for the current execution + environment. Answer whether the receiver is that kind of context. + +isUnwind + Answers whether the context must continue execution even after a + non-local return (a return from the enclosing method of a block, or + a call to the #continue: method of ContextPart). Such contexts are + created only by #ensure:. + +sender + Return the context from which the receiver was sent + + + +File: gst-base.info, Node: MethodContext-printing, Prev: MethodContext-accessing, Up: MethodContext + +MethodContext: printing +----------------------- + +printOn: aStream + Print a representation for the receiver on aStream + + + +File: gst-base.info, Node: MethodDictionary, Next: MethodInfo, Prev: MethodContext, Up: Base classes + +MethodDictionary +================ + +Defined in namespace Smalltalk +Superclass: LookupTable +Category: Language-Implementation + I am similar to an IdentityDictionary, except that removal and + rehashing operations inside my instances look atomic to the + interpreter. + +* Menu: + +* MethodDictionary-adding:: (instance) +* MethodDictionary-rehashing:: (instance) +* MethodDictionary-removing:: (instance) + + +File: gst-base.info, Node: MethodDictionary-adding, Next: MethodDictionary-rehashing, Up: MethodDictionary + +MethodDictionary: adding +------------------------ + +at: key put: value + Store value as associated to the given key + + + +File: gst-base.info, Node: MethodDictionary-rehashing, Next: MethodDictionary-removing, Prev: MethodDictionary-adding, Up: MethodDictionary + +MethodDictionary: rehashing +--------------------------- + +rehash + Rehash the receiver + + + +File: gst-base.info, Node: MethodDictionary-removing, Prev: MethodDictionary-rehashing, Up: MethodDictionary + +MethodDictionary: removing +-------------------------- + +remove: anAssociation + Remove anAssociation's key from the dictionary + +removeKey: anElement ifAbsent: aBlock + Remove the passed key from the dictionary, answer the result of + evaluating aBlock if it is not found + + + +File: gst-base.info, Node: MethodInfo, Next: Namespace, Prev: MethodDictionary, Up: Base classes + +MethodInfo +========== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + I provide information about particular methods. I can produce the + category that a method was filed under, and can be used to access + the source code of the method. + +* Menu: + +* MethodInfo-accessing:: (instance) +* MethodInfo-equality:: (instance) + + +File: gst-base.info, Node: MethodInfo-accessing, Next: MethodInfo-equality, Up: MethodInfo + +MethodInfo: accessing +--------------------- + +category + Answer the method category + +category: aCategory + Set the method category + +methodClass + Answer the class in which the method is defined + +methodClass: aClass + Set the class in which the method is defined + +selector + Answer the selector through which the method is called + +selector: aSymbol + Set the selector through which the method is called + +sourceCode + Answer a FileSegment or String or nil containing the method source + code + +sourceFile + Answer the name of the file where the method source code is + +sourcePos + Answer the starting position of the method source code in the + sourceFile + +sourceString + Answer a String containing the method source code + +stripSourceCode + Remove the reference to the source code for the method + + + +File: gst-base.info, Node: MethodInfo-equality, Prev: MethodInfo-accessing, Up: MethodInfo + +MethodInfo: equality +-------------------- + += aMethodInfo + Compare the receiver and aMethodInfo, answer whether they're equal + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: Namespace, Next: NetClients.URIResolver, Prev: MethodInfo, Up: Base classes + +Namespace +========= + +Defined in namespace Smalltalk +Superclass: AbstractNamespace +Category: Language-Implementation + I am a Namespace that has a super-namespace. + +* Menu: + +* Namespace class-accessing:: (class) +* Namespace class-disabling instance creation:: (class) +* Namespace class-initialization:: (class) +* Namespace-accessing:: (instance) +* Namespace-namespace hierarchy:: (instance) +* Namespace-overrides for superspaces:: (instance) +* Namespace-printing:: (instance) +* Namespace-testing:: (instance) + + +File: gst-base.info, Node: Namespace class-accessing, Next: Namespace class-disabling instance creation, Up: Namespace + +Namespace class: accessing +-------------------------- + +current + Answer the current namespace + +current: aNamespaceOrClass + Set the current namespace to be aNamespace or, if it is a class, + its class pool (the Dictionary that holds class variables). + + + +File: gst-base.info, Node: Namespace class-disabling instance creation, Next: Namespace class-initialization, Prev: Namespace class-accessing, Up: Namespace + +Namespace class: disabling instance creation +-------------------------------------------- + +new + Disabled - use #addSubspace: to create instances + +new: size + Disabled - use #addSubspace: to create instances + + + +File: gst-base.info, Node: Namespace class-initialization, Next: Namespace-accessing, Prev: Namespace class-disabling instance creation, Up: Namespace + +Namespace class: initialization +------------------------------- + +initialize + This actually is not needed, the job could be done in dict.c + (function namespace_new). But I'm lazy and I prefer to rely on + the Smalltalk implementation of IdentitySet. + + + +File: gst-base.info, Node: Namespace-accessing, Next: Namespace-namespace hierarchy, Prev: Namespace class-initialization, Up: Namespace + +Namespace: accessing +-------------------- + +inheritedKeys + Answer a Set of all the keys in the receiver and its superspaces + + + +File: gst-base.info, Node: Namespace-namespace hierarchy, Next: Namespace-overrides for superspaces, Prev: Namespace-accessing, Up: Namespace + +Namespace: namespace hierarchy +------------------------------ + +siblings + Answer all the other namespaces that inherit from the receiver's + superspace. + +siblingsDo: aBlock + Evaluate aBlock once for each of the other namespaces that inherit + from the receiver's superspace, passing the namespace as a + parameter. + + + +File: gst-base.info, Node: Namespace-overrides for superspaces, Next: Namespace-printing, Prev: Namespace-namespace hierarchy, Up: Namespace + +Namespace: overrides for superspaces +------------------------------------ + +associationAt: key ifAbsent: aBlock + Return the key/value pair associated to the variable named as + specified by `key'. If the key is not found search will be brought + on in superspaces, finally evaluating aBlock if the variable + cannot be found in any of the superspaces. + +associationsDo: aBlock + Pass each association in the namespace to aBlock + +at: key ifAbsent: aBlock + Return the value associated to the variable named as specified by + `key'. If the key is not found search will be brought on in + superspaces, finally evaluating aBlock if the variable cannot be + found in any of the superspaces. + +at: key ifPresent: aBlock + If aKey is absent from the receiver and all its superspaces, + answer nil. Else, evaluate aBlock passing the associated value and + answer the result of the invocation + +do: aBlock + Pass each value in the namespace to aBlock + +includesKey: key + Answer whether the receiver or any of its superspaces contain the + given key + +keysAndValuesDo: aBlock + Pass to aBlock each of the receiver's keys and values, in two + separate parameters + +keysDo: aBlock + Pass to aBlock each of the receiver's keys + +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. + +size + Answer the number of keys in the receiver and each of its + superspaces + + + +File: gst-base.info, Node: Namespace-printing, Next: Namespace-testing, Prev: Namespace-overrides for superspaces, Up: Namespace + +Namespace: printing +------------------- + +nameIn: aNamespace + Answer Smalltalk code compiling to the receiver when the current + namespace is aNamespace + +printOn: aStream in: aNamespace + Print on aStream some Smalltalk code compiling to the receiver + when the current namespace is aNamespace + +storeOn: aStream + Store Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: Namespace-testing, Prev: Namespace-printing, Up: Namespace + +Namespace: testing +------------------ + +isSmalltalk + Answer `true'. + + + +File: gst-base.info, Node: NetClients.URIResolver, Next: NetClients.URL, Prev: Namespace, Up: Base classes + +NetClients.URIResolver +====================== + +Defined in namespace Smalltalk.NetClients +Superclass: Object +Category: NetClients-URIResolver + This class publishes methods to download files from the Internet. + +* Menu: + +* NetClients.URIResolver class-api:: (class) +* NetClients.URIResolver class-instance creation:: (class) + + +File: gst-base.info, Node: NetClients.URIResolver class-api, Next: NetClients.URIResolver class-instance creation, Up: NetClients.URIResolver + +NetClients.URIResolver class: api +--------------------------------- + +openOn: aURI + Always raise an error, as this method is not supported without + loading the additional NetClients package. + +openOn: aURI ifFail: aBlock + Always evaluate aBlock and answer the result if the additional + NetClients package is not loaded. If it is, instead, return a + WebEntity with the contents of the resource specified by anURI, + and only evaluate the block if loading the resource fails. + +openStreamOn: aURI + Check if aURI can be fetched from the Internet or from the local + system, and if so return a Stream with its contents. If this is + not possible, raise an exception. + +openStreamOn: aURI ifFail: aBlock + Check if aURI can be fetched from the Internet or from the local + system, and if so return a Stream with its contents. If this is + not possible, instead, evaluate the zero-argument block aBlock and + answer the result of the evaluation. + + + +File: gst-base.info, Node: NetClients.URIResolver class-instance creation, Prev: NetClients.URIResolver class-api, Up: NetClients.URIResolver + +NetClients.URIResolver class: instance creation +----------------------------------------------- + +on: anURL + Answer a new URIResolver that will do its best to fetch the data + for anURL from the Internet. + + + +File: gst-base.info, Node: NetClients.URL, Next: Notification, Prev: NetClients.URIResolver, Up: Base classes + +NetClients.URL +============== + +Defined in namespace Smalltalk.NetClients +Superclass: Object +Category: NetClients-URIResolver + Copyright (c) Kazuki Yasumatsu, 1995. All rights reserved. + + +* Menu: + +* NetClients.URL class-encoding URLs:: (class) +* NetClients.URL class-instance creation:: (class) +* NetClients.URL-accessing:: (instance) +* NetClients.URL-comparing:: (instance) +* NetClients.URL-copying:: (instance) +* NetClients.URL-initialize-release:: (instance) +* NetClients.URL-printing:: (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 + +NetClients.URL class: encoding URLs +----------------------------------- + +decode: aString + Decode a text/x-www-form-urlencoded String into a text/plain + String. + +encode: anURL + Encode a text/plain into a text/x-www-form-urlencoded String (those + things with lots of % in them). + +initialize + Initialize the receiver's class variables. + + + +File: gst-base.info, Node: NetClients.URL class-instance creation, Next: NetClients.URL-accessing, Prev: NetClients.URL class-encoding URLs, Up: NetClients.URL + +NetClients.URL class: instance creation +--------------------------------------- + +fromString: aString + Parse the given URL and answer an URL object based on it. + +new + Answer a 'blank' URL. + +scheme: schemeString host: hostString port: portNumber path: pathString + Answer an URL object made from all the parts passed as arguments. + +scheme: schemeString path: pathString + Answer an URL object made from all the parts passed as arguments. + +scheme: schemeString username: userString password: passwordString host: hostString port: portNumber path: pathString + Answer an URL object made from all the parts passed as arguments. + + + +File: gst-base.info, Node: NetClients.URL-accessing, Next: NetClients.URL-comparing, Prev: NetClients.URL class-instance creation, Up: NetClients.URL + +NetClients.URL: accessing +------------------------- + +decodedFields + Convert the form fields to a Dictionary, answer nil if no question + mark is found in the URL. + +decodedFile + Answer the file part of the URL, decoding it from + x-www-form-urlencoded format. + +decodedFragment + Answer the fragment part of the URL, decoding it from + x-www-form-urlencoded format. + +fragment + Answer the fragment part of the URL, leaving it in + x-www-form-urlencoded format. + +fragment: aString + Set the fragment part of the URL, which should be in + x-www-form-urlencoded format. + +fullRequestString + Answer the full request string corresponding to the URL. This is + how the URL would be printed in the address bar of a web browser, + except that the query data is printed even if it is to be sent + through a POST request. + +hasPostData + Answer whether the URL has a query part but is actually for an + HTTP POST request and not really part of the URL (as it would be + for the HTTP GET request). + +hasPostData: aBoolean + Set whether the query part of the URL is actually the data for an + HTTP POST request and not really part of the URL (as it would be + for the HTTP GET request). + +host + Answer the host part of the URL. + +host: aString + Set the host part of the URL to aString. + +newsGroup + If the receiver is an nntp url, return the news group. + +password + Answer the password part of the URL. + +password: aString + Set the password part of the URL to aString. + +path + Answer the path part of the URL. + +path: aString + Set the path part of the URL to aString. + +port + Answer the port number part of the URL. + +port: anInteger + Set the port number part of the URL to anInteger. + +postData + Answer whether the URL has a query part and it is meant for an + HTTP POST request, answer it. Else answer nil. + +postData: aString + Associate to the URL some data that is meant to be sent through an + HTTP POST request, answer it. + +query + Answer the query data associated to the URL. + +query: aString + Set the query data associated to the URL to aString. + +requestString + Answer the URL as it would be sent in an HTTP stream (that is, the + path and the query data, the latter only if it is to be sent with + an HTTP POST request). + +scheme + Answer the URL's scheme. + +scheme: aString + Set the URL's scheme to be aString. + +username + Answer the username part of the URL. + +username: aString + Set the username part of the URL to aString. + + + +File: gst-base.info, Node: NetClients.URL-comparing, Next: NetClients.URL-copying, Prev: NetClients.URL-accessing, Up: NetClients.URL + +NetClients.URL: comparing +------------------------- + += anURL + Answer whether the two URLs are equal. The file and anchor are + converted to full 8-bit ASCII (contrast with urlencoded) and the + comparison is case-sensitive; on the other hand, the protocol and + host are compared without regard to case. + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: NetClients.URL-copying, Next: NetClients.URL-initialize-release, Prev: NetClients.URL-comparing, Up: NetClients.URL + +NetClients.URL: copying +----------------------- + +copyWithoutAuxiliaryParts + Answer a copy of the receiver where the fragment and query parts + of the URL have been cleared. + +copyWithoutFragment + Answer a copy of the receiver where the fragment parts of the URL + has been cleared. + +postCopy + All the variables are copied when an URL object is copied. + + + +File: gst-base.info, Node: NetClients.URL-initialize-release, Next: NetClients.URL-printing, Prev: NetClients.URL-copying, Up: NetClients.URL + +NetClients.URL: initialize-release +---------------------------------- + +initialize + Initialize the object to a consistent state. + + + +File: gst-base.info, Node: NetClients.URL-printing, Next: NetClients.URL-testing, Prev: NetClients.URL-initialize-release, Up: NetClients.URL + +NetClients.URL: printing +------------------------ + +printOn: stream + Print a representation of the URL on the given stream. + + + +File: gst-base.info, Node: NetClients.URL-testing, Next: NetClients.URL-utilities, Prev: NetClients.URL-printing, Up: NetClients.URL + +NetClients.URL: testing +----------------------- + +canCache + Answer whether the URL is cacheable. The current implementation + considers file URLs not to be cacheable, and everything else to be. + +hasFragment + Answer whether the URL points to a particular fragment (anchor) of + the resource. + +hasQuery + Answer whether the URL includes query arguments to be submitted + when retrieving the resource. + +isFileScheme + Answer whether the URL is a file URL. + +isFragmentOnly + Answer whether the URL only includes the name of a particular + fragment (anchor) of the resource to which it refers. + + + +File: gst-base.info, Node: NetClients.URL-utilities, Prev: NetClients.URL-testing, Up: NetClients.URL + +NetClients.URL: utilities +------------------------- + +construct: anURL + Construct an absolute URL based on the relative URL anURL and the + base path represented by the receiver + + + +File: gst-base.info, Node: Notification, Next: NullProxy, Prev: NetClients.URL, Up: Base classes + +Notification +============ + +Defined in namespace Smalltalk +Superclass: Exception +Category: Language-Exceptions + Notification represents a resumable, exceptional yet non-erroneous, + situation. Signaling a notification in absence of an handler + simply returns nil. + +* Menu: + +* Notification-exception description:: (instance) + + +File: gst-base.info, Node: Notification-exception description, Up: Notification + +Notification: exception description +----------------------------------- + +defaultAction + Do the default action for notifications, which is to resume + execution of the context which signaled the exception. + +description + Answer a textual description of the exception. + +isResumable + Answer true. Notification exceptions are by default resumable. + + + +File: gst-base.info, Node: NullProxy, Next: NullValueHolder, Prev: Notification, Up: Base classes + +NullProxy +========= + +Defined in namespace Smalltalk +Superclass: AlternativeObjectProxy +Category: Streams-Files + I am a proxy that does no special processing on the object to be + saved. I can be used to disable proxies for particular subclasses. + My subclasses add to the stored information, but share the fact + that the format is about the same as that of #dump: without a + proxy. + +* Menu: + +* NullProxy class-instance creation:: (class) +* NullProxy-accessing:: (instance) + + +File: gst-base.info, Node: NullProxy class-instance creation, Next: NullProxy-accessing, Up: NullProxy + +NullProxy class: instance creation +---------------------------------- + +loadFrom: anObjectDumper + Reload the object stored in anObjectDumper + + + +File: gst-base.info, Node: NullProxy-accessing, Prev: NullProxy class-instance creation, Up: NullProxy + +NullProxy: accessing +-------------------- + +dumpTo: anObjectDumper + Dump the object stored in the proxy to anObjectDumper + + + +File: gst-base.info, Node: NullValueHolder, Next: Number, Prev: NullProxy, Up: Base classes + +NullValueHolder +=============== + +Defined in namespace Smalltalk +Superclass: ValueAdaptor +Category: Language-Data types + I pretend to store my value in a variable, but I don't actually. + You can use the only instance of my class (returned by + `ValueHolder null') if you're not interested in a value that is + returned as described in ValueHolder's comment. + +* Menu: + +* NullValueHolder class-creating instances:: (class) +* NullValueHolder-accessing:: (instance) + + +File: gst-base.info, Node: NullValueHolder class-creating instances, Next: NullValueHolder-accessing, Up: NullValueHolder + +NullValueHolder class: creating instances +----------------------------------------- + +new + Not used - use `ValueHolder null' instead + + + +File: gst-base.info, Node: NullValueHolder-accessing, Prev: NullValueHolder class-creating instances, Up: NullValueHolder + +NullValueHolder: accessing +-------------------------- + +value + Retrive the value of the receiver. Always answer nil + +value: anObject + Set the value of the receiver. Do nothing, discard the value + + + +File: gst-base.info, Node: Number, Next: Object, Prev: NullValueHolder, Up: Base classes + +Number +====== + +Defined in namespace Smalltalk +Superclass: Magnitude +Category: Language-Data types + I am an abstract class that provides operations on numbers, both + floating point and integer. I provide some generic predicates, + and supply the implicit type coercing code for binary operations. + +* Menu: + +* Number class-converting:: (class) +* Number class-testing:: (class) +* Number-arithmetic:: (instance) +* Number-comparing:: (instance) +* Number-converting:: (instance) +* Number-copying:: (instance) +* Number-error raising:: (instance) +* Number-misc math:: (instance) +* Number-point creation:: (instance) +* Number-retrying:: (instance) +* Number-shortcuts and iterators:: (instance) +* Number-testing:: (instance) +* Number-truncation and round off:: (instance) + + +File: gst-base.info, Node: Number class-converting, Next: Number class-testing, Up: Number + +Number class: converting +------------------------ + +coerce: aNumber + Answer aNumber - whatever class it belongs to, it is good + +readFrom: aStream + Answer the number read from the rest of aStream, converted to an + instance of the receiver. If the receiver is number, the class of + the result is undefined - but the result is good. + + + +File: gst-base.info, Node: Number class-testing, Next: Number-arithmetic, Prev: Number class-converting, Up: Number + +Number class: testing +--------------------- + +isImmediate + Answer whether, if x is an instance of the receiver, x copy == x + + + +File: gst-base.info, Node: Number-arithmetic, Next: Number-comparing, Prev: Number class-testing, Up: Number + +Number: arithmetic +------------------ + +* aNumber + Subtract the receiver and aNumber, answer the result + ++ aNumber + Sum the receiver and aNumber, answer the result + +- aNumber + Subtract aNumber from the receiver, answer the result + +/ aNumber + Divide the receiver by aNumber, answer the result (no loss of + precision). Raise a ZeroDivide exception or return a valid + (possibly infinite) continuation value if aNumber is zero. + +// aNumber + Return the integer quotient of dividing the receiver by aNumber + with truncation towards negative infinity. Raise a ZeroDivide + exception if aNumber is zero + +\\ aNumber + Return the remainder of dividing the receiver by aNumber with + truncation towards negative infinity. Raise a ZeroDivide + exception if aNumber is zero + +quo: aNumber + Return the integer quotient of dividing the receiver by aNumber + with truncation towards zero. Raise a ZeroDivide exception if + aNumber is zero + +reciprocal + Return the reciprocal of the receiver + +rem: aNumber + Return the remainder of dividing the receiver by aNumber with + truncation towards zero. Raise a ZeroDivide exception if aNumber + is zero + + + +File: gst-base.info, Node: Number-comparing, Next: Number-converting, Prev: Number-arithmetic, Up: Number + +Number: comparing +----------------- + +max: aNumber + Redefined to ensure that a NaN is never answered. Answer the + maximum between the receiver and aNumber. + +min: aNumber + Redefined to ensure that a NaN is never answered. Answer the + minimum between the receiver and aNumber. + + + +File: gst-base.info, Node: Number-converting, Next: Number-copying, Prev: Number-comparing, Up: Number + +Number: converting +------------------ + +asFloat + Convert the receiver to an arbitrary subclass of Float + +asFloatD + This method's functionality should be implemented by subclasses of + Number + +asFloatE + This method's functionality should be implemented by subclasses of + Number + +asFloatQ + This method's functionality should be implemented by subclasses of + Number + +asRectangle + Answer an empty rectangle whose origin is (self asPoint) + +asScaledDecimal: n + Answer the receiver, converted to a ScaledDecimal object. + +asScaledDecimal: denDigits scale: n + Answer the receiver, divided by 10^denDigits and converted to a + ScaledDecimal object. + +coerce: aNumber + Answer aNumber - whatever class it belongs to, it is good + +degreesToRadians + Convert the receiver to radians + +generality + Answer the receiver's generality + +radiansToDegrees + Convert the receiver from radians to degrees + +unity + Coerce 1 to the receiver's class. The default implementation works, + but is inefficient + +zero + Coerce 0 to the receiver's class. The default implementation works, + but is inefficient + + + +File: gst-base.info, Node: Number-copying, Next: Number-error raising, Prev: Number-converting, Up: Number + +Number: copying +--------------- + +deepCopy + Return the receiver - it's an immediate (immutable) object + +shallowCopy + Return the receiver - it's an immediate (immutable) object + + + +File: gst-base.info, Node: Number-error raising, Next: Number-misc math, Prev: Number-copying, Up: Number + +Number: error raising +--------------------- + +arithmeticError: msg + Raise an ArithmeticError exception having msg as its message text. + +zeroDivide + Raise a division-by-zero (ZeroDivide) exception whose dividend is + the receiver. + + + +File: gst-base.info, Node: Number-misc math, Next: Number-point creation, Prev: Number-error raising, Up: Number + +Number: misc math +----------------- + +abs + Answer the absolute value of the receiver + +arcCos + return the arc cosine of the receiver + +arcSin + return the arc sine of the receiver + +arcTan + return the arc tangent of the receiver + +cos + return the cosine of the receiver + +estimatedLog + Answer an estimate of (self abs floorLog: 10). This method should + be overridden by subclasses, but Number's implementation does not + raise errors - simply, it gives a correct result, so it is slow. + +exp + return e raised to the receiver + +floorLog: radix + return (self log: radix) floor. Optimized to answer an integer. + +ln + return log base e of the receiver + +log + return log base aNumber of the receiver + +log: aNumber + return log base aNumber of the receiver + +negated + Answer the negated of the receiver + +positiveDifference: aNumber + Answer the positive difference of the receiver and aNumber, that + is self - aNumber if it is positive, 0 otherwise. + +raisedTo: aNumber + Return self raised to aNumber power + +raisedToInteger: anInteger + Return self raised to the anInteger-th power + +sin + return the sine of the receiver + +sqrt + return the square root of the receiver + +squared + Answer the square of the receiver + +tan + return the tangent of the receiver + +withSignOf: aNumber + Answer the receiver, with its sign possibly changed to match that + of aNumber. + + + +File: gst-base.info, Node: Number-point creation, Next: Number-retrying, Prev: Number-misc math, Up: Number + +Number: point creation +---------------------- + +@ y + Answer a new point whose x is the receiver and whose y is y + +asPoint + Answer a new point, self @ self + + + +File: gst-base.info, Node: Number-retrying, Next: Number-shortcuts and iterators, Prev: Number-point creation, Up: Number + +Number: retrying +---------------- + +retry: aSymbol coercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling + aSymbol. aSymbol is supposed not to be #= or #~= (since those + don't fail if aNumber is not a Number). + +retryDifferenceCoercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling #-. + +retryDivisionCoercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling #/. + +retryEqualityCoercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling #=. + +retryError + Raise an error--a retrying method was called with two arguments + having the same generality. + +retryInequalityCoercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling #~=. + +retryMultiplicationCoercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling #*. + +retryRelationalOp: aSymbol coercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling + aSymbol (<, <=, >, >=). + +retrySumCoercing: aNumber + Coerce to the other number's class the one number between the + receiver and aNumber which has the lowest, and retry calling #+. + + + +File: gst-base.info, Node: Number-shortcuts and iterators, Next: Number-testing, Prev: Number-retrying, Up: Number + +Number: shortcuts and iterators +------------------------------- + +to: stop + Return an interval going from the receiver to stop by 1 + +to: stop by: step + Return an interval going from the receiver to stop with the given + step + +to: stop by: step do: aBlock + Evaluate aBlock for each value in the interval going from the + receiver to stop with the given step. Compiled in-line for integer + literal steps, and for one-argument aBlocks without temporaries, + and therefore not overridable. + +to: stop do: aBlock + Evaluate aBlock for each value in the interval going from the + receiver to stop by 1. Compiled in-line for one-argument aBlocks + without temporaries, and therefore not overridable. + + + +File: gst-base.info, Node: Number-testing, Next: Number-truncation and round off, Prev: Number-shortcuts and iterators, Up: Number + +Number: testing +--------------- + +closeTo: num + Answer whether the receiver can be considered sufficiently close + to num (this is done by checking equality if num is not a number, + and by checking with 0.01% tolerance if num is a number). + +even + Returns true if self is divisible by 2 + +isFinite + Answer whether the receiver represents a finite quantity. Most + numeric classes are for finite quantities, so the default is to + answer true rather than calling #subclassResponsibility. + +isInfinite + Answer whether the receiver represents an infinite quantity. Most + numeric classes are for finite quantities, so the default is to + answer false rather than calling #subclassResponsibility. + +isNaN + Answer whether the receiver is a Not-A-Number. Most numeric + classes don't handle nans, so the default is to answer false + rather than calling #subclassResponsibility. + +isNumber + Answer `true'. + +isRational + Answer whether the receiver is rational - false by default + +negative + Answer whether the receiver is < 0 + +odd + Returns true if self is not divisible by 2 + +positive + Answer whether the receiver is >= 0 + +sign + Returns the sign of the receiver. + +strictlyPositive + Answer whether the receiver is > 0 + + + +File: gst-base.info, Node: Number-truncation and round off, Prev: Number-testing, Up: Number + +Number: truncation and round off +-------------------------------- + +asInteger + Answer the receiver, rounded to the nearest integer + +floor + Return the integer nearest the receiver toward negative infinity. + +fractionPart + Answer a number which, summed to the #integerPart of the receiver, + gives the receiver itself. + +integerPart + Answer the receiver, truncated towards zero + +rounded + Returns the integer nearest the receiver + +roundTo: aNumber + Answer the receiver, truncated to the nearest multiple of aNumber + +truncated + Answer the receiver, truncated towards zero + +truncateTo: aNumber + Answer the receiver, truncated towards zero to a multiple of + aNumber + + + +File: gst-base.info, Node: Object, Next: ObjectDumper, Prev: Number, Up: Base classes + +Object +====== + +Defined in namespace Smalltalk +Superclass: none +Category: Language-Implementation + I am the root of the Smalltalk class system. All classes in the + system are subclasses of me. + +* Menu: + +* Object class-initialization:: (class) +* Object-built ins:: (instance) +* Object-change and update:: (instance) +* Object-class type methods:: (instance) +* Object-conversion:: (instance) +* Object-copying:: (instance) +* Object-debugging:: (instance) +* Object-dependents access:: (instance) +* Object-error raising:: (instance) +* Object-exception handling:: (instance) +* Object-finalization:: (instance) +* Object-printing:: (instance) +* Object-relational operators:: (instance) +* Object-saving and loading:: (instance) +* Object-storing:: (instance) +* Object-syntax shortcuts:: (instance) +* Object-testing functionality:: (instance) + + +File: gst-base.info, Node: Object class-initialization, Next: Object-built ins, Up: Object + +Object class: initialization +---------------------------- + +dependencies + Answer a dictionary that associates an object with its dependents. + +dependencies: anObject + Use anObject as the dictionary that associates an object with its + dependents. + +finalizableObjects + Answer a set of finalizable objects. + +initialize + Initialize the Dependencies dictionary to be an + IdentityDictionary. In a later phase of the bootstrap process + this is changed to be a WeakKeyIdentityDictionary. + +update: aspect + Do any global tasks for the ObjectMemory events. + + + +File: gst-base.info, Node: Object-built ins, Next: Object-change and update, Prev: Object class-initialization, Up: Object + +Object: built ins +----------------- + += 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 + +== arg + Answer whether the receiver is the same object as arg. This is a + very fast test and is called 'identity' + +allOwners + Return an Array of Objects that point to the receiver. + +asOop + Answer the object index associated to the receiver. The object + index doesn't change when garbage collection is performed. + +at: anIndex + Answer the index-th indexed instance variable of the receiver + +at: anIndex put: value + Store value in the index-th indexed instance variable of the + receiver + +basicAt: anIndex + Answer the index-th indexed instance variable of the receiver. + This method must not be overridden, override at: instead + +basicAt: anIndex put: value + Store value in the index-th indexed instance variable of the + receiver This method must not be overridden, override at:put: + instead + +basicPrint + Print a basic representation of the receiver + +basicSize + Answer the number of indexed instance variable in the receiver + +become: otherObject + Change all references to the receiver into references to + otherObject. Depending on the implementation, references to + otherObject might or might not be transformed into the receiver + (respectively, 'two-way become' and 'one-way become'). + Implementations doing one-way become answer the receiver (so that + it is not lost). Most implementations doing two-way become answer + otherObject, but this is not assured - so do answer the receiver + for consistency. GNU Smalltalk does two-way become and answers + otherObject, but this might change in future versions: programs + should not rely on the behavior and results of #become: . + +changeClassTo: aBehavior + Mutate the class of the receiver to be aBehavior. Note: Tacitly + assumes that the structure is the same for the original and new + class!! + +checkIndexableBounds: index + Private - Check the reason why an access to the given indexed + instance variable failed + +checkIndexableBounds: index put: object + Private - Check the reason why a store to the given indexed + instance variable failed + +class + Answer the class to which the receiver belongs + +halt + Called to enter the debugger + +hash + Answer an hash value for the receiver. This hash value is ok for + objects that do not redefine ==. + +identityHash + Answer an hash value for the receiver. This method must not be + overridden + +instVarAt: index + Answer the index-th instance variable of the receiver. This + method must not be overridden. + +instVarAt: index put: value + Store value in the index-th instance variable of the receiver. + This method must not be overridden. + +isReadOnly + Answer whether the object's indexed instance variables can be + written + +makeEphemeron + Make the object an 'ephemeron'. An ephemeron is marked after all + other objects, and if no references are found to the key except + from the object itself, it is sent the #mourn message. + +makeFixed + Avoid that the receiver moves in memory across garbage collections. + +makeReadOnly: aBoolean + Set whether the object's indexed instance variables can be written + +makeWeak + Make the object a 'weak' one. When an object is only referenced by + weak objects, it is collected and the slots in the weak objects + are changed to nils by the VM; the weak object is then sent the + #mourn message. + +mark: aSymbol + Private - use this method to mark code which needs to be reworked, + removed, etc. You can then find all senders of #mark: to find all + marked methods or you can look for all senders of the symbol that + you sent to #mark: to find a category of marked methods. + +nextInstance + Private - answer another instance of the receiver's class, or nil + if the entire object table has been walked + +notYetImplemented + Called when a method defined by a class is not yet implemented, + but is going to be + +perform: selectorOrMessageOrMethod + Send the unary message named selectorOrMessageOrMethod (if a + Symbol) to the receiver, or the message and arguments it + identifies (if a Message or DirectedMessage), or finally execute + the method within the receiver (if a CompiledMethod). In the last + case, the method need not reside on the hierarchy from the + receiver's class to Object - it need not reside at all in a + MethodDictionary, in fact - but doing bad things will compromise + stability of the Smalltalk virtual machine (and don't blame + anybody but yourself). This method should not be overridden + +perform: selectorOrMethod with: arg1 + Send the message named selectorOrMethod (if a Symbol) to the + receiver, passing arg1 to it, or execute the method within the + receiver (if a CompiledMethod). In the latter case, the method + need not reside on the hierarchy from the receiver's class to + Object - it need not reside at all in a MethodDictionary, in fact + - but doing bad things will compromise stability of the Smalltalk + virtual machine (and don't blame anybody but yourself). This + method should not be overridden + +perform: selectorOrMethod with: arg1 with: arg2 + Send the message named selectorOrMethod (if a Symbol) to the + receiver, passing arg1 and arg2 to it, or execute the method + within the receiver (if a CompiledMethod). In the latter case, + the method need not reside on the hierarchy from the receiver's + class to Object - it need not reside at all in a MethodDictionary, + in fact - but doing bad things will compromise stability of the + Smalltalk virtual machine (and don't blame anybody but yourself). + This method should not be overridden + +perform: selectorOrMethod with: arg1 with: arg2 with: arg3 + Send the message named selectorOrMethod (if a Symbol) to the + receiver, passing the other arguments to it, or execute the method + within the receiver (if a CompiledMethod). In the latter case, + the method need not reside on the hierarchy from the receiver's + class to Object - it need not reside at all in a MethodDictionary, + in fact - but doing bad things will compromise stability of the + Smalltalk virtual machine (and don't blame anybody but yourself). + This method should not be overridden + +perform: selectorOrMethod withArguments: argumentsArray + Send the message named selectorOrMethod (if a Symbol) to the + receiver, passing the elements of argumentsArray as parameters, or + execute the method within the receiver (if a CompiledMethod). In + the latter case, the method need not reside on the hierarchy from + the receiver's class to Object - it need not reside at all in a + MethodDictionary, in fact - but doing bad things will compromise + stability of the Smalltalk virtual machine (and don't blame + anybody but yourself). This method should not be overridden + +primError: message + This might start the debugger... Note that we use #basicPrint + 'cause #printOn: might invoke an error. + +primitiveFailed + Called when a VM primitive fails + +shallowCopy + Returns a shallow copy of the receiver (the instance variables are + not copied) + +shouldNotImplement + Called when objects belonging to a class should not answer a + selector defined by a superclass + +size + Answer the number of indexed instance variable in the receiver + +subclassResponsibility + Called when a method defined by a class should be overridden in a + subclass + +tenure + Move the object to oldspace. + + + +File: gst-base.info, Node: Object-change and update, Next: Object-class type methods, Prev: Object-built ins, Up: Object + +Object: change and update +------------------------- + +broadcast: aSymbol + Send the unary message aSymbol to each of the receiver's dependents + +broadcast: aSymbol with: anObject + Send the message aSymbol to each of the receiver's dependents, + passing anObject + +broadcast: aSymbol with: arg1 with: arg2 + Send the message aSymbol to each of the receiver's dependents, + passing arg1 and arg2 as parameters + +broadcast: aSymbol withArguments: anArray + Send the message aSymbol to each of the receiver's dependents, + passing the parameters in anArray + +broadcast: aSymbol withBlock: aBlock + Send the message aSymbol to each of the receiver's dependents, + passing the result of evaluating aBlock with each dependent as the + parameter + +changed + Send update: for each of the receiver's dependents, passing them + the receiver + +changed: aParameter + Send update: for each of the receiver's dependents, passing them + aParameter + +update: aParameter + Default behavior is to do nothing. Called by #changed and #changed: + + + +File: gst-base.info, Node: Object-class type methods, Next: Object-conversion, Prev: Object-change and update, Up: Object + +Object: class type methods +-------------------------- + +species + This method has no unique definition. Generally speaking, methods + which always return the same type usually don't use #class, but + #species. For example, a PositionableStream's species is the + class of the collection on which it is streaming (used by upTo:, + upToAll:, upToEnd). Stream uses species for obtaining the class of + next:'s return value, Collection uses it in its #copyEmpty: + message, which in turn is used by all collection-re- turning + methods. An Interval's species is Array (used by collect:, select:, + reject:, etc.). + +yourself + Answer the receiver + + + +File: gst-base.info, Node: Object-conversion, Next: Object-copying, Prev: Object-class type methods, Up: Object + +Object: conversion +------------------ + +asValue + Answer a ValueHolder whose initial value is the receiver. + + + +File: gst-base.info, Node: Object-copying, Next: Object-debugging, Prev: Object-conversion, Up: Object + +Object: copying +--------------- + +copy + Returns a shallow copy of the receiver (the instance variables are + not copied). The shallow copy receives the message postCopy and the + result of postCopy is passed back. + +deepCopy + Returns a deep copy of the receiver (the instance variables are + copies of the receiver's instance variables) + +postCopy + Performs any changes required to do on a copied object. This is the + place where one could, for example, put code to replace objects + with copies of the objects + + + +File: gst-base.info, Node: Object-debugging, Next: Object-dependents access, Prev: Object-copying, Up: Object + +Object: debugging +----------------- + +breakpoint: context return: return + Called back by the system. Must return the value passed through the + second parameter + +inspect + Print all the instance variables of the receiver on the Transcript + +validSize + Answer how many elements in the receiver should be inspected + + + +File: gst-base.info, Node: Object-dependents access, Next: Object-error raising, Prev: Object-debugging, Up: Object + +Object: dependents access +------------------------- + +addDependent: anObject + Add anObject to the set of the receiver's dependents. Important: + if an object has dependents, it won't be garbage collected. + +dependents + Answer a collection of the receiver's dependents. + +release + Remove all of the receiver's dependents from the set and allow the + receiver to be garbage collected. + +removeDependent: anObject + Remove anObject to the set of the receiver's dependents. No problem + if anObject is not in the set of the receiver's dependents. + + + +File: gst-base.info, Node: Object-error raising, Next: Object-exception handling, Prev: Object-dependents access, Up: Object + +Object: error raising +--------------------- + +doesNotUnderstand: aMessage + Called by the system when a selector was not found. message is a + Message containing information on the receiver + +error: message + Display a walkback for the receiver, with the given error message. + Signal an `Error' exception (you can trap it the old way too, with + `ExError' + +halt: message + Display a walkback for the receiver, with the given error message. + Signal an `Halt' exception (you can trap it the old way too, with + `ExHalt') + + + +File: gst-base.info, Node: Object-exception handling, Next: Object-finalization, Prev: Object-error raising, Up: Object + +Object: exception handling +-------------------------- + +badReturnError + Called back when a block performs a bad return. + +mustBeBoolean + Called by the system when ifTrue:*, ifFalse:*, and: or or: are + sent to anything but a boolean + +noRunnableProcess + Called back when all processes are suspended + +userInterrupt + Called back when the user presses Ctrl-Break + + + +File: gst-base.info, Node: Object-finalization, Next: Object-printing, Prev: Object-exception handling, Up: Object + +Object: finalization +-------------------- + +addToBeFinalized + Arrange things so that #finalize is sent to the object when the + garbage collector finds out there are only weak references to it. + +finalize + Do nothing by default + +mourn + This method is sent by the VM to weak and ephemeron objects when + one of their fields is found out to be garbage collectable (this + means, for weak objects, that there are no references to it from + non-weak objects, and for ephemeron objects, that the only paths + to the first instance variable pass through other instance + variables of the same ephemeron). The default behavior is to do + nothing. + +removeToBeFinalized + Unregister the object, so that #finalize is no longer sent to the + object when the garbage collector finds out there are only weak + references to it. + + + +File: gst-base.info, Node: Object-printing, Next: Object-relational operators, Prev: Object-finalization, Up: Object + +Object: printing +---------------- + +basicPrintNl + Print a basic representation of the receiver, followed by a new + line. + +basicPrintOn: aStream + Print a represention of the receiver on aStream + + representation + +display + Print a represention of the receiver on the Transcript (stdout the + GUI is not active). For most objects this is simply its #print + representation, but for strings and characters, superfluous dollars + or extra pair of quotes are stripped. + +displayNl + Print a represention of the receiver, then put a new line on the + Transcript (stdout the GUI is not active). For most objects this + is simply its #printNl representation, but for strings and + characters, superfluous dollars or extra pair of quotes are + stripped. + +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 pair of quotes are + stripped. + +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. + +print + Print a represention of the receiver on the Transcript (stdout the + GUI is not active) + +printNl + Print a represention of the receiver on stdout, put a new line the + Transcript (stdout the GUI is not active) + +printOn: aStream + Print a represention of the receiver on aStream + +printString + Answer a String representing the receiver + + + +File: gst-base.info, Node: Object-relational operators, Next: Object-saving and loading, Prev: Object-printing, Up: Object + +Object: relational operators +---------------------------- + +~= anObject + Answer whether the receiver and anObject are not equal + +~~ anObject + Answer whether the receiver and anObject are not the same object + + + +File: gst-base.info, Node: Object-saving and loading, Next: Object-storing, Prev: Object-relational operators, Up: Object + +Object: saving and loading +-------------------------- + +binaryRepresentationObject + This method must be implemented if PluggableProxies are used with + the receiver's class. The default implementation raises an + exception. + +postLoad + Called after loading an object; must restore it to the state before + `preStore' was called. Do nothing by default + +postStore + Called after an object is dumped; must restore it to the state + before `preStore' was called. Call #postLoad by default + +preStore + Called before dumping an object; it must *change* it (it must not + answer a new object) if necessary. Do nothing by default + +reconstructOriginalObject + Used if an instance of the receiver's class is returned as the + #binaryRepresentationObject of another object. The default + implementation raises an exception. + + + +File: gst-base.info, Node: Object-storing, Next: Object-syntax shortcuts, Prev: Object-saving and loading, Up: Object + +Object: storing +--------------- + +store + Put a String of Smalltalk code compiling to the receiver on the + Transcript (stdout the GUI is not active) + +storeNl + Put a String of Smalltalk code compiling to the receiver, followed + by a new line, on the Transcript (stdout the GUI is not active) + +storeOn: aStream + Put Smalltalk code compiling to the receiver on aStream + +storeString + Answer a String of Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: Object-syntax shortcuts, Next: Object-testing functionality, Prev: Object-storing, Up: Object + +Object: syntax shortcuts +------------------------ + +-> anObject + Creates a new instance of Association with the receiver being the + key and the argument becoming the value + + + +File: gst-base.info, Node: Object-testing functionality, Prev: Object-syntax shortcuts, Up: Object + +Object: testing functionality +----------------------------- + +ifNil: nilBlock + Evaluate nilBlock if the receiver is nil, else answer self + +ifNil: nilBlock ifNotNil: notNilBlock + Evaluate nilBlock if the receiver is nil, else evaluate + notNilBlock, passing the receiver. + +ifNotNil: notNilBlock + Evaluate notNiilBlock if the receiver is not nil, passing the + receiver. Else answer nil. + +ifNotNil: notNilBlock ifNil: nilBlock + Evaluate nilBlock if the receiver is nil, else evaluate + notNilBlock, passing the receiver. + +isArray + Answer `false'. + +isBehavior + Answer `false'. + +isCharacter + Answer `false'. + +isCharacterArray + Answer `false'. + +isClass + Answer `false'. + +isFloat + Answer `false'. + +isInteger + Answer `false'. + +isKindOf: aClass + Answer whether the receiver's class is aClass or a subclass of + aClass + +isMemberOf: aClass + Returns true if the receiver is an instance of the class 'aClass' + +isMeta + Same as isMetaclass + +isMetaclass + Answer `false'. + +isMetaClass + Same as isMetaclass + +isNamespace + Answer `false'. + +isNil + Answer whether the receiver is nil + +isNumber + Answer `false'. + +isSmallInteger + Answer `false'. + +isString + Answer `false'. + +isSymbol + Answer `false'. + +notNil + Answer whether the receiver is not nil + +respondsTo: aSymbol + Returns true if the receiver understands the given selector + + + +File: gst-base.info, Node: ObjectDumper, Next: ObjectMemory, Prev: Object, Up: Base classes + +ObjectDumper +============ + +Defined in namespace Smalltalk +Superclass: Stream +Category: Streams-Files + I'm not part of a normal Smalltalk system, but most Smalltalks + provide a similar feature: that is, support for storing objects in + a binary format; there are many advantages in using me instead of + #storeOn: and the Smalltalk compiler. + + The data is stored in a very compact format, which has the side + effect of making loading much faster when compared with compiling + the Smalltalk code prepared by #storeOn:. In addition, my + instances support circular references between objects, while + #storeOn: supports it only if you know of such references at + design time and you override #storeOn: to deal with them + +* Menu: + +* ObjectDumper class-establishing proxy classes:: (class) +* ObjectDumper class-instance creation:: (class) +* ObjectDumper class-shortcuts:: (class) +* ObjectDumper class-testing:: (class) +* ObjectDumper-accessing:: (instance) +* ObjectDumper-loading/dumping objects:: (instance) +* ObjectDumper-stream interface:: (instance) + + +File: gst-base.info, Node: ObjectDumper class-establishing proxy classes, Next: ObjectDumper class-instance creation, Up: ObjectDumper + +ObjectDumper class: establishing proxy classes +---------------------------------------------- + +disableProxyFor: aClass + Disable proxies for instances of aClass and its descendants + +hasProxyFor: aClass + Answer whether a proxy class has been registered for instances of + aClass. + +proxyClassFor: anObject + Answer the class of a valid proxy for an object, or nil if none + could be found + +proxyFor: anObject + Answer a valid proxy for an object, or the object itself if none + could be found + +registerProxyClass: aProxyClass for: aClass + Register the proxy class aProxyClass - descendent of DumperProxy - + to be used for instances of aClass and its descendants + + + +File: gst-base.info, Node: ObjectDumper class-instance creation, Next: ObjectDumper class-shortcuts, Prev: ObjectDumper class-establishing proxy classes, Up: ObjectDumper + +ObjectDumper class: instance creation +------------------------------------- + +new + This method should not be called for instances of this class. + +on: aFileStream + Answer an ObjectDumper working on aFileStream. + + + +File: gst-base.info, Node: ObjectDumper class-shortcuts, Next: ObjectDumper class-testing, Prev: ObjectDumper class-instance creation, Up: ObjectDumper + +ObjectDumper class: shortcuts +----------------------------- + +dump: anObject to: aFileStream + Dump anObject to aFileStream. Answer anObject + +loadFrom: aFileStream + Load an object from aFileStream and answer it + + + +File: gst-base.info, Node: ObjectDumper class-testing, Next: ObjectDumper-accessing, Prev: ObjectDumper class-shortcuts, Up: ObjectDumper + +ObjectDumper class: testing +--------------------------- + +example + This is a real torture test: it outputs recursive objects, + identical objects multiple times, classes, metaclasses, integers, + characters and proxies (which is also a test of more complex + objects)! + + + +File: gst-base.info, Node: ObjectDumper-accessing, Next: ObjectDumper-loading/dumping objects, Prev: ObjectDumper class-testing, Up: ObjectDumper + +ObjectDumper: accessing +----------------------- + +flush + `Forget' any information on previously stored objects. + +stream + Answer the ByteStream to which the ObjectDumper will write and + from which it will read. + +stream: aByteStream + Set the ByteStream to which the ObjectDumper will write and from + which it will read. + + + +File: gst-base.info, Node: ObjectDumper-loading/dumping objects, Next: ObjectDumper-stream interface, Prev: ObjectDumper-accessing, Up: ObjectDumper + +ObjectDumper: loading/dumping objects +------------------------------------- + +dump: anObject + Dump anObject on the stream associated with the receiver. Answer + anObject + +load + Load an object from the stream associated with the receiver and + answer it + + + +File: gst-base.info, Node: ObjectDumper-stream interface, Prev: ObjectDumper-loading/dumping objects, Up: ObjectDumper + +ObjectDumper: stream interface +------------------------------ + +atEnd + Answer whether the underlying stream is at EOF + +next + Load an object from the underlying stream + +nextPut: anObject + Store an object on the underlying stream + + + +File: gst-base.info, Node: ObjectMemory, Next: OrderedCollection, Prev: ObjectDumper, Up: Base classes + +ObjectMemory +============ + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Implementation + I provide a few methods that enable one to tune the virtual + machine's usage of memory. In addition, I can signal to my + dependants some `events' that can happen during the virtual + machine's life. + + ObjectMemory has both class-side and instance-side methods. In + general, class-side methods provide means to tune the parameters + of the memory manager, while instance-side methods are used + together with the #current class-side method to take a look at + statistics on the memory manager's state. + +* Menu: + +* ObjectMemory class-accessing:: (class) +* ObjectMemory class-builtins:: (class) +* ObjectMemory class-initialization:: (class) +* ObjectMemory class-saving the image:: (class) +* ObjectMemory-accessing:: (instance) +* ObjectMemory-builtins:: (instance) +* ObjectMemory-derived information:: (instance) + + +File: gst-base.info, Node: ObjectMemory class-accessing, Next: ObjectMemory class-builtins, Up: ObjectMemory + +ObjectMemory class: accessing +----------------------------- + +current + Return a snapshot of the VM's memory management statistics. + + + +File: gst-base.info, Node: ObjectMemory class-builtins, Next: ObjectMemory class-initialization, Prev: ObjectMemory class-accessing, Up: ObjectMemory + +ObjectMemory class: builtins +---------------------------- + +abort + Quit the Smalltalk environment, dumping core. + +addressOf: anObject + Returns the address of the actual object that anObject references. + Note that, with the exception of fixed objects this address is + only valid until the next garbage collection; thus it's pretty + risky to count on the address returned by this method for very + long. + +addressOfOOP: anObject + Returns the address of the OOP (object table slot) for anObject. + The address is an Integer and will not change over time (i.e. is + immune from garbage collector action) except if the virtual machine + is stopped and restarted. + +bigObjectThreshold + Answer the smallest size for objects that are allocated outside + the main heap in the hope of providing more locality of reference + between small objects. + +bigObjectThreshold: bytes + Set the smallest size for objects that are allocated outside the + main heap in the hope of providing more locality of reference + between small objects. bytes must be a positive SmallInteger. + +compact + Force a full garbage collection, including compaction of oldspace + +finishIncrementalGC + Do a step in the incremental garbage collection. + +gcMessage + Answer whether messages indicating that garbage collection is + taking place are printed on stdout + +gcMessage: aBoolean + Set whether messages indicating that garbage collection is taking + place are printed on stdout + +globalGarbageCollect + Force a full garbage collection + +growThresholdPercent + Answer the percentage of the amount of memory used by the system + grows which has to be full for the system to allocate more memory + +growThresholdPercent: growPercent + Set the percentage of the amount of memory used by the system grows + which has to be full for the system to allocate more memory + +growTo: numBytes + Grow the amount of memory used by the system grows to numBytes. + +incrementalGCStep + Do a step in the incremental garbage collection. + +quit + Quit the Smalltalk environment. Whether files are closed and other + similar cleanup occurs depends on the platform + +quit: exitStatus + Quit the Smalltalk environment, passing the exitStatus integer to + the OS. Files are closed and other similar cleanups occur. + +scavenge + Force a minor garbage collection + +smoothingFactor + Answer the factor (between 0 and 1) used to smooth the statistics + provided by the virtual machine about memory handling. 0 disables + updating the averages, 1 disables the smoothing (the statistics + return the last value). + +smoothingFactor: rate + Set the factor (between 0 and 1) used to smooth the statistics + provided by the virtual machine about memory handling. 0 disables + 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 + +spaceGrowRate: rate + Set the rate with which the amount of memory used by the system + grows + + + +File: gst-base.info, Node: ObjectMemory class-initialization, Next: ObjectMemory class-saving the image, Prev: ObjectMemory class-builtins, Up: ObjectMemory + +ObjectMemory class: initialization +---------------------------------- + +initialize + Initialize the globals + + + +File: gst-base.info, Node: ObjectMemory class-saving the image, Next: ObjectMemory-accessing, Prev: ObjectMemory class-initialization, Up: ObjectMemory + +ObjectMemory class: saving the image +------------------------------------ + +snapshot + Save a snapshot on the image file that was loaded on startup. + + + +File: gst-base.info, Node: ObjectMemory-accessing, Next: ObjectMemory-builtins, Prev: ObjectMemory class-saving the image, Up: ObjectMemory + +ObjectMemory: accessing +----------------------- + +allocFailures + Answer the number of times that the old-space allocator found no + block that was at least as big as requested, and had to ask the + operating system for more memory. + +allocMatches + Answer the number of times that the old-space allocator found a + block that was exactly as big as requested. + +allocProbes + Answer the number of free blocks that the old-space allocator had + to examine so far to allocate all the objects that are in old-space + +allocSplits + Answer the number of times that the old-space allocator could not + find a block that was exactly as big as requested, and had to split + a larger free block in two parts. + +bytesPerOOP + Answer the number of bytes that is taken by an ordinary object + pointer (in practice, a field such as a named instance variable). + +bytesPerOTE + Answer the number of bytes that is taken by an object table entry + (in practice, the overhead incurred by every object in the system, + with the sole exception of SmallIntegers). + +edenSize + Answer the number of bytes in the `eden' area of the young + generation (in practice, the number of allocated bytes between two + scavenges). + +edenUsedBytes + Answer the number of bytes that are currently filled in the `eden' + area of the young generation. + +fixedSpaceSize + Answer the number of bytes in the special heap devoted to objects + that the garbage collector cannot move around in memory. + +fixedSpaceUsedBytes + Answer the number of bytes that are currently filled in the + special heap devoted to objects that the garbage collector cannot + move around in memory. + +numCompactions + Answer the number of oldspace compactions that happened since the + VM was started. + +numFixedOOPs + Answer the number of objects that the garbage collector cannot + move around in memory. + +numFreeOTEs + Answer the number of entries that are currently free in the object + table. + +numGlobalGCs + Answer the number of global garbage collections (collection of the + entire heap) that happened since the VM was started. + +numGrowths + Answer the number of times that oldspace was grown since the VM + was started. + +numOldOOPs + Answer the number of objects that reside in the old generation. + +numOTEs + Answer the number of entries that are currently allocated for the + object table. + +numScavenges + Answer the number of scavenges (fast collections of the young + generation) that happened since the VM was started. + +numWeakOOPs + Answer the number of weak objects that the garbage collector is + currently tracking. + +oldSpaceSize + Answer the number of bytes in the old generation. + +oldSpaceUsedBytes + Answer the number of bytes that are currently filled in the old + generation. + +reclaimedBytesPerGlobalGC + Answer the average number of bytes that are found to be garbage + during a global garbage collections. + +reclaimedBytesPerScavenge + Answer the average number of bytes that are found to be garbage + during a scavenge. + +reclaimedPercentPerScavenge + Answer the average percentage of allocated bytes that are found to + be garbage during a scavenge. If this number falls below 60-70 + you should definitely increment the size of the eden, because you + risk that scavenging is eating a considerable fraction of your + execution time; do the measurement on a restarted image, so that + the extra tenuring incurred when creating long-lived objects such + as classes or methods is not considered. + +survSpaceSize + Answer the number of bytes in the `survivor' area of the young + generation (the area to which young objects are relocated during + scavenges). + +survSpaceUsedBytes + Answer the number of bytes that are currently filled in the + `survivor' area of the young generation. + +tenuredBytesPerScavenge + Answer the average number of bytes that are promoted to oldspace + during a scavenge. + +timeBetweenGlobalGCs + Answer the average number of milliseconds between two global + garbage collections. + +timeBetweenGrowths + Answer the average number of milliseconds between decisions to + grow the heap. + +timeBetweenScavenges + Answer the average number of milliseconds between two scavenges + (fast collections of the young generation). + +timeToCollect + Answer the average number of milliseconds that a global garbage + collection takes. + +timeToCompact + Answer the average number of milliseconds that compacting the heap + takes. This the same time that is taken by growing the heap. + +timeToScavenge + Answer the average number of milliseconds that a scavenge takes + (fast collections of the young generation). + + + +File: gst-base.info, Node: ObjectMemory-builtins, Next: ObjectMemory-derived information, Prev: ObjectMemory-accessing, Up: ObjectMemory + +ObjectMemory: builtins +---------------------- + +update + Update the values in the object to the current state of the VM. + + + +File: gst-base.info, Node: ObjectMemory-derived information, Prev: ObjectMemory-builtins, Up: ObjectMemory + +ObjectMemory: derived information +--------------------------------- + +scavengesBeforeTenuring + Answer the number of scavenges that an object must on average + survive before being promoted to oldspace; this is however only an + estimate because objects that are reachable from oldspace have a + higher probability to be tenured soon, while objects that are only + reachable from thisContext have a lower probability to be tenured. + Anyway, if this number falls below 2-3 you should definitely + increment the size of eden and/or of survivor space, because you + are tenuring too often and relying too much on global garbage + collection to keep your heap clean; do the measurement on a + restarted image, so that the extra tenuring incurred when creating + long-lived objects such as classes or methods is not considered. + + + +File: gst-base.info, Node: OrderedCollection, Next: Package, Prev: ObjectMemory, Up: Base classes + +OrderedCollection +================= + +Defined in namespace Smalltalk +Superclass: SequenceableCollection +Category: Collections-Sequenceable + My instances represent ordered collections of arbitrary typed + objects which are not directly accessible by an index. They can + be accessed indirectly through an index, and can be manipulated by + adding to the end or based on content (such as add:after:) + +* Menu: + +* OrderedCollection class-instance creation:: (class) +* OrderedCollection-accessing:: (instance) +* OrderedCollection-adding:: (instance) +* OrderedCollection-removing:: (instance) + + +File: gst-base.info, Node: OrderedCollection class-instance creation, Next: OrderedCollection-accessing, Up: OrderedCollection + +OrderedCollection class: instance creation +------------------------------------------ + +new + Answer an OrderedCollection of default size + +new: anInteger + Answer an OrderedCollection of size anInteger + + + +File: gst-base.info, Node: OrderedCollection-accessing, Next: OrderedCollection-adding, Prev: OrderedCollection class-instance creation, Up: OrderedCollection + +OrderedCollection: accessing +---------------------------- + +at: anIndex + Answer the anIndex-th item of the receiver + +at: anIndex put: anObject + Store anObject at the anIndex-th item of the receiver, answer + anObject + +size + Return the number of objects in the receiver + + + +File: gst-base.info, Node: OrderedCollection-adding, Next: OrderedCollection-removing, Prev: OrderedCollection-accessing, Up: OrderedCollection + +OrderedCollection: adding +------------------------- + +add: anObject + Add anObject in the receiver, answer it + +add: newObject after: oldObject + Add newObject in the receiver just after oldObject, answer it. + Fail if oldObject can't be found + +add: newObject afterIndex: i + Add newObject in the receiver just after the i-th, answer it. + Fail if i < 0 or i > self size + +add: newObject before: oldObject + Add newObject in the receiver just before oldObject, answer it. + Fail if oldObject can't be found + +add: newObject beforeIndex: i + 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 + +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 + +Package +======= + +Defined in namespace Smalltalk +Superclass: Object +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-accessing:: (instance) + + +File: gst-base.info, Node: Package-accessing, Up: Package + +Package: accessing +------------------ + +allFiles + Answer an OrderedCollection of all the files, both built and + distributed, that are part of the package. + +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. + +directory: dir forBaseDir: baseDir + Set the base directory from which to load the package to dir. If + dir is a relative directory, store an absolute path composed from + the (already absolute) baseDir and from dir. + +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. + +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. + +name + Answer the name of the package. + +name: aString + Set to aString the name of the package. + +prerequisites + Answer a (modifiable) Set of prerequisites. + +printOn: aStream + Print a representation of the receiver on aStream (it happens to + be XML. + +printXmlOn: aStream collection: aCollection tag: aString + Private - Print aCollection on aStream as a sequence of aString + tags. + + + +File: gst-base.info, Node: PackageLoader, Next: PluggableAdaptor, Prev: Package, Up: Base classes + +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 + +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 + +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:) + +prerequisitesFor: package + Answer a Set of Strings containing the prerequisites for the given + package + +refreshDependencies + Reload the `packages.xml' file in the image and kernel directories + + + +File: gst-base.info, Node: PackageLoader class-loading, Next: PackageLoader class-testing, Prev: PackageLoader class-accessing, Up: PackageLoader + +PackageLoader class: loading +---------------------------- + +extractDependenciesFor: packagesList onError: aBlock + Answer an OrderedCollection containing all the packages which you + have to load to enable the packages in packagesList, in an + appropriate order. For example PackageLoader + extractDependenciesFor: #('BloxTestSuite' 'Blox' 'Browser') on a + newly built image will evaluate to an OrderedCollection containing + 'Kernel', 'Blox', 'BloxTestSuite' and 'Browser'. Note that Blox + has been moved before BloxTestSuite. Pass an error message to + aBlock if one or more packages need prerequisites which are not + available. + +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 + +PackageLoader class: testing +---------------------------- + +canLoad: package + Answer whether all the needed pre-requisites for package are + available. + + + +File: gst-base.info, Node: PluggableAdaptor, Next: PluggableProxy, Prev: PackageLoader, Up: Base classes + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + + + +File: gst-base.info, Node: Point-accessing, Next: Point-arithmetic, Prev: Point class-instance creation, Up: Point + +Point: accessing +---------------- + +x + Answer the x coordinate + +x: aNumber + Set the x coordinate to aNumber + +x: anXNumber y: aYNumber + Set the x and y coordinate to anXNumber and aYNumber, respectively + +y + Answer the y coordinate + +y: aNumber + Set the y coordinate to aNumber + + + +File: gst-base.info, Node: Point-arithmetic, Next: Point-comparing, Prev: Point-accessing, Up: Point + +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 + +- delta + Subtract delta, which can be a Number or a Point, from the receiver + +/ scale + Divide the receiver by scale, which can be a Number or a Point, + with no loss of precision + +// 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: Point-comparing, Next: Point-converting, Prev: Point-arithmetic, Up: Point + +Point: comparing +---------------- + +< aPoint + Answer whether the receiver is higher and to the left of aPoint + +<= aPoint + Answer whether aPoint is equal to the receiver, or the receiver is + higher and to the left of aPoint + += aPoint + Answer whether the receiver is equal to aPoint + +> aPoint + Answer whether the receiver is lower and to the right of aPoint + +>= 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 + +min: aPoint + Answer self if it is higher and to the left of aPoint, aPoint + otherwise + + + +File: gst-base.info, Node: Point-converting, Next: Point-point functions, Prev: Point-comparing, Up: Point + +Point: converting +----------------- + +asPoint + Answer the receiver. + +asRectangle + Answer an empty rectangle whose origin is self + +corner: aPoint + Answer a Rectangle whose origin is the receiver and whose corner + is aPoint + +extent: aPoint + Answer a Rectangle whose origin is the receiver and whose extent + is aPoint + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: Point-point functions, Next: Point-printing, Prev: Point-converting, Up: Point + +Point: point functions +---------------------- + +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 + +dist: aPoint + Answer the distance between the receiver and aPoint + +dotProduct: aPoint + Answer the dot product between the receiver and aPoint + +grid: aPoint + Answer a new point whose coordinates are rounded towards the + nearest multiple of aPoint + +normal + Rotate the Point 90degrees clockwise and get the unit vector + +transpose + Answer a new point whose coordinates are the receiver's coordinates + exchanged (x becomes y, y becomes x) + +truncatedGrid: aPoint + Answer a new point whose coordinates are rounded towards -infinity, + to a multiple of grid (which must be a Point) + + + +File: gst-base.info, Node: Point-printing, Next: Point-storing, Prev: Point-point functions, Up: Point + +Point: printing +--------------- + +printOn: aStream + Print a representation for the receiver on aStream + + + +File: gst-base.info, Node: Point-storing, Next: Point-truncation and round off, Prev: Point-printing, Up: Point + +Point: storing +-------------- + +storeOn: aStream + Print Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: Point-truncation and round off, Prev: Point-storing, Up: Point + +Point: truncation and round off +------------------------------- + +rounded + Answer a new point whose coordinates are rounded to the nearest + integer + +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: PositionableStream, Next: Process, Prev: Point, Up: Base classes + +PositionableStream +================== + +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. + +* Menu: + +* PositionableStream class-instance creation:: (class) +* PositionableStream-accessing-reading:: (instance) +* PositionableStream-class type methods:: (instance) +* PositionableStream-positioning:: (instance) +* PositionableStream-testing:: (instance) +* PositionableStream-truncating:: (instance) + + +File: gst-base.info, Node: PositionableStream class-instance creation, Next: PositionableStream-accessing-reading, Up: PositionableStream + +PositionableStream class: instance creation +------------------------------------------- + +on: aCollection + Answer an instance of the receiver streaming on the whole contents + 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: PositionableStream-accessing-reading, Next: PositionableStream-class type methods, Prev: PositionableStream class-instance creation, Up: PositionableStream + +PositionableStream: accessing-reading +------------------------------------- + +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. + +copyFrom: start to: end + Answer the collection on which the receiver is streaming, from the + start-th item to the end-th + +next + Answer the next item of the receiver. Returns nil when at end of + stream. + +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. + +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: PositionableStream-class type methods, Next: PositionableStream-positioning, Prev: PositionableStream-accessing-reading, Up: PositionableStream + +PositionableStream: class type methods +-------------------------------------- + +isExternalStream + We stream on a collection residing in the image, so answer false + +species + The collections returned by #upTo: etc. are the same kind as those + returned by the collection with methods such as #select: + + + +File: gst-base.info, Node: PositionableStream-positioning, Next: PositionableStream-testing, Prev: PositionableStream-class type methods, Up: PositionableStream + +PositionableStream: positioning +------------------------------- + +basicPosition: anInteger + Move the stream pointer to the anInteger-th object + +position + Answer the current value of the stream pointer + +position: anInteger + Move the stream pointer to the anInteger-th object + +reset + Move the stream back to its first element. For write-only streams, + the stream is truncated there. + +setToEnd + Move the current position to the end of the stream. + +size + Answer the size of data on which we are streaming. + +skip: anInteger + Move the current position by anInteger places, either forwards or + backwards. + +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). + + + +File: gst-base.info, Node: PositionableStream-testing, Next: PositionableStream-truncating, Prev: PositionableStream-positioning, Up: PositionableStream + +PositionableStream: testing +--------------------------- + +atEnd + Answer whether the objects in the stream have reached an end + +basicAtEnd + Answer whether the objects in the stream have reached an end. + This method must NOT be overridden. + +isEmpty + Answer whether the stream has no objects + + + +File: gst-base.info, Node: PositionableStream-truncating, Prev: PositionableStream-testing, Up: PositionableStream + +PositionableStream: truncating +------------------------------ + +truncate + Truncate the receiver to the current position - only valid for + writing streams + + + +File: gst-base.info, Node: Process, Next: ProcessorScheduler, Prev: PositionableStream, Up: Base classes + +Process +======= + +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. + +* Menu: + +* Process-accessing:: (instance) +* Process-basic:: (instance) +* Process-builtins:: (instance) +* Process-printing:: (instance) + + +File: gst-base.info, Node: Process-accessing, Next: Process-basic, Up: Process + +Process: accessing +------------------ + +externalInterruptsEnabled + Answer whether the receiver is executed with interrupts enabled + +name + Answer the user-friendly name of the process. + +name: aString + Give the name aString to the process + +priority + Answer the receiver's priority + +priority: anInteger + Change the receiver's priority to anInteger + +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. + +setPriorityFrom: activePriority to: anInteger suspend: aBoolean + Change the priority to anInteger. If aBoolean is true, suspend + the process after having done so; if it is false, check if it is + nicer to relinquish control from the running process (based on the + priority of the active process, that is passed in activePriority) + and if this is the case, preempt it. + +suspendedContext + Answer the context that the process was executing at the time it + was suspended. + +valueWithoutInterrupts: aBlock + Evaluate aBlock and delay all interrupts that are requested during + its execution to after aBlock returns. + + + +File: gst-base.info, Node: Process-basic, Next: Process-builtins, Prev: Process-accessing, Up: Process + +Process: basic +-------------- + +lowerPriority + Lower a bit the priority of the receiver. A #lowerPriority will + cancel a previous #raisePriority, and vice versa. + +primTerminate + Terminate the receiver - This is nothing more than prohibiting to + resume the process, then suspending it. + +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:. + +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 + +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. + + + +File: gst-base.info, Node: Process-builtins, Next: Process-printing, Prev: Process-basic, Up: Process + +Process: builtins +----------------- + +resume + Resume the receiver's execution + +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. + +yield + Yield control from the receiver to other processes + + + +File: gst-base.info, Node: Process-printing, Prev: Process-builtins, Up: Process + +Process: printing +----------------- + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-base.info, Node: ProcessorScheduler, Next: Promise, Prev: Process, Up: Base classes + +ProcessorScheduler +================== + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes + I provide methods that control the execution of processes. + +* 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: ProcessorScheduler class-instance creation, Next: ProcessorScheduler-basic, Up: ProcessorScheduler + +ProcessorScheduler class: instance creation +------------------------------------------- + +new + Error--new instances of ProcessorScheduler should not be created. + + + +File: gst-base.info, Node: ProcessorScheduler-basic, Next: ProcessorScheduler-built ins, Prev: ProcessorScheduler class-instance creation, Up: ProcessorScheduler + +ProcessorScheduler: basic +------------------------- + +activePriority + Answer the active process' priority + +activeProcess + Answer the active process + +changePriorityListOf: aProcess to: aPriority suspend: aBoolean + Private - Move aProcess to the execution list for aPriority, + answer the new execution list + +processesAt: aPriority + Answer a linked list of processes at the given priority + +terminateActive + Terminate the active process + +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). + +yield + Let the active process yield control to other processes + + + +File: gst-base.info, Node: ProcessorScheduler-built ins, Next: ProcessorScheduler-idle tasks, Prev: ProcessorScheduler-basic, Up: ProcessorScheduler + +ProcessorScheduler: built ins +----------------------------- + + 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: ProcessorScheduler-idle tasks, Next: ProcessorScheduler-printing, Prev: ProcessorScheduler-built ins, Up: ProcessorScheduler + +ProcessorScheduler: idle tasks +------------------------------ + +idle + Private - Call the next idle task + +idleAdd: aBlock + Register aBlock to be executed when things are idle + +initialize + Private - Start the finalization process. + +update: aSymbol + Private - If we left some work behind when the image was saved, do + it now. + + + +File: gst-base.info, Node: ProcessorScheduler-printing, Next: ProcessorScheduler-priorities, Prev: ProcessorScheduler-idle tasks, Up: ProcessorScheduler + +ProcessorScheduler: printing +---------------------------- + +printOn: aStream + Store onto aStream a printed representation of the receiver + + + +File: gst-base.info, Node: ProcessorScheduler-priorities, Next: ProcessorScheduler-storing, Prev: ProcessorScheduler-printing, Up: ProcessorScheduler + +ProcessorScheduler: priorities +------------------------------ + +highestPriority + Answer the highest valid priority + +highIOPriority + Answer the priority for system high-priority I/O processes, such + as a process handling input from a network. + +lowestPriority + Answer the lowest 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. + +priorityName: priority + Private - Answer a name for the given process priority + +rockBottomPriority + Answer the lowest valid priority + +systemBackgroundPriority + Answer the priority for system background-priority processes. + Examples are an incremental garbage collector or status checker. + +timingPriority + Answer the priority for system real-time processes. + +unpreemptedPriority + Answer the highest priority avilable in the system; never create a + process with this priority, instead use + BlockClosure>>#valueWithoutPreemption. + +userBackgroundPriority + Answer the priority for user background-priority processes + +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. + +userSchedulingPriority + Answer the priority for user standard-priority processes + + + +File: gst-base.info, Node: ProcessorScheduler-storing, Next: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-priorities, Up: ProcessorScheduler + +ProcessorScheduler: storing +--------------------------- + +storeOn: aStream + Store onto aStream a Smalltalk expression which evaluates to the + receiver + + + +File: gst-base.info, Node: ProcessorScheduler-timed invocation, Prev: ProcessorScheduler-storing, Up: ProcessorScheduler + +ProcessorScheduler: timed invocation +------------------------------------ + +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 + Private - signal 'aSemaphore' when the given C signal occurs + + + +File: gst-base.info, Node: Promise, Next: Random, Prev: ProcessorScheduler, Up: Base classes + +Promise +======= + +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. + +* Menu: + +* Promise class-creating instances:: (class) +* Promise-accessing:: (instance) +* Promise-initializing:: (instance) +* Promise-printing:: (instance) + + +File: gst-base.info, Node: Promise class-creating instances, Next: Promise-accessing, Up: Promise + +Promise class: creating instances +--------------------------------- + +null + This method should not be called for instances of this class. + + + +File: gst-base.info, Node: Promise-accessing, Next: Promise-initializing, Prev: Promise class-creating instances, Up: Promise + +Promise: accessing +------------------ + +hasValue + Answer whether we already have a value. + +value + Get the value of the receiver. + +value: anObject + Set the value of the receiver. + + + +File: gst-base.info, Node: Promise-initializing, Next: Promise-printing, Prev: Promise-accessing, Up: Promise + +Promise: initializing +--------------------- + +initialize + Private - set the initial state of the receiver + + + +File: gst-base.info, Node: Promise-printing, Prev: Promise-initializing, Up: Promise + +Promise: printing +----------------- + +printOn: aStream + Print a representation of the receiver + + + +File: gst-base.info, Node: Random, Next: ReadStream, Prev: Promise, Up: Base classes + +Random +====== + +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. + +* Menu: + +* 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 + +Random class: instance creation +------------------------------- + +new + Create a new random number generator whose seed is given by the + current time on the millisecond clock + +seed: aFloat + Create a new random number generator whose seed is aFloat + + + +File: gst-base.info, Node: Random class-shortcuts, Next: Random-basic, Prev: Random class-instance creation, Up: Random + +Random class: shortcuts +----------------------- + +between: low and: high + Return a random integer between the given extrema + +next + Return a random number between 0 and 1 (excluded) + + + +File: gst-base.info, Node: Random-basic, Next: Random-testing, Prev: Random class-shortcuts, Up: Random + +Random: basic +------------- + +atEnd + This stream never ends. Always answer false. + +between: low and: high + Return a random integer between low and high. + +next + Return the next random number in the sequence. + +nextPut: value + This method should not be called for instances of this class. + + + +File: gst-base.info, Node: Random-testing, Prev: Random-basic, Up: Random + +Random: testing +--------------- + +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: ReadStream, Next: ReadWriteStream, Prev: Random, Up: Base classes + +ReadStream +========== + +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. + +* Menu: + +* ReadStream class-instance creation:: (class) +* ReadStream-accessing-reading:: (instance) + + +File: gst-base.info, Node: ReadStream class-instance creation, Next: ReadStream-accessing-reading, Up: ReadStream + +ReadStream class: instance creation +----------------------------------- + +on: aCollection + Answer a new stream working on aCollection from its start. + + + +File: gst-base.info, Node: ReadStream-accessing-reading, Prev: ReadStream class-instance creation, Up: ReadStream + +ReadStream: accessing-reading +----------------------------- + +reverseContents + May be faster than generic stream reverseContents. + +size + Answer the receiver's size. + + + +File: gst-base.info, Node: ReadWriteStream, Next: Rectangle, Prev: ReadStream, Up: Base classes + +ReadWriteStream +=============== + +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. + +* Menu: + +* ReadWriteStream class-instance creation:: (class) +* ReadWriteStream-positioning:: (instance) + + +File: gst-base.info, Node: ReadWriteStream class-instance creation, Next: ReadWriteStream-positioning, Up: ReadWriteStream + +ReadWriteStream class: instance creation +---------------------------------------- + +on: aCollection + Answer a new stream working on aCollection from its start. The + stream starts at the front of aCollection + +with: aCollection + Answer a new instance of the receiver which streams from the end + of aCollection. + + + +File: gst-base.info, Node: ReadWriteStream-positioning, Prev: ReadWriteStream class-instance creation, Up: ReadWriteStream + +ReadWriteStream: positioning +---------------------------- + +position: anInteger + Unlike WriteStreams, ReadWriteStreams don't truncate the stream + +skip: anInteger + Unlike WriteStreams, ReadWriteStreams don't truncate the stream + + + +File: gst-base.info, Node: Rectangle, Next: RecursionLock, Prev: ReadWriteStream, Up: Base classes + +Rectangle +========= + +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) + +* Menu: + +* 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 + +Rectangle class: instance creation +---------------------------------- + +left: leftNumber right: rightNumber top: topNumber bottom: bottomNumber + Answer a rectangle with the given coordinates + +new + Answer the (0 @ 0 corner: 0 @ 0) rectangle + +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: Rectangle-accessing, Next: Rectangle-copying, Prev: Rectangle class-instance creation, Up: Rectangle + +Rectangle: accessing +-------------------- + +bottom + Answer the corner's y of the receiver + +bottom: aNumber + Set the corner's y of the receiver + +bottomCenter + Answer the center of the receiver's bottom side + +bottomLeft + Answer the bottom-left corner of the receiver + +bottomLeft: aPoint + Answer the receiver with the bottom-left changed to aPoint + +bottomRight + Answer the bottom-right corner of the receiver + +bottomRight: aPoint + Change the bottom-right corner of the receiver + +center + Answer the center of the receiver + +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 + +left: aValue + Set the x of the left edge 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 + +origin + Answer the top-left corner of the receiver + +origin: aPoint + Change the top-left corner of the receiver to aPoint + +origin: pnt1 corner: pnt2 + Change both the origin (top-left corner) and the corner + (bottom-right corner) of the receiver + +origin: pnt1 extent: pnt2 + Change the top-left corner and the size of 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 + +rightCenter + Answer the center of the receiver's right side + +top + Answer the y of the receiver's top-left corner + +top: aValue + Change the y of the receiver's top-left corner + +topCenter + Answer the center of the receiver's top side + +topLeft + Answer the receiver's top-left corner + +topLeft: aPoint + Change the receiver's top-left corner's coordinates to aPoint + +topRight + Answer the receiver's top-right corner + +topRight: aPoint + Change the receiver's top-right corner to aPoint + +width + Answer the receiver's width + +width: aNumber + Change the receiver's width to aNumber + + + +File: gst-base.info, Node: Rectangle-copying, Next: Rectangle-printing, Prev: Rectangle-accessing, Up: Rectangle + +Rectangle: copying +------------------ + +copy + Return a deep copy of the receiver for safety. + + + +File: gst-base.info, Node: Rectangle-printing, Next: Rectangle-rectangle functions, Prev: Rectangle-copying, Up: Rectangle + +Rectangle: printing +------------------- + +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: Rectangle-rectangle functions, Next: Rectangle-testing, Prev: Rectangle-printing, Up: Rectangle + +Rectangle: rectangle functions +------------------------------ + +amountToTranslateWithin: aRectangle + Answer a Point so that if aRectangle is translated by that point, + its origin lies within the receiver's. + +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. + +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. + +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. + +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 + +intersect: aRectangle + Returns the rectangle (if any) created by the overlap of + rectangles A and B. + +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. + + + +File: gst-base.info, Node: Rectangle-testing, Next: Rectangle-transforming, Prev: Rectangle-rectangle functions, Up: Rectangle + +Rectangle: testing +------------------ + += 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 + +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 + +hash + Answer an hash value for the receiver + +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 + + + +File: gst-base.info, Node: Rectangle-transforming, Next: Rectangle-truncation and round off, Prev: Rectangle-testing, Up: Rectangle + +Rectangle: transforming +----------------------- + +moveBy: aPoint + Change the receiver so that the origin and corner are shifted by + aPoint + +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 + +translateBy: factor + Answer a copy of the receiver in which the origin and corner are + shifted by aPoint + + + +File: gst-base.info, Node: Rectangle-truncation and round off, Prev: Rectangle-transforming, Up: Rectangle + +Rectangle: truncation and round off +----------------------------------- + +rounded + Answer a copy of the receiver with the coordinates rounded to the + nearest integers + + + +File: gst-base.info, Node: RecursionLock, Next: RootNamespace, Prev: Rectangle, Up: Base classes + +RecursionLock +============= + +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Processes + +* Menu: + +* RecursionLock class-instance creation:: (class) +* RecursionLock-accessing:: (instance) +* RecursionLock-mutual exclusion:: (instance) +* RecursionLock-printing:: (instance) + + +File: gst-base.info, Node: RecursionLock class-instance creation, Next: RecursionLock-accessing, Up: RecursionLock + +RecursionLock class: instance creation +-------------------------------------- + +new + Answer a new semaphore + + + +File: gst-base.info, Node: RecursionLock-accessing, Next: RecursionLock-mutual exclusion, Prev: RecursionLock class-instance creation, Up: RecursionLock + +RecursionLock: accessing +------------------------ + +isOwnerProcess + Answer whether the receiver is the owner of the lock. + +name + Answer a user-defined name for the lock. + +name: aString + Set to aString the user-defined name for the lock. + +waitingProcesses + Answer the set of processes that are waiting on the semaphore. + +wouldBlock + Answer whether sending #wait to the receiver would suspend the + active process. + + + +File: gst-base.info, Node: RecursionLock-mutual exclusion, Next: RecursionLock-printing, Prev: RecursionLock-accessing, Up: RecursionLock + +RecursionLock: mutual exclusion +------------------------------- + +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: RecursionLock-printing, Prev: RecursionLock-mutual exclusion, Up: RecursionLock + +RecursionLock: printing +----------------------- + +printOn: aStream + Print a human-readable represention of the receiver on aStream. + + + +File: gst-base.info, Node: RootNamespace, Next: RunArray, Prev: RecursionLock, Up: Base classes + +RootNamespace +============= + +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'. + +* Menu: + +* RootNamespace class-instance creation:: (class) +* RootNamespace-namespace hierarchy:: (instance) +* RootNamespace-overrides for superspaces:: (instance) +* RootNamespace-printing:: (instance) + + +File: gst-base.info, Node: RootNamespace class-instance creation, Next: RootNamespace-namespace hierarchy, Up: RootNamespace + +RootNamespace class: instance creation +-------------------------------------- + +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: RootNamespace-namespace hierarchy, Next: RootNamespace-overrides for superspaces, Prev: RootNamespace class-instance creation, Up: RootNamespace + +RootNamespace: namespace hierarchy +---------------------------------- + +siblings + Answer all the other root namespaces + +siblingsDo: aBlock + Evaluate aBlock once for each of the other root namespaces, + passing the namespace as a parameter. + + + +File: gst-base.info, Node: RootNamespace-overrides for superspaces, Next: RootNamespace-printing, Prev: RootNamespace-namespace hierarchy, Up: RootNamespace + +RootNamespace: overrides for superspaces +---------------------------------------- + +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. + + + +File: gst-base.info, Node: RootNamespace-printing, Prev: RootNamespace-overrides for superspaces, Up: RootNamespace + +RootNamespace: printing +----------------------- + +nameIn: aNamespace + Answer Smalltalk code compiling to the receiver when the current + namespace is aNamespace + +printOn: aStream in: aNamespace + Print on aStream some Smalltalk code compiling to the receiver + when the current namespace is aNamespace + +storeOn: aStream + Store Smalltalk code compiling to the receiver + + + +File: gst-base.info, Node: RunArray, Next: ScaledDecimal, Prev: RootNamespace, Up: Base classes + +RunArray +======== + +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. + +* 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: RunArray class-instance creation, Next: RunArray-accessing, Up: RunArray + +RunArray class: instance creation +--------------------------------- + +new + Answer an empty RunArray + +new: aSize + Answer a RunArray with space for aSize runs + + + +File: gst-base.info, Node: RunArray-accessing, Next: RunArray-adding, Prev: RunArray class-instance creation, Up: RunArray + +RunArray: accessing +------------------- + +at: anIndex + Answer the element at index anIndex + +at: anIndex put: anObject + Replace the element at index anIndex with anObject and answer + anObject + + + +File: gst-base.info, Node: RunArray-adding, Next: RunArray-basic, Prev: RunArray-accessing, Up: RunArray + +RunArray: adding +---------------- + +add: anObject afterIndex: anIndex + Add anObject after the element at index anIndex + +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 + +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 + +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 + +addFirst: anObject + Add anObject at the beginning of the receiver. Watch out: this + operation can cause serious performance pitfalls + +addLast: anObject + Add anObject at the end of the receiver + + + +File: gst-base.info, Node: RunArray-basic, Next: RunArray-copying, Prev: RunArray-adding, Up: RunArray + +RunArray: basic +--------------- + +first + Answer the first element in the receiver + +last + Answer the last element of the receiver + +size + Answer the number of elements in the receiver + + + +File: gst-base.info, Node: RunArray-copying, Next: RunArray-enumerating, Prev: RunArray-basic, Up: RunArray + +RunArray: copying +----------------- + +deepCopy + Answer a copy of the receiver containing copies of the receiver's + elements (#copy is used to obtain them) + +shallowCopy + Answer a copy of the receiver. The elements are not copied + + + +File: gst-base.info, Node: RunArray-enumerating, Next: RunArray-removing, Prev: RunArray-copying, Up: RunArray + +RunArray: enumerating +--------------------- + +do: aBlock + Enumerate all the objects in the receiver, passing each one to + aBlock + +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 + + + +File: gst-base.info, Node: RunArray-removing, Next: RunArray-searching, Prev: RunArray-enumerating, Up: RunArray + +RunArray: removing +------------------ + +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 + + + +File: gst-base.info, Node: RunArray-searching, Next: RunArray-testing, Prev: RunArray-removing, Up: RunArray + +RunArray: searching +------------------- + +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: RunArray-testing, Prev: RunArray-searching, Up: RunArray + +RunArray: testing +----------------- + += anObject + Answer true if the receiver is equal to anObject + +hash + Answer an hash value for the receiver + + + +File: gst-base.info, Node: ScaledDecimal, Next: Semaphore, Prev: RunArray, Up: Base classes + +ScaledDecimal +============= + +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. + +* Menu: + +* ScaledDecimal class-constants:: (class) +* 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-constants, Next: ScaledDecimal class-instance creation, Up: ScaledDecimal + +ScaledDecimal class: constants +------------------------------ + +initialize + Initialize the receiver's class variables + + + +File: gst-base.info, Node: ScaledDecimal class-instance creation, Next: ScaledDecimal-arithmetic, Prev: ScaledDecimal class-constants, Up: ScaledDecimal + +ScaledDecimal class: instance creation +-------------------------------------- + +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. + + + +File: gst-base.info, Node: ScaledDecimal-arithmetic, Next: ScaledDecimal-coercion, Prev: ScaledDecimal class-instance creation, Up: ScaledDecimal + +ScaledDecimal: arithmetic +------------------------- + +* aNumber + Multiply two numbers and answer the result. + ++ aNumber + Sum two numbers and answer the result. + +- aNumber + Subtract aNumber from the receiver and answer the result. + +/ aNumber + Divide two numbers and answer the result. + +// aNumber + Answer the integer quotient after dividing the receiver by aNumber + with truncation towards negative infinity. + +\\ aNumber + Answer the remainder after integer division the receiver by aNumber + with truncation towards negative infinity. + + + +File: gst-base.info, Node: ScaledDecimal-coercion, Next: ScaledDecimal-comparing, Prev: ScaledDecimal-arithmetic, Up: ScaledDecimal + +ScaledDecimal: coercion +----------------------- + +asFloatD + Answer the receiver, converted to a FloatD + +asFloatE + Answer the receiver, converted to a FloatE + +asFloatQ + Answer the receiver, converted to a FloatQ + +asFraction + Answer the receiver, converted to a Fraction + +ceiling + Answer the receiver, converted to an Integer and truncated towards + +infinity. + +coerce: aNumber + Answer aNumber, converted to a ScaledDecimal with the same scale + as the receiver. + +fractionPart + Answer the fractional part of the receiver. + +generality + Return the receiver's generality + +integerPart + Answer the fractional part of the receiver. + +truncated + Answer the receiver, converted to an Integer and truncated towards + -infinity. + + + +File: gst-base.info, Node: ScaledDecimal-comparing, Next: ScaledDecimal-constants, Prev: ScaledDecimal-coercion, Up: ScaledDecimal + +ScaledDecimal: comparing +------------------------ + +< 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. + +> aNumber + Answer whether the receiver is greater than arg. + +>= aNumber + Answer whether the receiver is greater than or equal to arg. + +hash + Answer an hash value for the receiver. + +~= arg + Answer whether the receiver is not equal arg. + + + +File: gst-base.info, Node: ScaledDecimal-constants, Next: ScaledDecimal-printing, Prev: ScaledDecimal-comparing, Up: ScaledDecimal + +ScaledDecimal: constants +------------------------ + +one + Answer the receiver's representation of one. + +zero + Answer the receiver's representation of zero. + + + +File: gst-base.info, Node: ScaledDecimal-printing, Next: ScaledDecimal-storing, Prev: ScaledDecimal-constants, Up: ScaledDecimal + +ScaledDecimal: 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. + + + +File: gst-base.info, Node: ScaledDecimal-storing, Prev: ScaledDecimal-printing, Up: ScaledDecimal + +ScaledDecimal: storing +---------------------- + +storeOn: aStream + Print Smalltalk code that compiles to the receiver on aStream. + + + +File: gst-base.info, Node: Semaphore, Next: SequenceableCollection, Prev: ScaledDecimal, Up: Base classes + +Semaphore +========= + +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. + +* Menu: + +* 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 + +Semaphore 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. + +new + Answer a new semaphore + + + +File: gst-base.info, Node: Semaphore-accessing, Next: Semaphore-builtins, Prev: Semaphore class-instance creation, Up: Semaphore + +Semaphore: accessing +-------------------- + +name + Answer a user-friendly name for the receiver + +name: aString + Answer a user-friendly name for the receiver + +waitingProcesses + Answer an Array of processes currently waiting on the receiver. + +wouldBlock + Answer whether waiting on the receiver would suspend the current + process. + + + +File: gst-base.info, Node: Semaphore-builtins, Next: Semaphore-mutual exclusion, Prev: Semaphore-accessing, Up: Semaphore + +Semaphore: builtins +------------------- + +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. + +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. + +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 + +wait + Wait for the receiver to be signalled, suspending the executing + process if it is not yet + + is + +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 + is used together with the receiver: otherwise, if a process sends + one of them 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: Semaphore-mutual exclusion, Next: Semaphore-printing, Prev: Semaphore-builtins, Up: Semaphore + +Semaphore: mutual exclusion +--------------------------- + +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: Semaphore-printing, Prev: Semaphore-mutual exclusion, Up: Semaphore + +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 + +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-copying SequenceableCollections:: (instance) +* SequenceableCollection-enumerating:: (instance) +* SequenceableCollection-replacing items:: (instance) +* SequenceableCollection-testing:: (instance) + + +File: gst-base.info, Node: SequenceableCollection class-instance creation, Next: SequenceableCollection-basic, Up: SequenceableCollection + +SequenceableCollection class: instance creation +----------------------------------------------- + +streamContents: aBlock + Create a ReadWriteStream on an empty instance of the receiver; + pass the stream to aBlock, then retrieve its contents and answer + them. + + + +File: gst-base.info, Node: SequenceableCollection-basic, Next: SequenceableCollection-copying SequenceableCollections, Prev: SequenceableCollection class-instance creation, Up: SequenceableCollection + +SequenceableCollection: basic +----------------------------- + +after: oldObject + Return the element after oldObject. Error if oldObject not found + or if no following object is available + +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: aCollection put: anObject + Put anObject at every index contained in aCollection + +atAllPut: anObject + Put anObject at every index in 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 + +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 + +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 + +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: SequenceableCollection-copying SequenceableCollections, Next: SequenceableCollection-enumerating, Prev: SequenceableCollection-basic, Up: SequenceableCollection + +SequenceableCollection: copying SequenceableCollections +------------------------------------------------------- + +, aSequenceableCollection + Append aSequenceableCollection at the end of the receiver (using + #add:), and answer a new collection + +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. + + + +File: gst-base.info, Node: SequenceableCollection-enumerating, Next: SequenceableCollection-replacing items, Prev: SequenceableCollection-copying SequenceableCollections, Up: SequenceableCollection + +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 + +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. + +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. + +writeStream + Answer a WriteStream streaming on the receiver + + + +File: gst-base.info, Node: SequenceableCollection-replacing items, Next: SequenceableCollection-testing, Prev: SequenceableCollection-enumerating, Up: SequenceableCollection + +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-testing, Prev: SequenceableCollection-replacing items, Up: SequenceableCollection + +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 + + + +File: gst-base.info, Node: Set, Next: SharedQueue, Prev: SequenceableCollection, Up: Base classes + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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-exception handling:: (instance) + + +File: gst-base.info, Node: Signal-accessing, Next: Signal-exception handling, Up: Signal + +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-exception handling, Prev: Signal-accessing, Up: Signal + +Signal: exception handling +-------------------------- + +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 anObject 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 + +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 + +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 + +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 + +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 + +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 methods:: (instance) +* SmallInteger-testing functionality:: (instance) + + +File: gst-base.info, Node: SmallInteger class-getting limits, Next: SmallInteger class-testing, Up: SmallInteger + +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 + +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 + +SmallInteger: bit arithmetic +---------------------------- + +highBit + Return the index of the highest order 1 bit of the receiver + + + +File: gst-base.info, Node: SmallInteger-built ins, Next: SmallInteger-builtins, Prev: SmallInteger-bit arithmetic, Up: SmallInteger + +SmallInteger: 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 Integer or Fraction + +// arg + Dividing receiver by arg (with truncation towards -infinity) and + answer the result + +< 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 the same object as arg + +> arg + Answer whether the receiver is greater than arg + +>= arg + Answer whether the receiver is greater than or equal to arg + +\\ arg + Calculate the remainder of dividing receiver by arg (with + truncation towards -infinity) and answer it + +asFloatD + Convert the receiver to a FloatD, answer the result + +asFloatE + Convert the receiver to a FloatE, answer the result + +asFloatQ + Convert the receiver to a FloatQ, answer the result + +asObject + Answer the object whose index is in the receiver, nil if there is + a free object, fail if index is out of bounds + +asObjectNoFail + Answer the object whose index is in the receiver, or nil if no + object is found at that index + +bitAnd: arg + Do a bitwise AND between the receiver and arg, answer the result + +bitOr: arg + Do a bitwise OR between the receiver and arg, answer the result + +bitShift: arg + Shift the receiver by arg places to the left if arg > 0, by arg + places to the right if arg < 0, answer another Number + +bitXor: arg + Do a bitwise XOR between the receiver and arg, answer the result + +nextValidOop + Answer the index of the first non-free OOP after the receiver. + This is used internally; it is placed here to avoid polluting + Object. + +quo: arg + Dividing receiver by arg (with truncation towards zero) and answer + the result + +~= arg + Answer whether the receiver is not equal to arg + +~~ arg + Answer whether the receiver is not the same object as arg + + + +File: gst-base.info, Node: SmallInteger-builtins, Next: SmallInteger-coercion methods, Prev: SmallInteger-built ins, Up: SmallInteger + +SmallInteger: builtins +---------------------- + +at: anIndex + Answer the index-th indexed instance variable of the receiver. + This method always fails. + +at: anIndex put: value + Store value in the index-th indexed instance variable of the + receiver This method always fails. + +basicAt: anIndex + Answer the index-th indexed instance variable of the receiver. + This method always fails. + +basicAt: anIndex put: value + Store value in the index-th indexed instance variable of the + receiver This method always fails. + +scramble + Answer the receiver with its bits mixed and matched. + + + +File: gst-base.info, Node: SmallInteger-coercion methods, Next: SmallInteger-testing functionality, Prev: SmallInteger-builtins, Up: SmallInteger + +SmallInteger: coercion methods +------------------------------ + +generality + Return 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: SmallInteger-testing functionality, Prev: SmallInteger-coercion methods, Up: SmallInteger + +SmallInteger: testing functionality +----------------------------------- + +isSmallInteger + Answer `true'. + + + +File: gst-base.info, Node: SortedCollection, Next: Stream, Prev: SmallInteger, Up: Base classes + +SortedCollection +================ + +Defined in namespace Smalltalk +Superclass: OrderedCollection +Category: Collections-Sequenceable + I am a collection of objects, stored and accessed according to some + sorting criteria. I store things using heap sort and quick sort. + My instances have a comparison block associated with them; this + block takes two arguments and is a predicate which returns true if + the first argument should be sorted earlier than the second. The + default block is [ :a :b | a <= b ], but I will accept any block + that conforms to the above criteria - actually any object which + responds to #value:value:. + +* Menu: + +* SortedCollection class-hacking:: (class) +* SortedCollection class-instance creation:: (class) +* SortedCollection-basic:: (instance) +* SortedCollection-copying:: (instance) +* SortedCollection-disabled:: (instance) +* SortedCollection-enumerating:: (instance) +* SortedCollection-saving and loading:: (instance) +* SortedCollection-searching:: (instance) + + +File: gst-base.info, Node: SortedCollection class-hacking, Next: SortedCollection class-instance creation, Up: SortedCollection + +SortedCollection class: hacking +------------------------------- + +defaultSortBlock + Answer a default sort block for the receiver. + + + +File: gst-base.info, Node: SortedCollection class-instance creation, Next: SortedCollection-basic, Prev: SortedCollection class-hacking, Up: SortedCollection + +SortedCollection class: instance creation +----------------------------------------- + +new + Answer a new collection with a default size and sort block + +new: aSize + Answer a new collection with a default sort block and the given + size + +sortBlock: aSortBlock + Answer a new collection with a default size and the given sort + block + + + +File: gst-base.info, Node: SortedCollection-basic, Next: SortedCollection-copying, Prev: SortedCollection class-instance creation, Up: SortedCollection + +SortedCollection: basic +----------------------- + +last + Answer the last item of the receiver + +removeLast + Remove an object from the end of the receiver. Fail if the receiver + is empty + +sortBlock + Answer the receiver's sort criteria + +sortBlock: aSortBlock + Change the sort criteria for a sorted collection, resort the + elements of the collection, and return it. + + + +File: gst-base.info, Node: SortedCollection-copying, Next: SortedCollection-disabled, Prev: SortedCollection-basic, Up: SortedCollection + +SortedCollection: copying +------------------------- + +copyEmpty: newSize + Answer an empty copy of the receiver, with the same sort block as + the receiver + + + +File: gst-base.info, Node: SortedCollection-disabled, Next: SortedCollection-enumerating, Prev: SortedCollection-copying, Up: SortedCollection + +SortedCollection: disabled +-------------------------- + +add: anObject afterIndex: i + This method should not be called for instances of this class. + +addAll: aCollection afterIndex: i + This method should not be called for instances of this class. + +addAllFirst: aCollection + This method should not be called for instances of this class. + +addAllLast: aCollection + This method should not be called for instances of this class. + +addFirst: anObject + This method should not be called for instances of this class. + +addLast: anObject + This method should not be called for instances of this class. + +at: index put: anObject + This method should not be called for instances of this class. + + + +File: gst-base.info, Node: SortedCollection-enumerating, Next: SortedCollection-saving and loading, Prev: SortedCollection-disabled, Up: SortedCollection + +SortedCollection: enumerating +----------------------------- + +beConsistent + Prepare the receiver to be walked through with #do: or another + enumeration method. + + + +File: gst-base.info, Node: SortedCollection-saving and loading, Next: SortedCollection-searching, Prev: SortedCollection-enumerating, Up: SortedCollection + +SortedCollection: saving and loading +------------------------------------ + +postLoad + Restore the default sortBlock if it is nil + +preStore + Store the default sortBlock as nil + + + +File: gst-base.info, Node: SortedCollection-searching, Prev: SortedCollection-saving and loading, Up: SortedCollection + +SortedCollection: searching +--------------------------- + +includes: anObject + Private - Answer whether the receiver includes an item which is + equal to anObject + +indexOf: anObject startingAt: index ifAbsent: aBlock + Answer the first index > anIndex which contains anElement. Invoke + exceptionBlock and answer its result if no item is found + +occurrencesOf: anObject + Answer how many occurrences of anObject can be found in the + receiver + + + +File: gst-base.info, Node: Stream, Next: String, Prev: SortedCollection, Up: Base classes + +Stream +====== + +Defined in namespace Smalltalk +Superclass: Object +Category: Streams + I am an abstract class that provides interruptable sequential + access to objects. I can return successive objects from a source, + or accept successive objects and store them sequentially on a + sink. I provide some simple iteration over the contents of one of + my instances, and provide for writing collections sequentially. + +* Menu: + +* Stream-accessing-reading:: (instance) +* Stream-accessing-writing:: (instance) +* Stream-basic:: (instance) +* Stream-character writing:: (instance) +* Stream-enumerating:: (instance) +* Stream-filing out:: (instance) +* Stream-positioning:: (instance) +* Stream-printing:: (instance) +* Stream-providing consistent protocols:: (instance) +* Stream-storing:: (instance) +* Stream-testing:: (instance) + + +File: gst-base.info, Node: Stream-accessing-reading, Next: Stream-accessing-writing, Up: Stream + +Stream: accessing-reading +------------------------- + +contents + Answer the whole contents of the receiver, from the next object to + the last + +next + Return the next object in the receiver + +next: anInteger + 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 + +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. + +nextMatchFor: anObject + Answer whether the next object is equal to anObject. Even if it + does not, anObject is lost + +splitAt: anObject + Answer an OrderedCollection of parts of the receiver. A new + (possibly empty) part starts at the start of the receiver, or + after every occurrence of an object which is equal to anObject (as + compared by #=). + +upTo: anObject + Returns a collection of the same type that the stream accesses, up + to but not including the object anObject. Returns the entire rest + of the stream's contents if anObject is not present. + +upToAll: aCollection + If there is a sequence of objects remaining in the stream that is + equal to the sequence in aCollection, set the stream position just + past that sequence and answer the elements up to, but not + including, the sequence. Else, set the stream position to its end + and answer all the remaining elements. + +upToEnd + Answer every item in the collection on which the receiver is + streaming, from the next one to the last + + + +File: gst-base.info, Node: Stream-accessing-writing, Next: Stream-basic, Prev: Stream-accessing-reading, Up: Stream + +Stream: accessing-writing +------------------------- + +next: anInteger put: anObject + Write anInteger copies of anObject to the receiver + +next: n putAll: aCollection startingAt: start + Write n objects to the stream, reading them from aCollection and + starting at the start-th item. + +nextPut: anObject + Write anObject to the receiver + +nextPutAll: aCollection + Write all the objects in aCollection to the receiver + + + +File: gst-base.info, Node: Stream-basic, Next: Stream-character writing, Prev: Stream-accessing-writing, Up: Stream + +Stream: basic +------------- + +species + Answer `Array'. + + + +File: gst-base.info, Node: Stream-character writing, Next: Stream-enumerating, Prev: Stream-basic, Up: Stream + +Stream: character writing +------------------------- + +cr + Store a cr on the receiver + +crTab + Store a cr and a tab on the receiver + +nl + Store a new line on the receiver + +nlTab + Store a new line and a tab on the receiver + +space + Store a space on the receiver + +space: n + Store n spaces on the receiver + +tab + Store a tab on the receiver + +tab: n + Store n tabs on the receiver + + + +File: gst-base.info, Node: Stream-enumerating, Next: Stream-filing out, Prev: Stream-character writing, Up: Stream + +Stream: enumerating +------------------- + +do: aBlock + Evaluate aBlock once for every object in the receiver + + + +File: gst-base.info, Node: Stream-filing out, Next: Stream-positioning, Prev: Stream-enumerating, Up: Stream + +Stream: filing out +------------------ + +fileOut: aClass + File out aClass on the receiver. If aClass is not a metaclass, + file out class and instance methods; if aClass is a metaclass, + file out only the class methods + + + +File: gst-base.info, Node: Stream-positioning, Next: Stream-printing, Prev: Stream-filing out, Up: Stream + +Stream: positioning +------------------- + +skip: anInteger + Move the position forwards by anInteger places + +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, + the pointer is atEnd, and false is returned. + +skipToAll: aCollection + If there is a sequence of objects remaining in the stream that is + equal to the sequence in aCollection, set the stream position just + past that sequence and answer true. Else, set the stream position + to its end and answer false. + + + +File: gst-base.info, Node: Stream-printing, Next: Stream-providing consistent protocols, Prev: Stream-positioning, Up: Stream + +Stream: printing +---------------- + +<< anObject + This method is a short-cut for #display:; it prints anObject on the + receiver by sending displayOn: to anObject. This method is provided + so that you can use cascading and obtain better-looking code + +display: anObject + Print anObject on the receiver by sending displayOn: to anObject. + This method is provided so that you can use cascading and obtain + better-looking code + +print: anObject + Print anObject on the receiver by sending printOn: to anObject. + This method is provided so that you can use cascading and obtain + better-looking code + + + +File: gst-base.info, Node: Stream-providing consistent protocols, Next: Stream-storing, Prev: Stream-printing, Up: Stream + +Stream: providing consistent protocols +-------------------------------------- + +close + Do nothing. This is provided for consistency with file streams + +flush + Do nothing. This is provided for consistency with file streams + + + +File: gst-base.info, Node: Stream-storing, Next: Stream-testing, Prev: Stream-providing consistent protocols, Up: Stream + +Stream: storing +--------------- + +store: anObject + Print Smalltalk code compiling to anObject on the receiver, by + sending storeOn: to anObject. This method is provided so that you + can use cascading and obtain better-looking code + + + +File: gst-base.info, Node: Stream-testing, Prev: Stream-storing, Up: Stream + +Stream: testing +--------------- + +atEnd + Answer whether the stream has got to an end + +isExternalStream + Answer whether the receiver streams on a file or socket. By + default, answer false. + + + +File: gst-base.info, Node: String, Next: Symbol, Prev: Stream, Up: Base classes + +String +====== + +Defined in namespace Smalltalk +Superclass: CharacterArray +Category: Language-Data types + My instances represent ASCII string data types. Being a very + common case, they are particularly optimized. + +* Menu: + +* String class-basic:: (class) +* String class-instance creation:: (class) +* String-built ins:: (instance) +* String-converting:: (instance) +* String-storing:: (instance) +* String-testing functionality:: (instance) +* String-useful functionality:: (instance) + + +File: gst-base.info, Node: String class-basic, Next: String class-instance creation, Up: String + +String class: basic +------------------- + +, aString + Answer a new instance of an ArrayedCollection containing all the + elements in the receiver, followed by all the elements in + aSequenceableCollection + + + +File: gst-base.info, Node: String class-instance creation, Next: String-built ins, Prev: String class-basic, Up: String + +String class: instance creation +------------------------------- + +fromCData: aCObject size: anInteger + Answer a String containing anInteger bytes starting at the + location pointed to by aCObject + + + +File: gst-base.info, Node: String-built ins, Next: String-converting, Prev: String class-instance creation, Up: String + +String: built ins +----------------- + +asCData: aCType + Convert the receiver to a CObject with the given type + +at: index + Answer the index-th character of the receiver. + +at: index put: value + Change the index-th character of the receiver. + +basicAt: index + Answer the index-th character of the receiver. This method must + not be overridden; override at: instead. String overrides it so + that it looks like it contains character objects even though it + contains bytes + +basicAt: index put: value + Change the index-th character of the receiver. This method must + not be overridden; override at: instead. String overrides it so + that it looks like it contains character objects even though it + contains bytes + +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 + location of aString + +replaceFrom: start to: stop withByteArray: 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 + +similarityTo: aString + Answer a number that denotes the similarity between aString and + the receiver. 0 indicates equality, negative numbers indicate + some difference. Implemented as a primitive for speed. + +size + Answer the size of the receiver + + + +File: gst-base.info, Node: String-converting, Next: String-storing, Prev: String-built ins, Up: String + +String: converting +------------------ + +asByteArray + Return the receiver, converted to a ByteArray of ASCII values + +asString + But I already am a String! Really! + +asSymbol + Returns the symbol corresponding to the receiver + + + +File: gst-base.info, Node: String-storing, Next: String-testing functionality, Prev: String-converting, Up: String + +String: storing +--------------- + +storeOn: aStream + Print Smalltalk code compiling to the receiver on aStream + + + +File: gst-base.info, Node: String-testing functionality, Next: String-useful functionality, Prev: String-storing, Up: String + +String: testing functionality +----------------------------- + +isString + Answer `true'. + + + +File: gst-base.info, Node: String-useful functionality, Prev: String-testing functionality, Up: String + +String: useful functionality ---------------------------- -addInstVarName: aString - Add the given instance variable to instance of the receiver +linesDo: aBlock + Send 'aBlock' a substring of the receiver for each newline + delimited line in the receiver + + + +File: gst-base.info, Node: Symbol, Next: SymLink, Prev: String, Up: Base classes + +Symbol +====== + +Defined in namespace Smalltalk +Superclass: String +Category: Language-Implementation + My instances are unique throughout the Smalltalk system. My + instances behave for the most part like strings, except that they + print differently, and I guarantee that any two instances that + have the same printed representation are in fact the same instance. + +* Menu: + +* Symbol class-built ins:: (class) +* Symbol class-instance creation:: (class) +* Symbol class-symbol table:: (class) +* Symbol-basic:: (instance) +* Symbol-built ins:: (instance) +* Symbol-converting:: (instance) +* Symbol-misc:: (instance) +* Symbol-storing:: (instance) +* Symbol-testing:: (instance) +* Symbol-testing functionality:: (instance) + + +File: gst-base.info, Node: Symbol class-built ins, Next: Symbol class-instance creation, Up: Symbol + +Symbol class: built ins +----------------------- + +intern: aString + Private - Same as 'aString asSymbol' + + + +File: gst-base.info, Node: Symbol class-instance creation, Next: Symbol class-symbol table, Prev: Symbol class-built ins, Up: Symbol + +Symbol class: instance creation +------------------------------- + +internCharacter: aCharacter + Answer the one-character symbol associated to the given character. + +new + This method should not be called for instances of this class. + +new: size + This method should not be called for instances of this class. + +with: element1 + Answer a collection whose only element is element1 + +with: element1 with: element2 + Answer a collection whose only elements are the parameters in the + order they were passed -removeInstVarName: aString - Remove the given instance variable from the receiver and recompile - all of the receiver's subclasses +with: element1 with: element2 with: element3 + Answer a collection whose only elements are the parameters in the + order they were passed + +with: element1 with: element2 with: element3 with: element4 + Answer a collection whose only elements are the parameters in the + order they were passed + +with: element1 with: element2 with: element3 with: element4 with: element5 + Answer a collection whose only elements are the parameters in the + order they were passed  -File: gst-base.info, Node: Behavior-method dictionary, Next: Behavior-pluggable behavior (not yet implemented), Prev: Behavior-instance variables, Up: Behavior +File: gst-base.info, Node: Symbol class-symbol table, Next: Symbol-basic, Prev: Symbol class-instance creation, Up: Symbol -Behavior: method dictionary ---------------------------- +Symbol class: symbol table +-------------------------- + +hasInterned: aString ifTrue: aBlock + If aString has not been interned yet, answer false. Else, pass the + interned version to aBlock and answer true. Note that this works + because String>>#hash calculates the same hash value used by the + VM when interning strings into the SymbolTable. Changing one of + the hashing methods without changing the other will break this + method. + +isSymbolString: aString + Answer whether aString has already been interned. Note that this + works because String>>#hash calculates the same hash value used by + the VM when interning strings into the SymbolTable. Changing one + of the hashing methods without changing the other will break this + method. + + calculates + +rebuildTable + Rebuild the SymbolTable, thereby garbage-collecting unreferenced + Symbols. While this process is done, preemption is disabled + because it is not acceptable to leave the SymbolTable in a + partially updated state. Note that this works because + String>>#hash calculates the same hash value used by the VM when + interning strings into the SymbolTable. Changing one of the + hashing methods without changing the other will break this method. + + + +File: gst-base.info, Node: Symbol-basic, Next: Symbol-built ins, Prev: Symbol class-symbol table, Up: Symbol -addSelector: selector withMethod: compiledMethod - Add the given compiledMethod to the method dictionary, giving it - the passed selector. Answer compiledMethod +Symbol: basic +------------- -compile: code - Compile method source. If there are parsing errors, answer nil. - Else, return a CompiledMethod result of compilation +deepCopy + Returns a deep copy of the receiver. As Symbols are identity + objects, we actually return the receiver itself. + +keywords + Answer an array of keywords that compose the receiver, which is + supposed to be a valid message name (#+, #not, #printOn:, + #ifTrue:ifFalse:, etc.) -compile: code ifError: block - Compile method source. If there are parsing errors, invoke - exception block, 'block' passing file name, line number and error. - description. Return a CompiledMethod result of compilation +numArgs + Answer the number of arguments supported by the receiver, which is + supposed to be a valid message name (#+, #not, #printOn:, + #ifTrue:ifFalse:, etc.) - to +shallowCopy + Returns a deep copy of the receiver. As Symbols are identity + objects, we actually return the receiver itself. -compile: code notifying: requestor - Compile method source. If there are parsing errors, send #error: - to the requestor object, else return a CompiledMethod result of - compilation -compileAll - Recompile all selectors in the receiver. Ignore errors. + +File: gst-base.info, Node: Symbol-built ins, Next: Symbol-converting, Prev: Symbol-basic, Up: Symbol -compileAll: aNotifier - Recompile all selectors in the receiver. Notify aNotifier by sen- - ding #error: messages if something goes wrong. +Symbol: built ins +----------------- -compileAllSubclasses - Recompile all selector of all subclasses. Notify aNotifier by sen- - ding #error: messages if something goes wrong. += aSymbol + Answer whether the receiver and aSymbol are the same object -compileAllSubclasses: aNotifier - Recompile all selector of all subclasses. Notify aNotifier by sen- - ding #error: messages if something goes wrong. +hash + Answer an hash value for the receiver. Symbols are optimized for + speed -createGetMethod: what - Create a method accessing the variable `what'. -createGetMethod: what default: value - Create a method accessing the variable `what', with a default value - of `value', using lazy initialization + +File: gst-base.info, Node: Symbol-converting, Next: Symbol-misc, Prev: Symbol-built ins, Up: Symbol -createSetMethod: what - Create a method which sets the variable `what'. +Symbol: converting +------------------ -decompile: selector - Decompile the bytecodes for the given selector. +asString + Answer a String with the same characters as the receiver -defineAsyncCFunc: cFuncNameString - withSelectorArgs: selectorAndArgs args: argsArray Please - lookup the part on the C interface in the manual. +asSymbol + But we are already a Symbol, and furthermore, Symbols are identity + objects! So answer the receiver. -defineCFunc: cFuncNameString - withSelectorArgs: selectorAndArgs returning: returnTypeSymbol - args: argsArray Please lookup the part on the C interface in - the manual. -edit: selector - Open Emacs to edit the method with the passed selector, then - compile it + +File: gst-base.info, Node: Symbol-misc, Next: Symbol-storing, Prev: Symbol-converting, Up: Symbol -methodDictionary - Answer the receiver's method dictionary. Don't modify the method - dictionary unless you exactly know what you're doing +Symbol: misc +------------ -methodDictionary: aDictionary - Set the receiver's method dictionary to aDictionary +species + Answer `String'. -recompile: selector - Recompile the given selector, answer nil if something goes wrong or - the new CompiledMethod if everything's ok. - to + +File: gst-base.info, Node: Symbol-storing, Next: Symbol-testing, Prev: Symbol-misc, Up: Symbol -recompile: selector notifying: aNotifier - Recompile the given selector. If there are parsing errors, send - #error: to the aNotifier object, else return a CompiledMethod - result of compilation +Symbol: storing +--------------- -removeSelector: selector - Remove the given selector from the method dictionary, answer the - CompiledMethod attached to that selector +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. -removeSelector: selector ifAbsent: aBlock - Remove the given selector from the method dictionary, answer the - CompiledMethod attached to that selector. If the selector cannot - be found, answer the result of evaluating aBlock. +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. -selectorsAndMethodsDo: aBlock - Evaluate aBlock, passing for each evaluation a selector that's - defined in the receiver and the corresponding method. +printOn: aStream + Print a represention of the receiver on aStream.  -File: gst-base.info, Node: Behavior-pluggable behavior (not yet implemented), Next: Behavior-printing hierarchy, Prev: Behavior-method dictionary, Up: Behavior +File: gst-base.info, Node: Symbol-testing, Next: Symbol-testing functionality, Prev: Symbol-storing, Up: Symbol -Behavior: pluggable behavior (not yet implemented) --------------------------------------------------- +Symbol: testing +--------------- -compilerClass - Answer the class that can be used to compile parse trees, or nil - if there is none (as is the case now). Not used for methods if - parserClass answers nil, and for doits if evaluatorClass answers - nil. +isSimpleSymbol + Answer whether the receiver must be represented in quoted-string + (e.g. #'abc-def') form. -debuggerClass - Answer which class is to be used to debug a chain of contexts which - includes the receiver. nil means 'do not debug'; other classes are - sent #debuggingPriority and the one with the highest priority is - picked. -decompilerClass - Answer the class that can be used to decompile methods, or nil if - there is none (as is the case now). + +File: gst-base.info, Node: Symbol-testing functionality, Prev: Symbol-testing, Up: Symbol + +Symbol: testing functionality +----------------------------- -evaluatorClass - Answer the class that can be used to evaluate doits, or nil if - there is none (as is the case now). +isString + Answer `false'. -parserClass - Answer the class that can be used to parse methods, or nil if - there is none (as is the case now). +isSymbol + Answer `true'.  -File: gst-base.info, Node: Behavior-printing hierarchy, Next: Behavior-support for lightweight classes, Prev: Behavior-pluggable behavior (not yet implemented), Up: Behavior +File: gst-base.info, Node: SymLink, Next: SystemDictionary, Prev: Symbol, Up: Base classes -Behavior: printing hierarchy ----------------------------- +SymLink +======= + +Defined in namespace Smalltalk +Superclass: Link +Category: Language-Implementation + I am used to implement the Smalltalk symbol table. My instances + are links that contain symbols, and the symbol table basically a + hash table that points to chains of my instances. + +* Menu: + +* SymLink class-instance creation:: (class) +* SymLink-accessing:: (instance) +* SymLink-iteration:: (instance) +* SymLink-printing:: (instance) -hierarchyIndent - Answer the indent to be used by #printHierarchy - 4 by default + +File: gst-base.info, Node: SymLink class-instance creation, Next: SymLink-accessing, Up: SymLink -printHierarchy - Print my entire subclass hierarchy on the terminal. +SymLink class: instance creation +-------------------------------- -printSubclasses: level using: aBlock - I print my name, and then all my subclasses, each indented - according to its position in the hierarchy. I pass aBlock a class - name and a level +symbol: aSymbol nextLink: aSymLink + Answer a new SymLink, which refers to aSymbol and points to + aSymLink as the next SymLink in the chain.  -File: gst-base.info, Node: Behavior-support for lightweight classes, Next: Behavior-testing functionality, Prev: Behavior-printing hierarchy, Up: Behavior +File: gst-base.info, Node: SymLink-accessing, Next: SymLink-iteration, Prev: SymLink class-instance creation, Up: SymLink -Behavior: support for lightweight classes ------------------------------------------ +SymLink: accessing +------------------ -article - Answer an article (`a' or `an') which is ok for the receiver's name +symbol + Answer the Symbol that the receiver refers to in the symbol table. -asClass - Answer the first superclass that is a full-fledged Class object +symbol: aSymbol + Set the Symbol that the receiver refers to in the symbol table. -environment - Answer the namespace that this class belongs to - the same as the - superclass, since Behavior does not support namespaces yet. -name - Answer the class name; this prints to the name of the superclass - enclosed in braces. This class name is used, for example, to print - the receiver. + +File: gst-base.info, Node: SymLink-iteration, Next: SymLink-printing, Prev: SymLink-accessing, Up: SymLink + +SymLink: iteration +------------------ + +do: aBlock + Evaluate aBlock for each symbol in the list + + + +File: gst-base.info, Node: SymLink-printing, Prev: SymLink-iteration, Up: SymLink + +SymLink: printing +----------------- + +printOn: aStream + Print a representation of the receiver on aStream. + + + +File: gst-base.info, Node: SystemDictionary, Next: SystemExceptions.AlreadyDefined, Prev: SymLink, Up: Base classes + +SystemDictionary +================ + +Defined in namespace Smalltalk +Superclass: RootNamespace +Category: Language-Implementation + I am a special namespace. I only have one instance, called + "Smalltalk", which is known to the Smalltalk interpreter. I define + several methods that are "system" related, such as #quitPrimitive. + My instance also helps keep track of dependencies between objects. + +* Menu: + +* SystemDictionary-basic:: (instance) +* SystemDictionary-builtins:: (instance) +* SystemDictionary-C functions:: (instance) +* SystemDictionary-miscellaneous:: (instance) +* SystemDictionary-printing:: (instance) +* SystemDictionary-special accessing:: (instance) + + +File: gst-base.info, Node: SystemDictionary-basic, Next: SystemDictionary-builtins, Up: SystemDictionary + +SystemDictionary: basic +----------------------- + +halt + Interrupt interpreter + +hash + Smalltalk usually contains a reference to itself, avoid infinite + loops + + + +File: gst-base.info, Node: SystemDictionary-builtins, Next: SystemDictionary-C functions, Prev: SystemDictionary-basic, Up: SystemDictionary + +SystemDictionary: builtins +-------------------------- + +basicBacktrace + Prints the method invocation stack backtrace, as an aid to + debugging + +byteCodeCounter + Answer the number of bytecodes executed by the VM + +debug + This methods provides a way to break in the VM code. Set a + breakpoint in _gst_debug and call this method near the point where + you think the bug happens. + +declarationTrace + Answer whether compiled bytecodes are printed on stdout + +declarationTrace: aBoolean + Set whether compiled bytecodes are printed on stdout + +executionTrace + Answer whether executed bytecodes are printed on stdout + +executionTrace: aBoolean + Set whether executed bytecodes are printed on stdout + +getTraceFlag: anIndex + Private - Returns a boolean value which is one of the interpreter's + tracing flags + +setTraceFlag: anIndex to: aBoolean + Private - Sets the value of one of the interpreter's tracing flags + (indicated by 'anIndex') to the value aBoolean. + +verboseTrace + Answer whether execution tracing prints the object on the stack top + +verboseTrace: aBoolean + Set whether execution tracing prints the object on the stack top + + + +File: gst-base.info, Node: SystemDictionary-C functions, Next: SystemDictionary-miscellaneous, Prev: SystemDictionary-builtins, Up: SystemDictionary + +SystemDictionary: C functions +----------------------------- + +getArgc + C call-out to getArgc. Do not modify! + +getArgv: index + C call-out to getArgv. Do not modify! + +getenv: aString + C call-out to getenv. Do not modify! + +putenv: aString + C call-out to putenv. Do not modify! + +system: aString + C call-out to system. Do not modify! + + + +File: gst-base.info, Node: SystemDictionary-miscellaneous, Next: SystemDictionary-printing, Prev: SystemDictionary-C functions, Up: SystemDictionary + +SystemDictionary: miscellaneous +------------------------------- + +arguments + Return the command line arguments after the -a switch + +backtrace + Print a backtrace on the Transcript. + + + +File: gst-base.info, Node: SystemDictionary-printing, Next: SystemDictionary-special accessing, Prev: SystemDictionary-miscellaneous, Up: SystemDictionary + +SystemDictionary: printing +-------------------------- nameIn: aNamespace - Answer the class name when the class is referenced from aNamespace - - a dummy one, since Behavior does not support names. + Answer `'Smalltalk". printOn: aStream in: aNamespace - Answer the class name when the class is referenced from aNamespace - - a dummy one, since Behavior does not support names. + Store Smalltalk code compiling to the receiver + +storeOn: aStream + Store Smalltalk code compiling to the receiver  -File: gst-base.info, Node: Behavior-testing functionality, Next: Behavior-testing the class hierarchy, Prev: Behavior-support for lightweight classes, Up: Behavior +File: gst-base.info, Node: SystemDictionary-special accessing, Prev: SystemDictionary-printing, Up: SystemDictionary -Behavior: testing functionality -------------------------------- +SystemDictionary: special accessing +----------------------------------- -isBehavior - Answer `true'. +addFeature: aFeature + Add the aFeature feature to the Features set + +hasFeatures: features + Returns true if the feature or features in 'features' is one of the + implementation dependent features present + +removeFeature: aFeature + Remove the aFeature feature to the Features set + +version + Answer the current version of the GNU Smalltalk environment + + + +File: gst-base.info, Node: SystemExceptions.AlreadyDefined, Next: SystemExceptions.ArgumentOutOfRange, Prev: SystemDictionary, Up: Base classes + +SystemExceptions.AlreadyDefined +=============================== + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidArgument +Category: Language-Exceptions + I am raised when one tries to define a symbol (class or pool + variable) that is already defined. + +* Menu: +* SystemExceptions.AlreadyDefined-accessing:: (instance)  -File: gst-base.info, Node: Behavior-testing the class hierarchy, Next: Behavior-testing the form of the instances, Prev: Behavior-testing functionality, Up: Behavior +File: gst-base.info, Node: SystemExceptions.AlreadyDefined-accessing, Up: SystemExceptions.AlreadyDefined -Behavior: testing the class hierarchy +SystemExceptions.AlreadyDefined: accessing +------------------------------------------ + +description + Answer a description for the error + + + +File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange, Next: SystemExceptions.BadReturn, Prev: SystemExceptions.AlreadyDefined, Up: Base classes + +SystemExceptions.ArgumentOutOfRange +=================================== + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidArgument +Category: Language-Exceptions + I am raised when one invokes a method with an argument outside of + its valid range. + +* Menu: + +* SystemExceptions.ArgumentOutOfRange class-signaling:: (class) +* SystemExceptions.ArgumentOutOfRange-accessing:: (instance) + + +File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange class-signaling, Next: SystemExceptions.ArgumentOutOfRange-accessing, Up: SystemExceptions.ArgumentOutOfRange + +SystemExceptions.ArgumentOutOfRange class: signaling +---------------------------------------------------- + +signalOn: value mustBeBetween: low and: high + Raise the exception. The given value was not between low and high. + + + +File: gst-base.info, Node: SystemExceptions.ArgumentOutOfRange-accessing, Prev: SystemExceptions.ArgumentOutOfRange class-signaling, Up: SystemExceptions.ArgumentOutOfRange + +SystemExceptions.ArgumentOutOfRange: accessing +---------------------------------------------- + +description + Answer a textual description of the exception. + +high + Answer the highest value that was permitted. + +high: aMagnitude + Set the highest value that was permitted. + +low + Answer the lowest value that was permitted. + +low: aMagnitude + Set the lowest value that was permitted. + + + +File: gst-base.info, Node: SystemExceptions.BadReturn, Next: SystemExceptions.CInterfaceError, Prev: SystemExceptions.ArgumentOutOfRange, Up: Base classes + +SystemExceptions.BadReturn +========================== + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.VMError +Category: Language-Exceptions + I am raised when one tries to return from an already-terminated + method. + +* Menu: + +* SystemExceptions.BadReturn-accessing:: (instance) + + +File: gst-base.info, Node: SystemExceptions.BadReturn-accessing, Up: SystemExceptions.BadReturn + +SystemExceptions.BadReturn: accessing ------------------------------------- -includesBehavior: aClass - Returns true if aClass is the receiver or a superclass of the - receiver. +description + Answer a textual description of the exception. + + + +File: gst-base.info, Node: SystemExceptions.CInterfaceError, Next: SystemExceptions.EmptyCollection, Prev: SystemExceptions.BadReturn, Up: Base classes + +SystemExceptions.CInterfaceError +================================ -inheritsFrom: aClass - Returns true if aClass is a superclass of the receiver +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.PrimitiveFailed +Category: Language-Exceptions + I am raised when an error happens that is related to the C + interface. -kindOfSubclass - Return a string indicating the type of class the receiver is +* Menu: +* SystemExceptions.CInterfaceError-accessing:: (instance)  -File: gst-base.info, Node: Behavior-testing the form of the instances, Next: Behavior-testing the method dictionary, Prev: Behavior-testing the class hierarchy, Up: Behavior +File: gst-base.info, Node: SystemExceptions.CInterfaceError-accessing, Up: SystemExceptions.CInterfaceError -Behavior: testing the form of the instances +SystemExceptions.CInterfaceError: accessing ------------------------------------------- -instSize - Answer how many fixed instance variables are reserved to each of - the receiver's instances - -isBits - Answer whether the instance variables of the receiver's instances - are bytes or words - -isBytes - Answer whether the instance variables of the receiver's instances - are bytes - -isFixed - Answer whether the receiver's instances have no indexed instance - variables +description + Answer a textual description of the exception. -isIdentity - Answer whether x = y implies x == y for instances of the receiver -isImmediate - Answer whether, if x is an instance of the receiver, x copy == x + +File: gst-base.info, Node: SystemExceptions.EmptyCollection, Next: SystemExceptions.EndOfStream, Prev: SystemExceptions.CInterfaceError, Up: Base classes -isPointers - Answer whether the instance variables of the receiver's instances - are objects +SystemExceptions.EmptyCollection +================================ -isVariable - Answer whether the receiver's instances have indexed instance - variables +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when one invokes a method on an empty collection. -isWords - Answer whether the instance variables of the receiver's instances - are words +* Menu: +* SystemExceptions.EmptyCollection-accessing:: (instance)  -File: gst-base.info, Node: Behavior-testing the method dictionary, Prev: Behavior-testing the form of the instances, Up: Behavior +File: gst-base.info, Node: SystemExceptions.EmptyCollection-accessing, Up: SystemExceptions.EmptyCollection -Behavior: testing the method dictionary ---------------------------------------- +SystemExceptions.EmptyCollection: accessing +------------------------------------------- -canUnderstand: selector - Returns true if the instances of the receiver understand the given - selector +description + Answer a textual description of the exception. -hasMethods - Return whether the receiver has any methods defined -includesSelector: selector - Returns true if the local method dictionary contains the given - selector + +File: gst-base.info, Node: SystemExceptions.EndOfStream, Next: SystemExceptions.FileError, Prev: SystemExceptions.EmptyCollection, Up: Base classes -scopeHas: name ifTrue: aBlock - If methods understood by the receiver's instances have access to a - symbol named 'name', evaluate aBlock +SystemExceptions.EndOfStream +============================ -whichClassIncludesSelector: selector - Answer which class in the receiver's hierarchy contains the - implementation of selector used by instances of the class (nil if - none does) +Defined in namespace Smalltalk.SystemExceptions +Superclass: Notification +Category: Language-Exceptions + I am raised when a stream reaches its end. -whichSelectorsAccess: instVarName - Answer a Set of selectors which access the given instance variable +* Menu: -whichSelectorsAssign: instVarName - Answer a Set of selectors which read the given instance variable +* SystemExceptions.EndOfStream class-signaling:: (class) +* SystemExceptions.EndOfStream-accessing:: (instance) -whichSelectorsRead: instVarName - Answer a Set of selectors which read the given instance variable + +File: gst-base.info, Node: SystemExceptions.EndOfStream class-signaling, Next: SystemExceptions.EndOfStream-accessing, Up: SystemExceptions.EndOfStream -whichSelectorsReferTo: anObject - Returns a Set of selectors that refer to anObject +SystemExceptions.EndOfStream class: signaling +--------------------------------------------- -whichSelectorsReferToByteCode: aByteCode - Return the collection of selectors in the class which reference - the byte code, aByteCode +signalOn: stream + Answer an exception reporting the parameter has reached its end.  -File: gst-base.info, Node: BindingDictionary, Next: BlockClosure, Prev: Behavior, Up: Base classes +File: gst-base.info, Node: SystemExceptions.EndOfStream-accessing, Prev: SystemExceptions.EndOfStream class-signaling, Up: SystemExceptions.EndOfStream -BindingDictionary -================= +SystemExceptions.EndOfStream: accessing +--------------------------------------- -Defined in namespace Smalltalk -Superclass: Dictionary -Category: Language-Implementation - I am a special form of dictionary that provides special ways to - access my keys, which typically begin with an uppercase letter; - also, my associations are actually VariableBinding instances. +description + Answer a textual description of the exception. + +stream + Answer the stream whose end was reached. - My keys are (expected to be) symbols, so I use == to match - searched keys to those in the dictionary - this is done expecting - that it brings a bit more speed. +stream: anObject + Set the stream whose end was reached. + + + +File: gst-base.info, Node: SystemExceptions.FileError, Next: SystemExceptions.IndexOutOfRange, Prev: SystemExceptions.EndOfStream, Up: Base classes + +SystemExceptions.FileError +========================== + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.PrimitiveFailed +Category: Language-Exceptions + I am raised when an error happens that is related to the file + system. * Menu: -* BindingDictionary-accessing:: (instance) -* BindingDictionary-copying:: (instance) -* BindingDictionary-forward declarations:: (instance) -* BindingDictionary-printing:: (instance) -* BindingDictionary-testing:: (instance) +* SystemExceptions.FileError-accessing:: (instance)  -File: gst-base.info, Node: BindingDictionary-accessing, Next: BindingDictionary-copying, Up: BindingDictionary +File: gst-base.info, Node: SystemExceptions.FileError-accessing, Up: SystemExceptions.FileError -BindingDictionary: accessing ----------------------------- +SystemExceptions.FileError: accessing +------------------------------------- -define: aSymbol - Define aSymbol as equal to nil inside the receiver. Fail if such - a variable already exists (use #at:put: if you don't want to fail) +description + Answer a textual description of the exception. -doesNotUnderstand: aMessage - Try to map unary selectors to read accesses to the Namespace, and - one-argument keyword selectors to write accesses. Note that: a) - this works only if the selector has an uppercase first letter; and - b) `aNamespace Variable: value' is the same as `aNamespace set: - #Variable to: value', not the same as `aNamespace at: #Variable - put: value' -- the latter always refers to the current namespace, - while the former won't define a new variable, instead searching in - superspaces (and raising an error if the variable cannot be found). -environment - Answer the environment to which the receiver is connected. This - can be the class for a dictionary that holds class variables, or - the super-namespace. In general it is used to compute the - receiver's name. - -environment: anObject - Set the environment to which the receiver is connected. This can - be the class for a dictionary that holds class variables, or the - super-namespace. In general it is used to compute the receiver's - name. - -import: aSymbol from: aNamespace - Add to the receiver the symbol aSymbol, associated to the same - value as in aNamespace. Fail if aNamespace does not contain the - given key. + +File: gst-base.info, Node: SystemExceptions.IndexOutOfRange, Next: SystemExceptions.InvalidArgument, Prev: SystemExceptions.FileError, Up: Base classes -name - Answer the receiver's name, which by default is the same as the - name of the receiver's environment. +SystemExceptions.IndexOutOfRange +================================ -nameIn: aNamespace - Answer the receiver's name when referred to from aNamespace; by - default the computation is deferred to the receiver's environment. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.ArgumentOutOfRange +Category: Language-Exceptions + I am raised when one invokes am accessor method with an index + outside of its valid range. +* Menu: + +* SystemExceptions.IndexOutOfRange class-signaling:: (class) +* SystemExceptions.IndexOutOfRange-accessing:: (instance)  -File: gst-base.info, Node: BindingDictionary-copying, Next: BindingDictionary-forward declarations, Prev: BindingDictionary-accessing, Up: BindingDictionary +File: gst-base.info, Node: SystemExceptions.IndexOutOfRange class-signaling, Next: SystemExceptions.IndexOutOfRange-accessing, Up: SystemExceptions.IndexOutOfRange -BindingDictionary: copying --------------------------- +SystemExceptions.IndexOutOfRange class: signaling +------------------------------------------------- -copy - Answer the receiver. +signalOn: aCollection withIndex: value + The given index was out of range in aCollection. -copyEmpty: newSize - Answer an empty copy of the receiver whose size is newSize -copyEmptyForCollect - Answer an empty copy of the receiver which is filled in to compute - the result of #collect: + +File: gst-base.info, Node: SystemExceptions.IndexOutOfRange-accessing, Prev: SystemExceptions.IndexOutOfRange class-signaling, Up: SystemExceptions.IndexOutOfRange -deepCopy - Answer the receiver. +SystemExceptions.IndexOutOfRange: accessing +------------------------------------------- -shallowCopy - Answer the receiver. +collection + Answer the collection that triggered the error + +collection: anObject + Set the collection that triggered the error + +description + Answer a textual description of the exception. + +messageText + Answer an exception's message text.  -File: gst-base.info, Node: BindingDictionary-forward declarations, Next: BindingDictionary-printing, Prev: BindingDictionary-copying, Up: BindingDictionary +File: gst-base.info, Node: SystemExceptions.InvalidArgument, Next: SystemExceptions.InvalidProcessState, Prev: SystemExceptions.IndexOutOfRange, Up: Base classes -BindingDictionary: forward declarations ---------------------------------------- +SystemExceptions.InvalidArgument +================================ -add: aVariableBinding - Store value as associated to the given key. If any, recycle - Associations temporarily stored by the compiler inside the - `Undeclared' dictionary. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when one invokes a method with an invalid argument. -at: key put: value - Store value as associated to the given key. If any, recycle - Associations temporarily stored by the compiler inside the - `Undeclared' dictionary. +* Menu: +* SystemExceptions.InvalidArgument-accessing:: (instance)  -File: gst-base.info, Node: BindingDictionary-printing, Next: BindingDictionary-testing, Prev: BindingDictionary-forward declarations, Up: BindingDictionary +File: gst-base.info, Node: SystemExceptions.InvalidArgument-accessing, Up: SystemExceptions.InvalidArgument -BindingDictionary: printing ---------------------------- +SystemExceptions.InvalidArgument: accessing +------------------------------------------- -printOn: aStream in: aNamespace - Print the receiver's name when referred to from aNamespace; by - default the computation is deferred to the receiver's environment. +messageText + Answer an exception's message text.  -File: gst-base.info, Node: BindingDictionary-testing, Prev: BindingDictionary-printing, Up: BindingDictionary +File: gst-base.info, Node: SystemExceptions.InvalidProcessState, Next: SystemExceptions.InvalidSize, Prev: SystemExceptions.InvalidArgument, Up: Base classes -BindingDictionary: testing --------------------------- +SystemExceptions.InvalidProcessState +==================================== -species - Answer `IdentityDictionary'. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am an error raised when trying to resume a terminated process, or + stuff like that. + +* Menu: +* SystemExceptions.InvalidProcessState-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure, Next: BlockContext, Prev: BindingDictionary, Up: Base classes +File: gst-base.info, Node: SystemExceptions.InvalidProcessState-accessing, Up: SystemExceptions.InvalidProcessState -BlockClosure -============ +SystemExceptions.InvalidProcessState: accessing +----------------------------------------------- -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - I am a factotum class. My instances represent Smalltalk blocks, - portions of executeable code that have access to the environment - that they were declared in, take parameters, and can be passed - around as objects to be executed by methods outside the current - class. Block closures are sent a message to compute their value - and create a new execution context; this property can be used in - the construction of control flow methods. They also provide some - methods that are used in the creation of Processes from blocks. +description + Answer a textual description of the exception. + + + +File: gst-base.info, Node: SystemExceptions.InvalidSize, Next: SystemExceptions.InvalidValue, Prev: SystemExceptions.InvalidProcessState, Up: Base classes + +SystemExceptions.InvalidSize +============================ + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidArgument +Category: Language-Exceptions + I am raised when an argument has an invalid size. * Menu: -* BlockClosure class-instance creation:: (class) -* BlockClosure class-testing:: (class) -* BlockClosure-accessing:: (instance) -* BlockClosure-built ins:: (instance) -* BlockClosure-control structures:: (instance) -* BlockClosure-exception handling:: (instance) -* BlockClosure-multiple process:: (instance) -* BlockClosure-overriding:: (instance) -* BlockClosure-testing:: (instance) -* BlockClosure-unwind protection:: (instance) +* SystemExceptions.InvalidSize-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure class-instance creation, Next: BlockClosure class-testing, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.InvalidSize-accessing, Up: SystemExceptions.InvalidSize -BlockClosure class: instance creation -------------------------------------- +SystemExceptions.InvalidSize: accessing +--------------------------------------- -block: aCompiledBlock - Answer a BlockClosure that activates the passed CompiledBlock. +description + Answer a textual description of the exception. -numArgs: args numTemps: temps bytecodes: bytecodes depth: depth literals: literalArray - Answer a BlockClosure for a new CompiledBlock that is created using - the passed parameters. To make it work, you must put the - BlockClosure into a CompiledMethod's literals. + +File: gst-base.info, Node: SystemExceptions.InvalidValue, Next: SystemExceptions.MustBeBoolean, Prev: SystemExceptions.InvalidSize, Up: Base classes + +SystemExceptions.InvalidValue +============================= + +Defined in namespace Smalltalk.SystemExceptions +Superclass: Error +Category: Language-Exceptions + I am raised when one invokes a method with an invalid argument. + +* Menu: + +* SystemExceptions.InvalidValue class-signaling:: (class) +* SystemExceptions.InvalidValue-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure class-testing, Next: BlockClosure-accessing, Prev: BlockClosure class-instance creation, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.InvalidValue class-signaling, Next: SystemExceptions.InvalidValue-accessing, Up: SystemExceptions.InvalidValue -BlockClosure class: testing ---------------------------- +SystemExceptions.InvalidValue class: signaling +---------------------------------------------- -isImmediate - Answer whether, if x is an instance of the receiver, x copy == x +signalOn: value + Answer an exception reporting the parameter as invalid. + +signalOn: value reason: reason + Answer an exception reporting `value' as invalid, for the given + reason.  -File: gst-base.info, Node: BlockClosure-accessing, Next: BlockClosure-built ins, Prev: BlockClosure class-testing, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.InvalidValue-accessing, Prev: SystemExceptions.InvalidValue class-signaling, Up: SystemExceptions.InvalidValue -BlockClosure: accessing ------------------------ +SystemExceptions.InvalidValue: accessing +---------------------------------------- -argumentCount - Answer the number of arguments passed to the receiver +description + Answer a textual description of the exception. + +messageText + Answer an exception's message text. + +value + Answer the object that was found to be invalid. + +value: anObject + Set the object that was found to be invalid. -block - Answer the CompiledBlock which contains the receiver's bytecodes -block: aCompiledBlock - Set the CompiledBlock which contains the receiver's bytecodes + +File: gst-base.info, Node: SystemExceptions.MustBeBoolean, Next: SystemExceptions.MutationError, Prev: SystemExceptions.InvalidValue, Up: Base classes + +SystemExceptions.MustBeBoolean +============================== + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when one invokes a boolean method on a non-boolean. + +* Menu: + + +File: gst-base.info, Node: SystemExceptions.MutationError, Next: SystemExceptions.NoRunnableProcess, Prev: SystemExceptions.MustBeBoolean, Up: Base classes + +SystemExceptions.MutationError +============================== -finalIP - Answer the last instruction that can be executed by the receiver +Defined in namespace Smalltalk.SystemExceptions +Superclass: Error +Category: Language-Exceptions + I am an error raised when a class is mutated in an invalid way. -fixTemps - This should fix the values of the temporary variables used in the - block that are ordinarily shared with the method in which the block - is defined. Not defined yet, but it is not harmful that it isn't. - Answer the receiver. +* Menu: -initialIP - Answer the initial instruction pointer into the receiver. +* SystemExceptions.MutationError-accessing:: (instance) -method - Answer the CompiledMethod in which the receiver lies + +File: gst-base.info, Node: SystemExceptions.MutationError-accessing, Up: SystemExceptions.MutationError -numArgs - Answer the number of arguments passed to the receiver +SystemExceptions.MutationError: accessing +----------------------------------------- -numTemps - Answer the number of temporary variables used by the receiver +description + Answer a textual description of the exception. -outerContext - Answer the method/block context which is the immediate outer of - the receiver -outerContext: containingContext - Set the method/block context which is the immediate outer of the - receiver + +File: gst-base.info, Node: SystemExceptions.NoRunnableProcess, Next: SystemExceptions.NotFound, Prev: SystemExceptions.MutationError, Up: Base classes -receiver - Answer the object that is used as `self' when executing the - receiver (if nil, it might mean that the receiver is not valid - though...) +SystemExceptions.NoRunnableProcess +================================== -receiver: anObject - Set the object that is used as `self' when executing the receiver +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.VMError +Category: Language-Exceptions + I am raised when no runnable process can be found in the image. -stackDepth - Answer the number of stack slots needed for the receiver +* Menu: +* SystemExceptions.NoRunnableProcess-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure-built ins, Next: BlockClosure-control structures, Prev: BlockClosure-accessing, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.NoRunnableProcess-accessing, Up: SystemExceptions.NoRunnableProcess -BlockClosure: built ins ------------------------ +SystemExceptions.NoRunnableProcess: accessing +--------------------------------------------- -blockCopy: outerContext - Generate a BlockClosure identical to the receiver, with the given - context as its outer context. +description + Answer a textual description of the exception. -value - Evaluate the receiver passing no parameters -value: arg1 - Evaluate the receiver passing arg1 as the only parameter + +File: gst-base.info, Node: SystemExceptions.NotFound, Next: SystemExceptions.NotImplemented, Prev: SystemExceptions.NoRunnableProcess, Up: Base classes -value: arg1 value: arg2 - Evaluate the receiver passing arg1 and arg2 as the parameters +SystemExceptions.NotFound +========================= -value: arg1 value: arg2 value: arg3 - Evaluate the receiver passing arg1, arg2 and arg3 as the parameters +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidArgument +Category: Language-Exceptions + I am raised when something is searched without success. -valueWithArguments: argumentsArray - Evaluate the receiver passing argArray's elements as the parameters +* Menu: +* SystemExceptions.NotFound class-accessing:: (class) +* SystemExceptions.NotFound-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure-control structures, Next: BlockClosure-exception handling, Prev: BlockClosure-built ins, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.NotFound class-accessing, Next: SystemExceptions.NotFound-accessing, Up: SystemExceptions.NotFound -BlockClosure: control structures --------------------------------- +SystemExceptions.NotFound class: accessing +------------------------------------------ -repeat - Evaluate the receiver 'forever' (actually until a return is - executed or the process is terminated). +signalOn: value what: aString + Raise an exception; aString specifies what was not found (a key, + an object, a class, and so on). -whileFalse - Evaluate the receiver until it returns true -whileFalse: aBlock - Evaluate the receiver. If it returns false, evaluate aBlock and re- - start + +File: gst-base.info, Node: SystemExceptions.NotFound-accessing, Prev: SystemExceptions.NotFound class-accessing, Up: SystemExceptions.NotFound -whileTrue - Evaluate the receiver until it returns false +SystemExceptions.NotFound: accessing +------------------------------------ -whileTrue: aBlock - Evaluate the receiver. If it returns true, evaluate aBlock and re- - start +description + Answer a textual description of the exception.  -File: gst-base.info, Node: BlockClosure-exception handling, Next: BlockClosure-multiple process, Prev: BlockClosure-control structures, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.NotImplemented, Next: SystemExceptions.NotIndexable, Prev: SystemExceptions.NotFound, Up: Base classes -BlockClosure: exception handling --------------------------------- +SystemExceptions.NotImplemented +=============================== -ifError: aBlock - Evaluate the receiver; when #error: is called, pass to aBlock the - receiver and the parameter, and answer the result of evaluating - aBlock. If another exception is raised, it is passed to an outer - handler; if no exception is raised, the result of evaluating the - receiver is returned. - -on: anException do: aBlock - Evaluate the receiver; when anException is signaled, evaluate - aBlock passing a Signal describing the exception. Answer either - the result of evaluating the receiver or the parameter of a - Signal>>#return: - -on: e1 do: b1 on: e2 do: b2 - Evaluate the receiver; when e1 or e2 are signaled, evaluate - respectively b1 or b2, passing a Signal describing the exception. - Answer either the result of evaluating the receiver or the - argument of a Signal>>#return: - -on: e1 do: b1 on: e2 do: b2 on: e3 do: b3 - Evaluate the receiver; when e1, e2 or e3 are signaled, evaluate - respectively b1, b2 or b3, passing a Signal describing the - exception. Answer either the result of evaluating the receiver or - the parameter of a Signal>>#return: - -on: e1 do: b1 on: e2 do: b2 on: e3 do: b3 on: e4 do: b4 - Evaluate the receiver; when e1, e2, e3 or e4 are signaled, evaluate - respectively b1, b2, b3 or b4, passing a Signal describing the - exception. Answer either the result of evaluating the receiver or - the parameter of a Signal>>#return: - -on: e1 do: b1 on: e2 do: b2 on: e3 do: b3 on: e4 do: b4 on: e5 do: b5 - Evaluate the receiver; when e1, e2, e3, e4 or e5 are signaled, - evaluate respectively b1, b2, b3, b4 or b5, passing a Signal - describing the exception. Answer either the result of evaluating - the receiver or the parameter of a Signal>>#return: +Defined in namespace Smalltalk.SystemExceptions +Superclass: Error +Category: Language-Exceptions + I am raised when a method is called that has not been implemented. +* Menu: - -File: gst-base.info, Node: BlockClosure-multiple process, Next: BlockClosure-overriding, Prev: BlockClosure-exception handling, Up: BlockClosure +* SystemExceptions.NotImplemented-accessing:: (instance) -BlockClosure: multiple process ------------------------------- + +File: gst-base.info, Node: SystemExceptions.NotImplemented-accessing, Up: SystemExceptions.NotImplemented -fork - Create a new process executing the receiver and start it +SystemExceptions.NotImplemented: accessing +------------------------------------------ -forkAt: priority - Create a new process executing the receiver with given priority - and start it +description + Answer a textual description of the exception. -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). -newProcess - Create a new process executing the receiver in suspended state. - The priority is the same as for the calling process. The receiver - must not contain returns + +File: gst-base.info, Node: SystemExceptions.NotIndexable, Next: SystemExceptions.NotYetImplemented, Prev: SystemExceptions.NotImplemented, Up: Base classes -newProcessWith: anArray - Create a new process executing the receiver with the passed - arguments, and leave it in suspended state. The priority is the - same as for the calling process. The receiver must not contain - returns +SystemExceptions.NotIndexable +============================= -valueWithoutInterrupts - Evaluate aBlock and delay all interrupts that are requested to the - active process during its execution to after aBlock returns. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when an object is not indexable. -valueWithoutPreemption - Evaluate the receiver with external interrupts disabled. This - effectively disables preemption as long as the block does not - explicitly yield control, wait on semaphores, and the like. +* Menu: +* SystemExceptions.NotIndexable-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure-overriding, Next: BlockClosure-testing, Prev: BlockClosure-multiple process, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.NotIndexable-accessing, Up: SystemExceptions.NotIndexable -BlockClosure: overriding ------------------------- - -deepCopy - Answer the receiver. +SystemExceptions.NotIndexable: accessing +---------------------------------------- -shallowCopy - Answer the receiver. +description + Answer a textual description of the exception.  -File: gst-base.info, Node: BlockClosure-testing, Next: BlockClosure-unwind protection, Prev: BlockClosure-overriding, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.NotYetImplemented, Next: SystemExceptions.PrimitiveFailed, Prev: SystemExceptions.NotIndexable, Up: Base classes -BlockClosure: testing ---------------------- +SystemExceptions.NotYetImplemented +================================== + +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.NotImplemented +Category: Language-Exceptions + I am raised when a method is called that has not been implemented + yet. -hasMethodReturn - Answer whether the block contains a method return +* Menu: +* SystemExceptions.NotYetImplemented-accessing:: (instance)  -File: gst-base.info, Node: BlockClosure-unwind protection, Prev: BlockClosure-testing, Up: BlockClosure +File: gst-base.info, Node: SystemExceptions.NotYetImplemented-accessing, Up: SystemExceptions.NotYetImplemented -BlockClosure: unwind protection -------------------------------- +SystemExceptions.NotYetImplemented: accessing +--------------------------------------------- -ensure: aBlock - Evaluate the receiver; when any exception is signaled exit - returning the result of evaluating aBlock; if no exception is - raised, return the result of evaluating aBlock when the receiver - has ended - -ifCurtailed: aBlock - Evaluate the receiver; if its execution triggers an unwind which - truncates the execution of the block (`curtails' the block), - evaluate aBlock. The three cases which can curtail the execution - of the receiver are: a non-local return in the receiver, a - non-local return in a block evaluated by the receiver which - returns past the receiver itself, and an exception raised and not - resumed during the execution of the receiver. - -valueWithUnwind - Evaluate the receiver. Any errors caused by the block will cause a - backtrace, but execution will continue in the method that sent - #valueWithUnwind, after that call. Example: [ 1 / 0 ] - valueWithUnwind. 'unwind works!' printNl. Important: this method - is public, but it is intended to be used in very special cases (as - a rule of thumb, use it only when the corresponding C code uses - the _gst_prepare_execution_environment and - _gst_finish_execution_environment functions). You should usually - rely on #ensure: and #on:do:. +description + Answer a textual description of the exception.  -File: gst-base.info, Node: BlockContext, Next: Boolean, Prev: BlockClosure, Up: Base classes +File: gst-base.info, Node: SystemExceptions.PrimitiveFailed, Next: SystemExceptions.ProcessBeingTerminated, Prev: SystemExceptions.NotYetImplemented, Up: Base classes -BlockContext -============ +SystemExceptions.PrimitiveFailed +================================ -Defined in namespace Smalltalk -Superclass: ContextPart -Category: Language-Implementation - My instances represent executing Smalltalk blocks, which are - portions of executeable code that have access to the environment - that they were declared in, take parameters, and result from - BlockClosure objects created to be executed by methods outside the - current class. Block contexts are created by messages sent to - compute a closure's value. They contain a stack and also provide - some methods that can be used in inspection or debugging. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.VMError +Category: Language-Exceptions + I am raised when a primitive fails for some reason. * Menu: -* BlockContext-accessing:: (instance) -* BlockContext-printing:: (instance) +* SystemExceptions.PrimitiveFailed-accessing:: (instance)  -File: gst-base.info, Node: BlockContext-accessing, Next: BlockContext-printing, Up: BlockContext - -BlockContext: accessing ------------------------ +File: gst-base.info, Node: SystemExceptions.PrimitiveFailed-accessing, Up: SystemExceptions.PrimitiveFailed -caller - Answer the context that called the receiver - -home - Answer the MethodContext to which the receiver refers, or nil if - it has been optimized away - -isBlock - Answer whether the receiver is a block context +SystemExceptions.PrimitiveFailed: accessing +------------------------------------------- - block +description + Answer a textual description of the exception. -isDisabled - Answers false, because contexts that are skipped when doing a - return are always MethodContexts. BlockContexts are removed from - the chain whenever a non-local return is done, because - MethodContexts need to stay there in case there is a non-local - return from the #ensure: block. -isEnvironment - To create a valid execution environment for the interpreter even - before it starts, GST creates a fake context whose selector is nil - and which can be used as a marker for the current execution - environment. Answer whether the receiver is that kind of context - (always false, since those contexts are always MethodContexts). + +File: gst-base.info, Node: SystemExceptions.ProcessBeingTerminated, Next: SystemExceptions.ProcessTerminated, Prev: SystemExceptions.PrimitiveFailed, Up: Base classes -isUnwind - Answers whether the context must continue execution even after a - non-local return (a return from the enclosing method of a block, or - a call to the #continue: method of ContextPart). Such contexts are - created only by #ensure: and are always MethodContexts. +SystemExceptions.ProcessBeingTerminated +======================================= -nthOuterContext: n - Answer the n-th outer block/method context for the receiver +Defined in namespace Smalltalk.SystemExceptions +Superclass: Notification +Category: Language-Exceptions -outerContext - Answer the outer block/method context for the receiver +* Menu: +* SystemExceptions.ProcessBeingTerminated-accessing:: (instance)  -File: gst-base.info, Node: BlockContext-printing, Prev: BlockContext-accessing, Up: BlockContext +File: gst-base.info, Node: SystemExceptions.ProcessBeingTerminated-accessing, Up: SystemExceptions.ProcessBeingTerminated -BlockContext: printing ----------------------- +SystemExceptions.ProcessBeingTerminated: accessing +-------------------------------------------------- -printOn: aStream - Print a representation for the receiver on aStream +description + Answer a textual description of the exception.  -File: gst-base.info, Node: Boolean, Next: ByteArray, Prev: BlockContext, Up: Base classes +File: gst-base.info, Node: SystemExceptions.ProcessTerminated, Next: SystemExceptions.ReadOnlyObject, Prev: SystemExceptions.ProcessBeingTerminated, Up: Base classes -Boolean -======= +SystemExceptions.ProcessTerminated +================================== -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Data types - I have two instances in the Smalltalk system: true and false. I - provide methods that are conditional on boolean values, such as - conditional execution and loops, and conditional testing, such as - conditional and and conditional or. I should say that I appear to - provide those operations; my subclasses True and False actually - provide those operations. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when somebody tries to resume or interrupt a + terminated process. * Menu: -* Boolean class-testing:: (class) -* Boolean-basic:: (instance) -* Boolean-C hacks:: (instance) -* Boolean-overriding:: (instance) -* Boolean-storing:: (instance) +* SystemExceptions.ProcessTerminated-accessing:: (instance)  -File: gst-base.info, Node: Boolean class-testing, Next: Boolean-basic, Up: Boolean - -Boolean class: testing ----------------------- +File: gst-base.info, Node: SystemExceptions.ProcessTerminated-accessing, Up: SystemExceptions.ProcessTerminated -isIdentity - Answer whether x = y implies x == y for instances of the receiver +SystemExceptions.ProcessTerminated: accessing +--------------------------------------------- -isImmediate - Answer whether, if x is an instance of the receiver, x copy == x +description + Answer a textual description of the exception.  -File: gst-base.info, Node: Boolean-basic, Next: Boolean-C hacks, Prev: Boolean class-testing, Up: Boolean +File: gst-base.info, Node: SystemExceptions.ReadOnlyObject, Next: SystemExceptions.ShouldNotImplement, Prev: SystemExceptions.ProcessTerminated, Up: Base classes -Boolean: basic --------------- +SystemExceptions.ReadOnlyObject +=============================== -& aBoolean - This method's functionality should be implemented by subclasses of - Boolean +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when one writes to a read-only object. -and: aBlock - This method's functionality should be implemented by subclasses of - Boolean +* Menu: -eqv: aBoolean - This method's functionality should be implemented by subclasses of - Boolean +* SystemExceptions.ReadOnlyObject-accessing:: (instance) -ifFalse: falseBlock - This method's functionality should be implemented by subclasses of - Boolean + +File: gst-base.info, Node: SystemExceptions.ReadOnlyObject-accessing, Up: SystemExceptions.ReadOnlyObject -ifFalse: falseBlock ifTrue: trueBlock - This method's functionality should be implemented by subclasses of - Boolean +SystemExceptions.ReadOnlyObject: accessing +------------------------------------------ -ifTrue: trueBlock - This method's functionality should be implemented by subclasses of - Boolean +description + Answer a textual description of the exception. -ifTrue: trueBlock ifFalse: falseBlock - This method's functionality should be implemented by subclasses of - Boolean -not - This method's functionality should be implemented by subclasses of - Boolean + +File: gst-base.info, Node: SystemExceptions.ShouldNotImplement, Next: SystemExceptions.SubclassResponsibility, Prev: SystemExceptions.ReadOnlyObject, Up: Base classes -or: aBlock - This method's functionality should be implemented by subclasses of - Boolean +SystemExceptions.ShouldNotImplement +=================================== -xor: aBoolean - This method's functionality should be implemented by subclasses of - Boolean +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.NotImplemented +Category: Language-Exceptions + I am raised when a method is called that a class wishes that is not + called. -| aBoolean - This method's functionality should be implemented by subclasses of - Boolean +* Menu: +* SystemExceptions.ShouldNotImplement-accessing:: (instance)  -File: gst-base.info, Node: Boolean-C hacks, Next: Boolean-overriding, Prev: Boolean-basic, Up: Boolean +File: gst-base.info, Node: SystemExceptions.ShouldNotImplement-accessing, Up: SystemExceptions.ShouldNotImplement -Boolean: C hacks ----------------- +SystemExceptions.ShouldNotImplement: accessing +---------------------------------------------- -asCBooleanValue - This method's functionality should be implemented by subclasses of - Boolean +description + Answer a textual description of the exception.  -File: gst-base.info, Node: Boolean-overriding, Next: Boolean-storing, Prev: Boolean-C hacks, Up: Boolean +File: gst-base.info, Node: SystemExceptions.SubclassResponsibility, Next: SystemExceptions.UserInterrupt, Prev: SystemExceptions.ShouldNotImplement, Up: Base classes -Boolean: overriding -------------------- +SystemExceptions.SubclassResponsibility +======================================= -deepCopy - Answer the receiver. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.ShouldNotImplement +Category: Language-Exceptions + I am raised when a method is called whose implementation is the + responsibility of concrete subclass. -shallowCopy - Answer the receiver. +* Menu: +* SystemExceptions.SubclassResponsibility-accessing:: (instance)  -File: gst-base.info, Node: Boolean-storing, Prev: Boolean-overriding, Up: Boolean +File: gst-base.info, Node: SystemExceptions.SubclassResponsibility-accessing, Up: SystemExceptions.SubclassResponsibility -Boolean: storing ----------------- +SystemExceptions.SubclassResponsibility: accessing +-------------------------------------------------- -storeOn: aStream - Store on aStream some Smalltalk code which compiles to the receiver +description + Answer a textual description of the exception.  -File: gst-base.info, Node: ByteArray, Next: ByteStream, Prev: Boolean, Up: Base classes +File: gst-base.info, Node: SystemExceptions.UserInterrupt, Next: SystemExceptions.VMError, Prev: SystemExceptions.SubclassResponsibility, Up: Base classes -ByteArray -========= +SystemExceptions.UserInterrupt +============================== -Defined in namespace Smalltalk -Superclass: ArrayedCollection -Category: Collections-Sequenceable - My instances are similar to strings in that they are both - represented as a sequence of bytes, but my individual elements are - integers, where as a String's elements are characters. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.VMError +Category: Language-Exceptions + I am raised when one presses Ctrl-C. * Menu: -* ByteArray-built ins:: (instance) -* ByteArray-converting:: (instance) -* ByteArray-more advanced accessing:: (instance) +* SystemExceptions.UserInterrupt-accessing:: (instance)  -File: gst-base.info, Node: ByteArray-built ins, Next: ByteArray-converting, Up: ByteArray +File: gst-base.info, Node: SystemExceptions.UserInterrupt-accessing, Up: SystemExceptions.UserInterrupt -ByteArray: built ins --------------------- - -asCData: aCType - Convert the receiver to a CObject with the given type +SystemExceptions.UserInterrupt: accessing +----------------------------------------- -byteAt: index - Answer the index-th indexed instance variable of the receiver +description + Answer a textual description of the exception. -byteAt: index put: value - Store the `value' byte in the index-th indexed instance variable - of the receiver -hash - Answer an hash value for the receiver + +File: gst-base.info, Node: SystemExceptions.VMError, Next: SystemExceptions.WrongArgumentCount, Prev: SystemExceptions.UserInterrupt, Up: Base classes -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 +SystemExceptions.VMError +======================== -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), - starting at the replaceStart location of aByteArray +Defined in namespace Smalltalk.SystemExceptions +Superclass: Error +Category: Language-Exceptions + I am an error related to the innards of the system. -replaceFrom: start to: stop withString: aString startingAt: replaceStart - 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 replaceStart location of aString +* Menu: +* SystemExceptions.VMError-accessing:: (instance)  -File: gst-base.info, Node: ByteArray-converting, Next: ByteArray-more advanced accessing, Prev: ByteArray-built ins, Up: ByteArray +File: gst-base.info, Node: SystemExceptions.VMError-accessing, Up: SystemExceptions.VMError -ByteArray: converting ---------------------- +SystemExceptions.VMError: accessing +----------------------------------- -asString - Answer a String whose character's ASCII codes are the receiver's - contents +description + Answer a textual description of the exception.  -File: gst-base.info, Node: ByteArray-more advanced accessing, Prev: ByteArray-converting, Up: ByteArray - -ByteArray: more advanced accessing ----------------------------------- - -charAt: index - Access the C char at the given index in the receiver. The value is - returned as a Smalltalk Character. Indices are 1-based just like - for other Smalltalk access. - -charAt: index put: value - Store as a C char the Smalltalk Character or Integer object - identified by `value', at the given index in the receiver, using - sizeof(char) bytes - i.e. 1 byte. Indices are 1-based just like - for other Smalltalk access. - -doubleAt: index - Access the C double at the given index in the receiver. Indices - are 1-based just like for other Smalltalk access. +File: gst-base.info, Node: SystemExceptions.WrongArgumentCount, Next: SystemExceptions.WrongClass, Prev: SystemExceptions.VMError, Up: Base classes -doubleAt: index put: value - Store the Smalltalk Float object identified by `value', at the - given index in the receiver, writing it like a C double. Indices - are 1-based just like for other Smalltalk access. +SystemExceptions.WrongArgumentCount +=================================== -floatAt: index - Access the C float at the given index in the receiver. Indices - are 1-based just like for other Smalltalk access. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.PrimitiveFailed +Category: Language-Exceptions + I am raised when one tries to evaluate a method (via #perform:...) + or a block but passes the wrong number of arguments. -floatAt: index put: value - Store the Smalltalk Float object identified by `value', at the - given index in the receiver, writing it like a C float. Indices - are 1-based just like for other Smalltalk access. +* Menu: -intAt: index - Access the C int at the given index in the receiver. Indices are - 1-based just like for other Smalltalk access. +* SystemExceptions.WrongArgumentCount-accessing:: (instance) -intAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(int) bytes. Indices are - 1-based just like for other Smalltalk access. + +File: gst-base.info, Node: SystemExceptions.WrongArgumentCount-accessing, Up: SystemExceptions.WrongArgumentCount -longAt: index - Access the C long int at the given index in the receiver. Indices - are 1-based just like for other Smalltalk access. +SystemExceptions.WrongArgumentCount: accessing +---------------------------------------------- -longAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(long) bytes. Indices - are 1-based just like for other Smalltalk access. +description + Answer a textual description of the exception. -objectAt: index - Access the Smalltalk object (OOP) at the given index in the - receiver. Indices are 1-based just like for other Smalltalk - access. - -objectAt: index put: value - Store a pointer (OOP) to the Smalltalk object identified by - `value', at the given index in the receiver. Indices are 1-based - just like for other Smalltalk access. - -shortAt: index - Access the C short int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. -shortAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(short) bytes. Indices - are 1-based just like for other Smalltalk access. + +File: gst-base.info, Node: SystemExceptions.WrongClass, Next: SystemExceptions.WrongMessageSent, Prev: SystemExceptions.WrongArgumentCount, Up: Base classes -stringAt: index - Access the string pointed by the C `char *' at the given index in - the receiver. Indices are 1-based just like for other Smalltalk - access. +SystemExceptions.WrongClass +=========================== -stringAt: index put: value - Store the Smalltalk String object identified by `value', at the - given index in the receiver, writing it like a *FRESHLY ALLOCATED* - C string. It is the caller's responsibility to free it if - necessary. Indices are 1-based just like for other Smalltalk - access. - -ucharAt: index - Access the C unsigned char at the given index in the receiver. - The value is returned as a Smalltalk Character. Indices are - 1-based just like for other Smalltalk access. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.InvalidValue +Category: Language-Exceptions + I am raised when an argument is constrained to be an instance of a + determinate class, and this constraint is not respected by the + caller. -ucharAt: index put: value - Store as a C char the Smalltalk Character or Integer object - identified by `value', at the given index in the receiver, using - sizeof(char) bytes - i.e. 1 byte. Indices are 1-based just like - for other Smalltalk access. - -uintAt: index - Access the C unsigned int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. +* Menu: -uintAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(int) bytes. Indices are - 1-based just like for other Smalltalk access. +* SystemExceptions.WrongClass class-signaling:: (class) +* SystemExceptions.WrongClass-accessing:: (instance) -ulongAt: index - Access the C unsigned long int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. + +File: gst-base.info, Node: SystemExceptions.WrongClass class-signaling, Next: SystemExceptions.WrongClass-accessing, Up: SystemExceptions.WrongClass -ulongAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(long) bytes. Indices - are 1-based just like for other Smalltalk access. +SystemExceptions.WrongClass class: signaling +-------------------------------------------- -unsignedCharAt: index - Access the C unsigned char at the given index in the receiver. - The value is returned as a Smalltalk Character. Indices are - 1-based just like for other Smalltalk access. +signalOn: anObject mustBe: aClassOrArray + Raise an exception. The given object should have been an instance + of one of the classes indicated by aClassOrArray (which should be + a single class or an array of classes). Whether instances of + subclasses are allowed should be clear from the context, though in + general (i.e. with the exception of a few system messages) they + should be. -unsignedCharAt: index put: value - Store as a C char the Smalltalk Character or Integer object - identified by `value', at the given index in the receiver, using - sizeof(char) bytes - i.e. 1 byte. Indices are 1-based just like - for other Smalltalk access. - -unsignedIntAt: index - Access the C unsigned int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. -unsignedIntAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(int) bytes. Indices are - 1-based just like for other Smalltalk access. + +File: gst-base.info, Node: SystemExceptions.WrongClass-accessing, Prev: SystemExceptions.WrongClass class-signaling, Up: SystemExceptions.WrongClass -unsignedLongAt: index - Access the C unsigned long int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. +SystemExceptions.WrongClass: accessing +-------------------------------------- -unsignedLongAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(long) bytes. Indices - are 1-based just like for other Smalltalk access. +description + Answer a textual description of the exception. -unsignedShortAt: index - Access the C unsigned short int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. +messageText + Answer an exception's message text. -unsignedShortAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(short) bytes. Indices - are 1-based just like for other Smalltalk access. +validClasses + Answer the list of classes whose instances would have been valid. -ushortAt: index - Access the C unsigned short int at the given index in the receiver. - Indices are 1-based just like for other Smalltalk access. +validClasses: aCollection + Set the list of classes whose instances would have been valid. -ushortAt: index put: value - Store the Smalltalk Integer object identified by `value', at the - given index in the receiver, using sizeof(short) bytes. Indices - are 1-based just like for other Smalltalk access. +validClassesString + Answer the list of classes whose instances would have been valid, + formatted as a string.  -File: gst-base.info, Node: ByteStream, Next: CAggregate, Prev: ByteArray, Up: Base classes +File: gst-base.info, Node: SystemExceptions.WrongMessageSent, Next: TextCollector, Prev: SystemExceptions.WrongClass, Up: Base classes -ByteStream -========== +SystemExceptions.WrongMessageSent +================================= -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. +Defined in namespace Smalltalk.SystemExceptions +Superclass: SystemExceptions.ShouldNotImplement +Category: Language-Exceptions + I am raised when a method is called that a class wishes that is not + called. This exception also includes a suggestion on which message + should be sent instead * Menu: -* ByteStream-basic:: (instance) +* SystemExceptions.WrongMessageSent class-signaling:: (class) +* SystemExceptions.WrongMessageSent-accessing:: (instance)  -File: gst-base.info, Node: ByteStream-basic, Up: ByteStream +File: gst-base.info, Node: SystemExceptions.WrongMessageSent class-signaling, Next: SystemExceptions.WrongMessageSent-accessing, Up: SystemExceptions.WrongMessageSent -ByteStream: basic ------------------ +SystemExceptions.WrongMessageSent class: signaling +-------------------------------------------------- -next - Return the next *character* in the ByteArray +signalOn: selector useInstead: aSymbol + Raise an exception, signaling which selector was sent and + suggesting a valid alternative. -nextByte - Return the next byte in the byte array -nextByteArray: numBytes - Return the next numBytes bytes in the byte array + +File: gst-base.info, Node: SystemExceptions.WrongMessageSent-accessing, Prev: SystemExceptions.WrongMessageSent class-signaling, Up: SystemExceptions.WrongMessageSent -nextLong - Return the next 4 bytes in the byte array, interpreted as a 32 bit - signed int +SystemExceptions.WrongMessageSent: accessing +-------------------------------------------- -nextPut: aChar - Store aChar on the byte array +messageText + Answer an exception's message text. -nextPutAll: aCollection - Write all the objects in aCollection to the receiver +selector + Answer which selector was sent. -nextPutByte: anInteger - Store anInteger (range: -128..255) on the byte array +selector: aSymbol + Set which selector was sent. -nextPutByteArray: aByteArray - Store aByteArray on the byte array +suggestedSelector + Answer a valid alternative to the selector that was used. -nextPutLong: anInteger - Store anInteger (range: -2^31..2^32-1) on the byte array as 4 bytes +suggestedSelector: aSymbol + Set a valid alternative to the selector that was used. -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 + +File: gst-base.info, Node: TextCollector, Next: Time, Prev: SystemExceptions.WrongMessageSent, Up: Base classes -nextSignedByte - Return the next byte in the byte array, interpreted as a 8 bit - signed number +TextCollector +============= -nextUlong - Return the next 4 bytes in the byte array, interpreted as a 32 bit - unsigned int +Defined in namespace Smalltalk +Superclass: Stream +Category: Streams + I am a thread-safe class that maps between standard Stream + protocol and a single message to another object (its selector is + pluggable and should roughly correspond to #nextPutAll:). I am, + in fact, the class that implements the global Transcript object. -nextUshort - Return the next 2 bytes in the byte array, interpreted as a 16 bit - unsigned int +* Menu: +* TextCollector class-accessing:: (class) +* TextCollector-accessing:: (instance) +* TextCollector-printing:: (instance) +* TextCollector-set up:: (instance) +* TextCollector-storing:: (instance)  -File: gst-base.info, Node: CAggregate, Next: CallinProcess, Prev: ByteStream, Up: Base classes +File: gst-base.info, Node: TextCollector class-accessing, Next: TextCollector-accessing, Up: TextCollector -CAggregate -========== +TextCollector class: accessing +------------------------------ -Defined in namespace Smalltalk -Superclass: CObject -Category: Language-C interface +message: receiverToSelectorAssociation + Answer a new instance of the receiver, that uses the message + identified by anAssociation to perform write operations. + anAssociation's key is the receiver, while its value is the + selector. -* Menu: +new + This method should not be called for instances of this class. -* CAggregate class-accessing:: (class) -* CAggregate-accessing:: (instance)  -File: gst-base.info, Node: CAggregate class-accessing, Next: CAggregate-accessing, Up: CAggregate +File: gst-base.info, Node: TextCollector-accessing, Next: TextCollector-printing, Prev: TextCollector class-accessing, Up: TextCollector -CAggregate class: accessing ---------------------------- +TextCollector: accessing +------------------------ -alignof - Answer the receiver's instances required aligment +cr + Emit a new-line (carriage return) to the Transcript -sizeof - Answer the receiver's instances size +endEntry + Emit two new-lines. This method is present for compatibility with + VisualWorks. +next: anInteger put: anObject + Write anInteger copies of anObject to the Transcript - -File: gst-base.info, Node: CAggregate-accessing, Prev: CAggregate class-accessing, Up: CAggregate +nextPut: aCharacter + Emit aCharacter to the Transcript -CAggregate: accessing ---------------------- +nextPutAll: aString + Write aString to the Transcript -elementType - Answer the type over which the receiver is constructed. +show: aString + Write aString to the Transcript + +showCr: aString + Write aString to the Transcript, followed by a new-line character + +showOnNewLine: aString + Write aString to the Transcript, preceded by a new-line character  -File: gst-base.info, Node: CallinProcess, Next: CArray, Prev: CAggregate, Up: Base classes +File: gst-base.info, Node: TextCollector-printing, Next: TextCollector-set up, Prev: TextCollector-accessing, Up: TextCollector -CallinProcess -============= +TextCollector: printing +----------------------- -Defined in namespace Smalltalk -Superclass: Process -Category: Language-Processes - I represent a unit of computation for which external C code - requested execution, so I must store the returned value once my - computation terminates and I must not survive across image saves - (since those who invoked me no longer exist). I am otherwise - equivalent to a Process. +print: anObject + Print anObject's representation to the Transcript + +printOn: aStream + Print a representation of the receiver onto aStream -* Menu:  -File: gst-base.info, Node: CArray, Next: CArrayCType, Prev: CallinProcess, Up: Base classes +File: gst-base.info, Node: TextCollector-set up, Next: TextCollector-storing, Prev: TextCollector-printing, Up: TextCollector -CArray -====== +TextCollector: set up +--------------------- -Defined in namespace Smalltalk -Superclass: CAggregate -Category: Language-C interface +message + Answer an association representing the message to be sent to + perform write operations. The key is the receiver, the value is + the selector -* Menu: +message: receiverToSelectorAssociation + Set the message to be sent to perform write operations to the one + represented by anAssociation. anAssociation's key is the + receiver, while its value is the selector -* CArray-accessing:: (instance)  -File: gst-base.info, Node: CArray-accessing, Up: CArray +File: gst-base.info, Node: TextCollector-storing, Prev: TextCollector-set up, Up: TextCollector -CArray: accessing ------------------ +TextCollector: storing +---------------------- -alignof - Answer the receiver's required aligment +store: anObject + Print Smalltalk code which evaluates to anObject on the Transcript -sizeof - Answer the receiver's size +storeOn: aStream + Print Smalltalk code which evaluates to the receiver onto aStream  -File: gst-base.info, Node: CArrayCType, Next: CBoolean, Prev: CArray, Up: Base classes +File: gst-base.info, Node: Time, Next: TokenStream, Prev: TextCollector, Up: Base classes -CArrayCType -=========== +Time +==== Defined in namespace Smalltalk -Superclass: CPtrCType -Category: Language-C interface +Superclass: Magnitude +Category: Language-Data types + My instances represent times of the day. I provide methods for + instance creation, methods that access components (hours, minutes, + and seconds) of a time value, and a block execution timing + facility. * Menu: -* CArrayCType class-instance creation:: (class) -* CArrayCType-accessing:: (instance) +* Time class-basic (UTC):: (class) +* Time class-builtins:: (class) +* Time class-clocks:: (class) +* Time class-initialization:: (class) +* Time class-instance creation:: (class) +* Time-accessing (ANSI for DateAndTimes):: (instance) +* Time-accessing (non ANSI & for Durations):: (instance) +* Time-arithmetic:: (instance) +* Time-comparing:: (instance)  -File: gst-base.info, Node: CArrayCType class-instance creation, Next: CArrayCType-accessing, Up: CArrayCType +File: gst-base.info, Node: Time class-basic (UTC), Next: Time class-builtins, Up: Time -CArrayCType class: instance creation ------------------------------------- +Time class: basic (UTC) +----------------------- -elementType: aCType - This method should not be called for instances of this class. +utcNow + Answer a time representing the current time of day in Coordinated + Universal Time (UTC) -elementType: aCType numberOfElements: anInteger - Answer a new instance of CPtrCType that maps an array whose - elements are of the given CType, and whose size is exactly - anInteger elements (of course, anInteger only matters for - allocation, not for access, since no out-of-bounds protection is - provided for C objects). +utcSecondClock + Answer the number of seconds since the midnight of 1/1/1901 (unlike + #secondClock, the reference time is here expressed as UTC, that is + as Coordinated Universal Time).  -File: gst-base.info, Node: CArrayCType-accessing, Prev: CArrayCType class-instance creation, Up: CArrayCType +File: gst-base.info, Node: Time class-builtins, Next: Time class-clocks, Prev: Time class-basic (UTC), Up: Time -CArrayCType: accessing ----------------------- +Time class: builtins +-------------------- -alignof - Answer the alignment of the receiver's instances +primMillisecondClock + Returns the number of milliseconds since midnight. -numberOfElements - Answer the number of elements in the receiver's instances +primSecondClock + Returns the number of seconds to/from 1/1/2000. -sizeof - Answer the size of the receiver's instances +timezone + Answer a String associated with the current timezone (either + standard or daylight-saving) on this operating system. For + example, the answer could be `EST' to indicate Eastern Standard + Time; the answer can be empty and can't be assumed to be a + three-character code such as `EST'. + +timezoneBias + Specifies the current bias, in minutes, for local time translation + for the current time. The bias is the difference, in seconds, + between Coordinated Universal Time (UTC) and local time; a + positive bias indicates that the local timezone is to the east of + Greenwich (e.g. Europe, Asia), while a negative bias indicates + that it is to the west (e.g. America)  -File: gst-base.info, Node: CBoolean, Next: CByte, Prev: CArrayCType, Up: Base classes +File: gst-base.info, Node: Time class-clocks, Next: Time class-initialization, Prev: Time class-builtins, Up: Time -CBoolean -======== +Time class: clocks +------------------ -Defined in namespace Smalltalk -Superclass: CByte -Category: Language-C interface - I return true if a byte is not zero, false otherwise. +millisecondClock + Answer the number of milliseconds since startup. -* Menu: +millisecondClockValue + Answer the number of milliseconds since startup + +millisecondsPerDay + Answer the number of milliseconds in a day + +millisecondsToRun: timedBlock + Answer the number of milliseconds which timedBlock took to run + +secondClock + Answer the number of seconds since the midnight of 1/1/1901 -* CBoolean-accessing:: (instance)  -File: gst-base.info, Node: CBoolean-accessing, Up: CBoolean +File: gst-base.info, Node: Time class-initialization, Next: Time class-instance creation, Prev: Time class-clocks, Up: Time -CBoolean: accessing -------------------- +Time class: initialization +-------------------------- -value - Get the receiver's value - answer true if it is != 0, false if it - is 0. +initialize + Initialize the Time class after the image has been bootstrapped -value: aBoolean - Set the receiver's value - it's the same as for CBytes, but we get - a Boolean, not a Character +update: aspect + Private - Initialize the receiver's instance variables  -File: gst-base.info, Node: CByte, Next: CChar, Prev: CBoolean, Up: Base classes +File: gst-base.info, Node: Time class-instance creation, Next: Time-accessing (ANSI for DateAndTimes), Prev: Time class-initialization, Up: Time -CByte -===== +Time class: instance creation +----------------------------- -Defined in namespace Smalltalk -Superclass: CUChar -Category: Language-C interface - You're a marine. You adapt - you improvise - you overcome +fromSeconds: secondCount + Answer a Time representing secondCount seconds past midnight - - Gunnery Sgt. Thomas Highway - Heartbreak Ridge +hours: h + Answer a Time that is the given number of hours past midnight -* Menu: +hours: h minutes: m seconds: s + Answer a Time that is the given number of hours, minutes and + seconds past midnight -* CByte class-conversion:: (class) -* CByte-accessing:: (instance) +minutes: m + Answer a Time that is the given number of minutes past midnight - -File: gst-base.info, Node: CByte class-conversion, Next: CByte-accessing, Up: CByte +new + Answer a Time representing midnight -CByte class: conversion ------------------------ +now + Answer a time representing the current time of day -scalarIndex - Nothing special in the default case - answer a CType for the - receiver +readFrom: aStream + Parse an instance of the receiver (hours/minutes/seconds) from + aStream -type - Nothing special in the default case - answer a CType for the - receiver +seconds: s + Answer a Time that is the given number of seconds past midnight  -File: gst-base.info, Node: CByte-accessing, Prev: CByte class-conversion, Up: CByte +File: gst-base.info, Node: Time-accessing (ANSI for DateAndTimes), Next: Time-accessing (non ANSI & for Durations), Prev: Time class-instance creation, Up: Time -CByte: accessing ----------------- +Time: accessing (ANSI for DateAndTimes) +--------------------------------------- -scalarIndex - Nothing special in the default case - answer the receiver's CType +hour + Answer the number of hours in the receiver -type - Answer a CType for the receiver +hour12 + Answer the hour in a 12-hour clock -value - Answer the value the receiver is pointing to. The returned value - is a SmallInteger +hour24 + Answer the hour in a 24-hour clock -value: aValue - Set the receiver to point to the value, aValue (a SmallInteger). +minute + Answer the number of minutes in the receiver + +second + Answer the number of seconds in the receiver  -File: gst-base.info, Node: CChar, Next: CCompound, Prev: CByte, Up: Base classes +File: gst-base.info, Node: Time-accessing (non ANSI & for Durations), Next: Time-arithmetic, Prev: Time-accessing (ANSI for DateAndTimes), Up: Time -CChar -===== +Time: accessing (non ANSI & for Durations) +------------------------------------------ -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface +asSeconds + Answer `seconds'. -* Menu: +hours + Answer the number of hours in the receiver + +minutes + Answer the number of minutes in the receiver + +seconds + Answer the number of seconds in the receiver -* CChar class-accessing:: (class) -* CChar-accessing:: (instance)  -File: gst-base.info, Node: CChar class-accessing, Next: CChar-accessing, Up: CChar +File: gst-base.info, Node: Time-arithmetic, Next: Time-comparing, Prev: Time-accessing (non ANSI & for Durations), Up: Time -CChar class: accessing ----------------------- +Time: arithmetic +---------------- -alignof - Answer the receiver's instances required aligment +addTime: timeAmount + Answer a new Time that is timeAmount seconds after the receiver -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type +printOn: aStream + Print a representation of the receiver on aStream -sizeof - Answer the receiver's instances size +subtractTime: timeAmount + Answer a new Time that is timeAmount seconds before the receiver  -File: gst-base.info, Node: CChar-accessing, Prev: CChar class-accessing, Up: CChar +File: gst-base.info, Node: Time-comparing, Prev: Time-arithmetic, Up: Time -CChar: accessing ----------------- +Time: comparing +--------------- -alignof - Answer the receiver's required aligment +< aTime + Answer whether the receiver is less than aTime -scalarIndex - Private - Answer an index referring to the receiver's scalar type += aTime + Answer whether the receiver is equal to aTime -sizeof - Answer the receiver's size +hash + Answer an hash value for the receiver  -File: gst-base.info, Node: CCompound, Next: CDouble, Prev: CChar, Up: Base classes +File: gst-base.info, Node: TokenStream, Next: TrappableEvent, Prev: Time, Up: Base classes -CCompound -========= +TokenStream +=========== Defined in namespace Smalltalk -Superclass: CObject -Category: Language-C interface +Superclass: Stream +Category: Streams-Collections + I am not a typical part of the Smalltalk kernel class hierarchy. + I operate on a stream of characters and return distinct + whitespace-delimited groups of characters; I am used to parse the + parameters of class-creation methods. + + Basically, I parse off whitespace separated tokens as substrings + and return them (next). If the entire contents of the string are + requested, I return them as an Array containing the individual + strings. * Menu: -* CCompound class-instance creation:: (class) -* CCompound class-subclass creation:: (class) -* CCompound-instance creation:: (instance) +* TokenStream class-instance creation:: (class) +* TokenStream-basic:: (instance) +* TokenStream-write methods:: (instance)  -File: gst-base.info, Node: CCompound class-instance creation, Next: CCompound class-subclass creation, Up: CCompound +File: gst-base.info, Node: TokenStream class-instance creation, Next: TokenStream-basic, Up: TokenStream -CCompound class: instance creation ----------------------------------- +TokenStream class: instance creation +------------------------------------ -new - Allocate a new instance of the receiver. To free the memory after - GC, remember to call #addToBeFinalized. +on: aString + Answer a TokenStream working on aString -type - Answer a CType for the receiver +onStream: aStream + Answer a TokenStream working on the collection on which aStream is + in turn streaming.  -File: gst-base.info, Node: CCompound class-subclass creation, Next: CCompound-instance creation, Prev: CCompound class-instance creation, Up: CCompound +File: gst-base.info, Node: TokenStream-basic, Next: TokenStream-write methods, Prev: TokenStream class-instance creation, Up: TokenStream -CCompound class: subclass creation ----------------------------------- +TokenStream: basic +------------------ -alignof - Answer 1, the alignment of an empty struct +atEnd + Answer whether the input stream has no more tokens. -compileDeclaration: array - This method's functionality should be implemented by subclasses of - CCompound +next + Answer a new whitespace-separated token from the input stream -compileDeclaration: array inject: startOffset into: aBlock - Compile methods that implement the declaration in array. To - compute the offset after each field, the value of the old offset - plus the new field's size is passed to aBlock, together with the - new field's alignment requirements. - -compileSize: size align: alignment - Private - Compile sizeof and alignof methods - -computeAggregateType: type block: aBlock - Private - Called by computeTypeString:block: for pointers/arrays. - Format of type: (array int 3) or (ptr FooStruct) - -computeArrayType: type block: aBlock - Private - Called by computeAggregateType:block: for arrays - -computePtrType: type block: aBlock - Private - Called by computeAggregateType:block: for pointers - -computeTypeString: type block: aBlock - Private - Pass the size, alignment, and description of CType for - aBlock, given the field description in `type' (the second element - of each pair). - -emitInspectTo: str for: name - Private - Emit onto the given stream the code for adding the given - selector to the CCompound's inspector. -initialize - Initialize the receiver's TypeMap + +File: gst-base.info, Node: TokenStream-write methods, Prev: TokenStream-basic, Up: TokenStream + +TokenStream: write methods +-------------------------- + +nextPut: anObject + This method should not be called for instances of this class. + + + +File: gst-base.info, Node: TrappableEvent, Next: True, Prev: TokenStream, Up: Base classes -newStruct: structName declaration: array - The old way to create a CStruct. Superseded by - #subclass:declaration:... +TrappableEvent +============== -sizeof - Answer 0, the size of an empty struct +Defined in namespace Smalltalk +Superclass: Object +Category: Language-Exceptions + I am an abstract class for arguments passed to #on:do:... methods + in BlockClosure. I define a bunch of methods that apply to + CoreExceptions and ExceptionSets: they allow you to create + ExceptionSets and examine all the exceptions to be trapped. -subclass: structName declaration: array - classVariableNames: cvn poolDictionaries: pd category: category - Create a new class with the given name that contains code to - implement the given C struct. All the parameters except `array' - are the same as for a standard class creation message; see - documentation for more information +* Menu: +* TrappableEvent-enumerating:: (instance) +* TrappableEvent-instance creation:: (instance)  -File: gst-base.info, Node: CCompound-instance creation, Prev: CCompound class-subclass creation, Up: CCompound +File: gst-base.info, Node: TrappableEvent-enumerating, Next: TrappableEvent-instance creation, Up: TrappableEvent -CCompound: instance creation ----------------------------- +TrappableEvent: enumerating +--------------------------- -inspect - Inspect the contents of the receiver +allExceptionsDo: aBlock + Execute aBlock, passing it an Exception for every exception in the + receiver. -inspectSelectorList - Answer a list of selectors whose return values should be inspected - by #inspect. +goodness: exception + Answer how good the receiver is at handling the given exception. A + negative value indicates that the receiver is not able to handle + the exception. + +handles: exception + Answer whether the receiver handles `exception'.  -File: gst-base.info, Node: CDouble, Next: CFloat, Prev: CCompound, Up: Base classes +File: gst-base.info, Node: TrappableEvent-instance creation, Prev: TrappableEvent-enumerating, Up: TrappableEvent + +TrappableEvent: instance creation +--------------------------------- + +, aTrappableEvent + Answer an ExceptionSet containing all the exceptions in the + receiver and all the exceptions in aTrappableEvent -CDouble -======= + + +File: gst-base.info, Node: True, Next: UndefinedObject, Prev: TrappableEvent, Up: Base classes + +True +==== Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface +Superclass: Boolean +Category: Language-Data types + I represent truth and justice in the world. My motto is "semper + veritatis". * Menu: -* CDouble class-accessing:: (class) -* CDouble-accessing:: (instance) +* True-basic:: (instance) +* True-C hacks:: (instance) +* True-printing:: (instance) diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-3 smalltalk-2.1.7/doc/gst-base.info-3 --- smalltalk-2.1.6/doc/gst-base.info-3 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-3 2003-12-17 14:58:53.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. +This is gst-base.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-base-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Base classes: (gst-base). The GNU Smalltalk base classes. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -24,1567 +24,5318 @@ There are no Cover Texts and no Invariant Sections; this text, along with its equivalent in the printed manual, constitutes the Title Page.  -File: gst-base.info, Node: CDouble class-accessing, Next: CDouble-accessing, Up: CDouble +File: gst-base.info, Node: True-basic, Next: True-C hacks, Up: True -CDouble class: accessing ------------------------- +True: basic +----------- + +& aBoolean + We are true - anded with anything, we always answer the other + operand + +and: aBlock + We are true - anded with anything, we always answer the other + operand, so evaluate aBlock + +eqv: aBoolean + Answer whether the receiver and aBoolean represent the same + boolean value + +ifFalse: falseBlock + We are true - answer nil + +ifFalse: falseBlock ifTrue: trueBlock + We are true - evaluate trueBlock + +ifTrue: trueBlock + We are true - evaluate trueBlock -alignof - Answer the receiver's instances required aligment +ifTrue: trueBlock ifFalse: falseBlock + We are true - evaluate trueBlock -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type +not + We are true - answer false -sizeof - Answer the receiver's instances size +or: aBlock + We are true - ored with anything, we always answer true + +xor: aBoolean + Answer whether the receiver and aBoolean represent different + boolean values + +| aBoolean + We are true - ored with anything, we always answer true  -File: gst-base.info, Node: CDouble-accessing, Prev: CDouble class-accessing, Up: CDouble +File: gst-base.info, Node: True-C hacks, Next: True-printing, Prev: True-basic, Up: True + +True: C hacks +------------- + +asCBooleanValue + Answer `1'. -CDouble: accessing ------------------- -alignof - Answer the receiver's required aligment + +File: gst-base.info, Node: True-printing, Prev: True-C hacks, Up: True -scalarIndex - Private - Answer an index referring to the receiver's scalar type +True: printing +-------------- -sizeof - Answer the receiver's size +printOn: aStream + Print a representation of the receiver on aStream  -File: gst-base.info, Node: CFloat, Next: CFunctionDescriptor, Prev: CDouble, Up: Base classes +File: gst-base.info, Node: UndefinedObject, Next: ValueAdaptor, Prev: True, Up: Base classes -CFloat -====== +UndefinedObject +=============== Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface +Superclass: Object +Category: Language-Implementation + I have the questionable distinction of being a class with only one + instance, which is the object "nil". * Menu: -* CFloat class-accessing:: (class) -* CFloat-accessing:: (instance) +* UndefinedObject-basic:: (instance) +* UndefinedObject-class creation:: (instance) +* UndefinedObject-class creation - alternative:: (instance) +* UndefinedObject-CObject interoperability:: (instance) +* UndefinedObject-dependents access:: (instance) +* UndefinedObject-printing:: (instance) +* UndefinedObject-storing:: (instance) +* UndefinedObject-testing:: (instance)  -File: gst-base.info, Node: CFloat class-accessing, Next: CFloat-accessing, Up: CFloat +File: gst-base.info, Node: UndefinedObject-basic, Next: UndefinedObject-class creation, Up: UndefinedObject -CFloat class: accessing ------------------------ +UndefinedObject: basic +---------------------- -alignof - Answer the receiver's instances required aligment +copy + Answer the receiver. -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type +deepCopy + Answer the receiver. -sizeof - Answer the receiver's instances size +shallowCopy + Answer the receiver.  -File: gst-base.info, Node: CFloat-accessing, Prev: CFloat class-accessing, Up: CFloat +File: gst-base.info, Node: UndefinedObject-class creation, Next: UndefinedObject-class creation - alternative, Prev: UndefinedObject-basic, Up: UndefinedObject + +UndefinedObject: class creation +------------------------------- -CFloat: accessing ------------------ +metaclassFor: classNameString + Create a Metaclass object for the given class name. The metaclass + is a subclass of Class -alignof - Answer the receiver's required aligment +removeSubclass: aClass + Ignored - necessary to support disjoint class hierarchies -scalarIndex - Private - Answer an index referring to the receiver's scalar type +subclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a fixed subclass of the + receiver with the given name, instance variables, class variables, + pool dictionaries and category. If the class is already defined, + if necessary, recompile everything needed. -sizeof - Answer the receiver's size +variableByteSubclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a byte variable subclass of + the receiver with the given name, instance variables, class + variables, pool dictionaries and category. If the class is already + defined, if necessary, recompile everything needed. + +variableSubclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a variable pointer subclass of + the receiver with the given name, instance variables, class + variables, pool dictionaries and category. If the class is already + defined, if necessary, recompile everything needed. + +variableWordSubclass: classNameString + instanceVariableNames: stringInstVarNames classVariableNames: + stringOfClassVarNames poolDictionaries: stringOfPoolNames + category: categoryNameString Define a word variable subclass of + the receiver with the given name, instance variables, class + variables, pool dictionaries and category. If the class is already + defined, if necessary, recompile everything needed.  -File: gst-base.info, Node: CFunctionDescriptor, Next: Character, Prev: CFloat, Up: Base classes +File: gst-base.info, Node: UndefinedObject-class creation - alternative, Next: UndefinedObject-CObject interoperability, Prev: UndefinedObject-class creation, Up: UndefinedObject -CFunctionDescriptor -=================== +UndefinedObject: class creation - alternative +--------------------------------------------- -Defined in namespace Smalltalk -Superclass: Object -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. +subclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk -* Menu: +subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableByteSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableByteSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableWordSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk + +variableWordSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames + Don't use this, it is only present to file in from IBM Smalltalk -* CFunctionDescriptor class-instance creation:: (class) -* CFunctionDescriptor class-testing:: (class) -* CFunctionDescriptor-accessing:: (instance) -* CFunctionDescriptor-calling:: (instance) -* CFunctionDescriptor-printing:: (instance)  -File: gst-base.info, Node: CFunctionDescriptor class-instance creation, Next: CFunctionDescriptor class-testing, Up: CFunctionDescriptor +File: gst-base.info, Node: UndefinedObject-CObject interoperability, Next: UndefinedObject-dependents access, Prev: UndefinedObject-class creation - alternative, Up: UndefinedObject -CFunctionDescriptor class: instance creation --------------------------------------------- +UndefinedObject: CObject interoperability +----------------------------------------- -for: funcNameString returning: returnTypeSymbol withArgs: argsArray - Private - Answer a CFunctionDescriptor +free + Do nothing, a NULL pointer can be safely freed.  -File: gst-base.info, Node: CFunctionDescriptor class-testing, Next: CFunctionDescriptor-accessing, Prev: CFunctionDescriptor class-instance creation, Up: CFunctionDescriptor +File: gst-base.info, Node: UndefinedObject-dependents access, Next: UndefinedObject-printing, Prev: UndefinedObject-CObject interoperability, Up: UndefinedObject -CFunctionDescriptor class: testing +UndefinedObject: dependents access ---------------------------------- -addressOf: function - Answer whether a function is registered (on the C side) with the - given name or is dynamically loadable. +addDependent: ignored + Fail, nil does not support dependents. -isFunction: function - Answer whether a function is registered (on the C side) with the - given name. +release + Ignore this call, nil does not support dependents.  -File: gst-base.info, Node: CFunctionDescriptor-accessing, Next: CFunctionDescriptor-calling, Prev: CFunctionDescriptor class-testing, Up: CFunctionDescriptor - -CFunctionDescriptor: accessing ------------------------------- +File: gst-base.info, Node: UndefinedObject-printing, Next: UndefinedObject-storing, Prev: UndefinedObject-dependents access, Up: UndefinedObject -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 +UndefinedObject: printing +------------------------- -name - Answer the name of the function (on the C side) represented by the - receiver +printOn: aStream + Print a representation of the receiver on aStream.  -File: gst-base.info, Node: CFunctionDescriptor-calling, Next: CFunctionDescriptor-printing, Prev: CFunctionDescriptor-accessing, Up: CFunctionDescriptor +File: gst-base.info, Node: UndefinedObject-storing, Next: UndefinedObject-testing, Prev: UndefinedObject-printing, Up: UndefinedObject -CFunctionDescriptor: calling ----------------------------- +UndefinedObject: storing +------------------------ -asyncCallFrom: 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. - -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. - -callFrom: 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. - -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. +storeOn: aStream + Store Smalltalk code compiling to the receiver on aStream.  -File: gst-base.info, Node: CFunctionDescriptor-printing, Prev: CFunctionDescriptor-calling, Up: CFunctionDescriptor +File: gst-base.info, Node: UndefinedObject-testing, Prev: UndefinedObject-storing, Up: UndefinedObject -CFunctionDescriptor: printing ------------------------------ +UndefinedObject: testing +------------------------ -printOn: aStream - Print a representation of the receiver onto aStream +ifNil: nilBlock + Evaluate nilBlock if the receiver is nil, else answer nil + +ifNil: nilBlock ifNotNil: notNilBlock + Evaluate nilBlock if the receiver is nil, else evaluate + notNilBlock, passing the receiver. + +ifNotNil: notNilBlock + Evaluate notNilBlock if the receiver is not nil, passing the + receiver. Else answer nil + +ifNotNil: notNilBlock ifNil: nilBlock + Evaluate nilBlock if the receiver is nil, else evaluate + notNilBlock, passing the receiver. + +isNil + Answer whether the receiver is the undefined object nil. Always + answer true. + +notNil + Answer whether the receiver is not the undefined object nil. Always + answer false.  -File: gst-base.info, Node: Character, Next: CharacterArray, Prev: CFunctionDescriptor, Up: Base classes +File: gst-base.info, Node: ValueAdaptor, Next: ValueHolder, Prev: UndefinedObject, Up: Base classes -Character -========= +ValueAdaptor +============ Defined in namespace Smalltalk -Superclass: Magnitude +Superclass: Object Category: Language-Data types - My instances represent the 256 characters of the character set. I - provide messages to translate between integers and character - objects, and provide names for some of the common unprintable - characters. + My subclasses are used to access data from different objects with + a consistent protocol. However, I'm an abstract class. * Menu: -* Character class-built ins:: (class) -* Character class-constants:: (class) -* Character class-initializing lookup tables:: (class) -* Character class-instance creation:: (class) -* Character class-testing:: (class) -* Character-built ins:: (instance) -* Character-coercion methods:: (instance) -* Character-comparing:: (instance) -* Character-converting:: (instance) -* Character-printing:: (instance) -* Character-storing:: (instance) -* Character-testing:: (instance) -* Character-testing functionality:: (instance) +* ValueAdaptor class-creating instances:: (class) +* ValueAdaptor-accessing:: (instance) +* ValueAdaptor-printing:: (instance)  -File: gst-base.info, Node: Character class-built ins, Next: Character class-constants, Up: Character +File: gst-base.info, Node: ValueAdaptor class-creating instances, Next: ValueAdaptor-accessing, Up: ValueAdaptor -Character class: built ins --------------------------- +ValueAdaptor class: creating instances +-------------------------------------- + +new + We don't know enough of subclasses to have a shared implementation + of new -asciiValue: anInteger - Returns the character object corresponding to anInteger. Error if - anInteger is not an integer, or not in 0..255. #codePoint:, - #asciiValue: and #value: are synonyms. -codePoint: anInteger - Returns the character object corresponding to anInteger. Error if - anInteger is not an integer, or not in 0..255. #codePoint:, - #asciiValue: and #value: are synonyms. + +File: gst-base.info, Node: ValueAdaptor-accessing, Next: ValueAdaptor-printing, Prev: ValueAdaptor class-creating instances, Up: ValueAdaptor -value: anInteger - Returns the character object corresponding to anInteger. Error if - anInteger is not an integer, or not in 0..255. #codePoint:, - #asciiValue: and #value: are synonyms. +ValueAdaptor: accessing +----------------------- + +value + Retrive the value of the receiver. Must be implemented by + ValueAdaptor's subclasses + +value: anObject + Set the value of the receiver. Must be implemented by + ValueAdaptor's subclasses  -File: gst-base.info, Node: Character class-constants, Next: Character class-initializing lookup tables, Prev: Character class-built ins, Up: Character +File: gst-base.info, Node: ValueAdaptor-printing, Prev: ValueAdaptor-accessing, Up: ValueAdaptor -Character class: constants --------------------------- +ValueAdaptor: printing +---------------------- -backspace - Returns the character 'backspace' +printOn: aStream + Print a representation of the receiver -bell - Returns the character 'bel' -cr - Returns the character 'cr' + +File: gst-base.info, Node: ValueHolder, Next: VariableBinding, Prev: ValueAdaptor, Up: Base classes -eof - Returns the character 'eof', also known as 'sub' +ValueHolder +=========== -eot - Returns the character 'eot', also known as 'Ctrl-D' +Defined in namespace Smalltalk +Superclass: ValueAdaptor +Category: Language-Data types + I store my value in a variable. For example, you can use me to + pass num- bers by reference. Just instance me before calling a + method and ask for my value after that method. There are a lot of + other creative uses for my intances, though. -esc - Returns the character 'esc' +* Menu: -lf - Returns the character 'lf', also known as 'nl' +* ValueHolder class-creating instances:: (class) +* ValueHolder-accessing:: (instance) +* ValueHolder-initializing:: (instance) -newPage - Returns the character 'newPage', also known as 'ff' + +File: gst-base.info, Node: ValueHolder class-creating instances, Next: ValueHolder-accessing, Up: ValueHolder -nl - Returns the character 'nl', also known as 'lf' +ValueHolder class: creating instances +------------------------------------- -nul - Returns the character 'nul' +new + Create a ValueHolder whose starting value is nil -space - Returns the character 'space' +null + Answer the sole instance of NullValueHolder -tab - Returns the character 'tab' +with: anObject + Create a ValueHolder whose starting value is anObject  -File: gst-base.info, Node: Character class-initializing lookup tables, Next: Character class-instance creation, Prev: Character class-constants, Up: Character +File: gst-base.info, Node: ValueHolder-accessing, Next: ValueHolder-initializing, Prev: ValueHolder class-creating instances, Up: ValueHolder -Character class: initializing lookup tables -------------------------------------------- +ValueHolder: accessing +---------------------- -initialize - Initialize the lookup table which is used to make case and - digit-to-char conversions faster. Indices in Table are ASCII - values incremented by one. Indices 1-256 classify chars (0 = - nothing special, 2 = separator, 48 = digit, 55 = uppercase, 3 = - lowercase), indices 257-512 map to lowercase chars, indices - 513-768 map to uppercase chars. +value + Get the value of the receiver. + +value: anObject + Set the value of the receiver.  -File: gst-base.info, Node: Character class-instance creation, Next: Character class-testing, Prev: Character class-initializing lookup tables, Up: Character +File: gst-base.info, Node: ValueHolder-initializing, Prev: ValueHolder-accessing, Up: ValueHolder -Character class: instance creation ----------------------------------- +ValueHolder: initializing +------------------------- -digitValue: anInteger - Returns a character that corresponds to anInteger. 0-9 map to - $0-$9, 10-35 map to $A-$Z +initialize + Private - set the initial value of the receiver  -File: gst-base.info, Node: Character class-testing, Next: Character-built ins, Prev: Character class-instance creation, Up: Character +File: gst-base.info, Node: VariableBinding, Next: VersionableObjectProxy, Prev: ValueHolder, Up: Base classes -Character class: testing ------------------------- +VariableBinding +=============== -isIdentity - Answer whether x = y implies x == y for instances of the receiver +Defined in namespace Smalltalk +Superclass: HomedAssociation +Category: Language-Data types + My instances represent a mapping between a key in a namespace and + its value. I print different than a normal Association, and know + about my parent namespace, otherwise my behavior is the same. -isImmediate - Answer whether, if x is an instance of the receiver, x copy == x +* Menu: +* VariableBinding-printing:: (instance) +* VariableBinding-saving and loading:: (instance) +* VariableBinding-storing:: (instance) +* VariableBinding-testing:: (instance)  -File: gst-base.info, Node: Character-built ins, Next: Character-coercion methods, Prev: Character class-testing, Up: Character +File: gst-base.info, Node: VariableBinding-printing, Next: VariableBinding-saving and loading, Up: VariableBinding -Character: built ins --------------------- +VariableBinding: printing +------------------------- -= char - Boolean return value; true if the characters are equal +path + Print a dotted path that compiles to the receiver's value -asciiValue - Returns the integer value corresponding to self. #codePoint, - #asciiValue, #value, and #asInteger are synonyms. - -asInteger - Returns the integer value corresponding to self. #codePoint, - #asciiValue, #value, and #asInteger are synonyms. - -codePoint - Returns the integer value corresponding to self. #codePoint, - #asciiValue, #value, and #asInteger are synonyms. +printOn: aStream + Put on aStream a representation of the receiver -value - Returns the integer value corresponding to self. #codePoint, - #asciiValue, #value, and #asInteger are synonyms. + + +File: gst-base.info, Node: VariableBinding-saving and loading, Next: VariableBinding-storing, Prev: VariableBinding-printing, Up: VariableBinding + +VariableBinding: saving and loading +----------------------------------- + + to + +binaryRepresentationObject + This method is implemented to allow for a PluggableProxy to be used + with VariableBindings. Answer a DirectedMessage which sends #at: + to the environment that holds the receiver.  -File: gst-base.info, Node: Character-coercion methods, Next: Character-comparing, Prev: Character-built ins, Up: Character +File: gst-base.info, Node: VariableBinding-storing, Next: VariableBinding-testing, Prev: VariableBinding-saving and loading, Up: VariableBinding -Character: coercion methods ---------------------------- +VariableBinding: storing +------------------------ -asLowercase - Returns self as a lowercase character if it's an uppercase letter, - otherwise returns the character unchanged. +storeOn: aStream + Put on aStream some Smalltalk code compiling to the receiver -asString - Returns the character self as a string. -asSymbol - Returns the character self as a symbol. + +File: gst-base.info, Node: VariableBinding-testing, Prev: VariableBinding-storing, Up: VariableBinding -asUppercase - Returns self as a uppercase character if it's an lowercase letter, - otherwise returns the character unchanged. +VariableBinding: testing +------------------------ + +isDefined + Answer true if this VariableBinding lives outside the Undeclared + dictionary  -File: gst-base.info, Node: Character-comparing, Next: Character-converting, Prev: Character-coercion methods, Up: Character +File: gst-base.info, Node: VersionableObjectProxy, Next: VFS.ArchiveFileHandler, Prev: VariableBinding, Up: Base classes -Character: comparing --------------------- +VersionableObjectProxy +====================== + +Defined in namespace Smalltalk +Superclass: NullProxy +Category: Streams-Files + I am a proxy that stores additional information to allow different + versions of an object's representations to be handled by the + program. VersionableObjectProxies are backwards compatible, that + is you can support versioning even if you did not use a + VersionableObjectProxy for that class when the object was + originarily dumped. VersionableObjectProxy does not support + classes that changed shape across different versions. See the + method comments for more information. + +* Menu: + +* VersionableObjectProxy class-saving and restoring:: (class) +* VersionableObjectProxy-saving and restoring:: (instance) -< aCharacter - Compare the character's ASCII value. Answer whether the receiver's - is the least. + +File: gst-base.info, Node: VersionableObjectProxy class-saving and restoring, Next: VersionableObjectProxy-saving and restoring, Up: VersionableObjectProxy -<= aCharacter - Compare the character's ASCII value. Answer whether the receiver's - is the least or their equal. +VersionableObjectProxy class: saving and restoring +-------------------------------------------------- -> aCharacter - Compare the character's ASCII value. Answer whether the receiver's - is the greatest. + to ->= aCharacter - Compare the character's ASCII value. Answer whether the receiver's - is the greatest or their equal. +loadFrom: anObjectDumper + Retrieve the object. If the version number doesn't match the + #binaryRepresentationVersion answered by the class, call the class' + #convertFromVersion:withFixedVariables:instanceVariables:for: + method. The stored version number will be the first parameter to + that method (or nil if the stored object did not employ a + VersionableObjectProxy), the remaining parameters will be + respectively the fixed instance variables, the indexed instance + variables (or nil if the class is fixed), and the ObjectDumper + itself. If no VersionableObjectProxy, the class is sent + #nonVersionedInstSize to retrieve the number of fixed instance + variables stored for the non-versioned object.  -File: gst-base.info, Node: Character-converting, Next: Character-printing, Prev: Character-comparing, Up: Character +File: gst-base.info, Node: VersionableObjectProxy-saving and restoring, Prev: VersionableObjectProxy class-saving and restoring, Up: VersionableObjectProxy -Character: converting ---------------------- +VersionableObjectProxy: saving and restoring +-------------------------------------------- -digitValue - Returns the value of self interpreted as a digit. Here, 'digit' - means either 0-9, or A-Z, which maps to 10-35. +dumpTo: anObjectDumper + Save the object with extra versioning information.  -File: gst-base.info, Node: Character-printing, Next: Character-storing, Prev: Character-converting, Up: Character +File: gst-base.info, Node: VFS.ArchiveFileHandler, Next: VFS.ArchiveMemberHandler, Prev: VersionableObjectProxy, Up: Base classes -Character: printing -------------------- +VFS.ArchiveFileHandler +====================== -displayOn: aStream - Print a representation of the receiver on aStream. Unlike - #printOn:, this method strips the leading dollar. +Defined in namespace Smalltalk.VFS +Superclass: VFS.RealFileHandler +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. -printOn: aStream - Store a representation of the receiver on aStream +* Menu: +* VFS.ArchiveFileHandler class-registering:: (class) +* VFS.ArchiveFileHandler-ArchiveMemberHandler protocol:: (instance) +* VFS.ArchiveFileHandler-directory operations:: (instance) +* VFS.ArchiveFileHandler-file operations:: (instance)  -File: gst-base.info, Node: Character-storing, Next: Character-testing, Prev: Character-printing, Up: Character +File: gst-base.info, Node: VFS.ArchiveFileHandler class-registering, Next: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ArchiveFileHandler -Character: storing ------------------- +VFS.ArchiveFileHandler class: registering +----------------------------------------- -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream +isAccessible + Answer whether a directory with the name contained in the receiver + does exist and can be accessed + +isDirectory + Answer true. The archive can always be considered as a directory.  -File: gst-base.info, Node: Character-testing, Next: Character-testing functionality, Prev: Character-storing, Up: Character +File: gst-base.info, Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Next: VFS.ArchiveFileHandler-directory operations, Prev: VFS.ArchiveFileHandler class-registering, Up: VFS.ArchiveFileHandler -Character: testing ------------------- +VFS.ArchiveFileHandler: ArchiveMemberHandler protocol +----------------------------------------------------- -isAlphaNumeric - True if self is a letter or a digit +extractMember: anArchiveMemberHandler + Extract the contents of anArchiveMemberHandler into a file that + resides on disk, and answer the name of the file. -isDigit - True if self is a 0-9 digit +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. -isLetter - True if self is an upper- or lowercase letter +member: anArchiveMemberHandler do: aBlock + Evaluate aBlock once for each file in the directory represented by + anArchiveMemberHandler, passing its name. -isLowercase - True if self is a lowercase letter +newMemberHandlerFor: aName + Answer a new ArchiveMemberHandler for a file named aName residing + inside the archive represented by the receiver. -isPunctuation - Returns true if self is one of '.,:;!?' +removeMember: anArchiveMemberHandler + Remove the member represented by anArchiveMemberHandler. -isSeparator - Returns true if self is a space, cr, tab, nl, or newPage +updateMember: anArchiveMemberHandler + Update the member represented by anArchiveMemberHandler by copying + the file into which it was extracted back to the archive. -isUppercase - True if self is uppercase -isVowel - Returns true if self is a, e, i, o, or u; case insensitive + +File: gst-base.info, Node: VFS.ArchiveFileHandler-directory operations, Next: VFS.ArchiveFileHandler-file operations, Prev: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ArchiveFileHandler + +VFS.ArchiveFileHandler: directory operations +-------------------------------------------- + +at: aName + Answer a VFSHandler for a file named `aName' residing in the + directory represented by the receiver. + +createDir: dirName + Create a subdirectory of the receiver, naming it dirName. + +do: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing its name. + +finalize + Upon finalization, we remove the file that was temporarily holding + the file contents + +release + Release the resources used by the receiver that don't survive when + reloading a snapshot.  -File: gst-base.info, Node: Character-testing functionality, Prev: Character-testing, Up: Character +File: gst-base.info, Node: VFS.ArchiveFileHandler-file operations, Prev: VFS.ArchiveFileHandler-directory operations, Up: VFS.ArchiveFileHandler -Character: testing functionality --------------------------------- +VFS.ArchiveFileHandler: file operations +--------------------------------------- -isCharacter - Answer True. We're definitely characters +remove + Remove the file with the given path name  -File: gst-base.info, Node: CharacterArray, Next: CInt, Prev: Character, Up: Base classes +File: gst-base.info, Node: VFS.ArchiveMemberHandler, Next: VFS.DecodedFileHandler, Prev: VFS.ArchiveFileHandler, Up: Base classes -CharacterArray -============== +VFS.ArchiveMemberHandler +======================== -Defined in namespace Smalltalk -Superclass: ArrayedCollection -Category: Language-Data types - My instances represent a generic textual (string) data type. I - provide accessing and manipulation methods for strings. +Defined in namespace Smalltalk.VFS +Superclass: VFS.VFSHandler +Category: Streams-Files + ArchiveMemberHandler is the handler class for members of archive + files (instances of ArchiveFileHandler). * Menu: -* CharacterArray class-basic:: (class) -* CharacterArray-basic:: (instance) -* CharacterArray-built ins:: (instance) -* CharacterArray-comparing:: (instance) -* CharacterArray-converting:: (instance) -* CharacterArray-printing:: (instance) -* CharacterArray-storing:: (instance) -* CharacterArray-string processing:: (instance) -* CharacterArray-testing functionality:: (instance) +* VFS.ArchiveMemberHandler-accessing:: (instance) +* VFS.ArchiveMemberHandler-directory operations:: (instance) +* VFS.ArchiveMemberHandler-file operations:: (instance) +* VFS.ArchiveMemberHandler-finalization:: (instance) +* VFS.ArchiveMemberHandler-initializing:: (instance) +* VFS.ArchiveMemberHandler-testing:: (instance)  -File: gst-base.info, Node: CharacterArray class-basic, Next: CharacterArray-basic, Up: CharacterArray +File: gst-base.info, Node: VFS.ArchiveMemberHandler-accessing, Next: VFS.ArchiveMemberHandler-directory operations, Up: VFS.ArchiveMemberHandler -CharacterArray class: basic ---------------------------- +VFS.ArchiveMemberHandler: accessing +----------------------------------- -fromString: aCharacterArray - Make up an instance of the receiver containing the same characters - as aCharacterArray, and answer it. +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). -lineDelimiter - Answer a CharacterArray which one can use as a line delimiter. +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. - -File: gst-base.info, Node: CharacterArray-basic, Next: CharacterArray-built ins, Prev: CharacterArray class-basic, Up: CharacterArray +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). -CharacterArray: basic ---------------------- +parent + Answer the archive of which the receiver is a member. -basicAt: index - Answer the index-th character of the receiver. This is an exception - to the `do not override' rule that allows storage optimization by - storing the characters as values instead of as objects. +refresh + Refresh the statistics for the receiver -basicAt: index put: anObject - Set the index-th character of the receiver to be anObject. This - method must not be overridden; override at: instead. String - overrides it so that it looks like it contains character objects - even though it contains bytes +size + Answer the size of the file identified by the receiver  -File: gst-base.info, Node: CharacterArray-built ins, Next: CharacterArray-comparing, Prev: CharacterArray-basic, Up: CharacterArray +File: gst-base.info, Node: VFS.ArchiveMemberHandler-directory operations, Next: VFS.ArchiveMemberHandler-file operations, Prev: VFS.ArchiveMemberHandler-accessing, Up: VFS.ArchiveMemberHandler -CharacterArray: built ins -------------------------- +VFS.ArchiveMemberHandler: directory operations +---------------------------------------------- + +at: aName + Answer a VFSHandler for a file named `aName' residing in the + directory represented by the receiver. -valueAt: index - Answer the ascii value of index-th character variable of the - receiver +createDir: dirName + Create a subdirectory of the receiver, naming it dirName. -valueAt: index put: value - Store (Character value: value) in the index-th indexed instance - variable of 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: CharacterArray-comparing, Next: CharacterArray-converting, Prev: CharacterArray-built ins, Up: CharacterArray +File: gst-base.info, Node: VFS.ArchiveMemberHandler-file operations, Next: VFS.ArchiveMemberHandler-finalization, Prev: VFS.ArchiveMemberHandler-directory operations, Up: VFS.ArchiveMemberHandler -CharacterArray: comparing -------------------------- +VFS.ArchiveMemberHandler: file operations +----------------------------------------- -< aCharacterArray - Return true if the receiver is less than aCharacterArray, ignoring - case differences. +open: class mode: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods) -<= aCharacterArray - Returns true if the receiver is less than or equal to - aCharacterArray, ignoring case differences. If is receiver is an - initial substring of aCharacterArray, it is considered to be less - than aCharacterArray. +remove + Remove the file with the given path name -> aCharacterArray - Return true if the receiver is greater than aCharacterArray, - ignoring case differences. +renameTo: newFileName + Rename the file with the given path name oldFileName to newFileName ->= aCharacterArray - Returns true if the receiver is greater than or equal to - aCharacterArray, ignoring case differences. If is aCharacterArray - is an initial substring of the receiver, it is considered to be - less than the receiver. +update: aspect + Private - Update the in-archive version of the file before closing. -indexOf: aCharacterArray matchCase: aBoolean startingAt: anIndex - Answer an Interval of indices in the receiver which match the - aCharacterArray pattern. # in aCharacterArray means 'match any - character', * in aCharacterArray means 'match any sequence of - characters'. The first item of the returned in- terval is >= - anIndex. If aBoolean is false, the search is case-insen- sitive, - else it is case-sensitive. If no Interval matches the pattern, - answer nil. -match: aCharacterArray - Answer whether aCharacterArray matches the pattern contained in the - receiver. # in the receiver means 'match any character', * in - receiver means 'match any sequence of characters'. + +File: gst-base.info, Node: VFS.ArchiveMemberHandler-finalization, Next: VFS.ArchiveMemberHandler-initializing, Prev: VFS.ArchiveMemberHandler-file operations, Up: VFS.ArchiveMemberHandler -match: aCharacterArray ignoreCase: aBoolean - Answer whether aCharacterArray matches the pattern contained in the - receiver. # in the receiver means 'match any character', * in - receiver means 'match any sequence of characters'. The case of - alphabetic characters is ignored if aBoolean is true. +VFS.ArchiveMemberHandler: finalization +-------------------------------------- -sameAs: aCharacterArray - Returns true if the receiver is the same CharacterArray as - aCharacterArray, ignoring case differences. +realFileName + Answer the real file name which holds the file contents, or nil if + it does not apply. -startsWith: aCharacterArray - Returns true if the receiver starts with the same characters as - aCharacterArray. +release + Release the resources used by the receiver that don't survive when + reloading a snapshot.  -File: gst-base.info, Node: CharacterArray-converting, Next: CharacterArray-printing, Prev: CharacterArray-comparing, Up: CharacterArray +File: gst-base.info, Node: VFS.ArchiveMemberHandler-initializing, Next: VFS.ArchiveMemberHandler-testing, Prev: VFS.ArchiveMemberHandler-finalization, Up: VFS.ArchiveMemberHandler -CharacterArray: converting --------------------------- +VFS.ArchiveMemberHandler: initializing +-------------------------------------- -asByteArray - Return the receiver, converted to a ByteArray of ASCII values +parent: anArchiveFileHandler + Set the archive of which the receiver is a member. -asClassPoolKey - Return the receiver, ready to be put in a class pool dictionary +size: bytes stCtime: ctime stMtime: mtime stAtime: atime isDirectory: isDir + Called back by the receiver's parent when the ArchiveMemberHandler + asks for file information. -asGlobalKey - Return the receiver, ready to be put in the Smalltalk dictionary -asInteger - Parse an Integer number from the receiver until the input character - is invalid and answer the result at this point + +File: gst-base.info, Node: VFS.ArchiveMemberHandler-testing, Prev: VFS.ArchiveMemberHandler-initializing, Up: VFS.ArchiveMemberHandler -asLowercase - Returns a copy of self as a lowercase CharacterArray +VFS.ArchiveMemberHandler: testing +--------------------------------- -asNumber - Parse a Number from the receiver until the input character is - invalid and answer the result at this point +exists + Answer whether a file with the name contained in the receiver does + exist. -asPoolKey - Return the receiver, ready to be put in a pool dictionary +isAccessible + Answer whether a directory with the name contained in the receiver + does exist and is accessible -asString - But I already am a String! Really! +isDirectory + Answer whether a file with the name contained in the receiver does + exist and identifies a directory. -asSymbol - Returns the symbol corresponding to the CharacterArray +isExecutable + Answer whether a file with the name contained in the receiver does + exist and is executable -asUppercase - Returns a copy of self as an uppercase CharacterArray +isReadable + Answer whether a file with the name contained in the receiver does + exist and is readable -fileName - But I don't HAVE a file name! +isWriteable + Answer whether a file with the name contained in the receiver does + exist and is writeable -filePos - But I don't HAVE a file position! -isNumeric - Answer whether the receiver denotes a number + +File: gst-base.info, Node: VFS.DecodedFileHandler, Next: VFS.ExternalArchiveFileHandler, Prev: VFS.ArchiveMemberHandler, Up: Base classes -trimSeparators - Return a copy of the reciever without any spaces on front or back. - The implementation is protected against the `all blanks' case. +VFS.DecodedFileHandler +====================== +Defined in namespace Smalltalk.VFS +Superclass: VFS.RealFileHandler +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.DecodedFileHandler class-registering:: (class) +* VFS.DecodedFileHandler-files:: (instance)  -File: gst-base.info, Node: CharacterArray-printing, Next: CharacterArray-storing, Prev: CharacterArray-converting, Up: CharacterArray +File: gst-base.info, Node: VFS.DecodedFileHandler class-registering, Next: VFS.DecodedFileHandler-files, Up: VFS.DecodedFileHandler -CharacterArray: printing ------------------------- +VFS.DecodedFileHandler class: registering +----------------------------------------- -displayOn: aStream - Print a representation of the receiver on aStream. Unlike - #printOn:, this method strips extra quotes. - -displayString - Answer a String representing the receiver. For most objects this - is simply its #printString, but for CharacterArrays and characters, - superfluous dollars or extra pair of quotes are stripped. +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). -printOn: aStream - Print a representation of the receiver on aStream +initialize + Initialize the default virtual filesystems and the associated + filter commands. +vfsFor: file name: fsName subPath: subPath + Create a temporary file and use it to construct the contents of + the given file, under the virtual filesystem fsName. subPath must + be nil because this class supports single-file virtual filesystems + only. - -File: gst-base.info, Node: CharacterArray-storing, Next: CharacterArray-string processing, Prev: CharacterArray-printing, Up: CharacterArray -CharacterArray: storing ------------------------ + +File: gst-base.info, Node: VFS.DecodedFileHandler-files, Prev: VFS.DecodedFileHandler class-registering, Up: VFS.DecodedFileHandler -storeOn: aStream - Print Smalltalk code compiling to the receiver on aStream +VFS.DecodedFileHandler: files +----------------------------- +finalize + Upon finalization, we remove the file that was temporarily holding + the file contents - -File: gst-base.info, Node: CharacterArray-string processing, Next: CharacterArray-testing functionality, Prev: CharacterArray-storing, Up: CharacterArray +name: virtualFileName realFileName: temporaryFileName + Private - Initialize a new object storing the contents of the + virtualFileName file into temporaryFileName. -CharacterArray: string processing ---------------------------------- +realFileName + Answer the real file name which holds the file contents, or nil if + it does not apply. -bindWith: s1 - Answer the receiver with every %1 replaced by the displayString of - s1 - -bindWith: s1 with: s2 - Answer the receiver with every %1 or %2 replaced by s1 or s2, - respectively. s1 and s2 are `displayed' (i.e. their displayString - is used) upon replacement. - -bindWith: s1 with: s2 with: s3 - Answer the receiver with every %1, %2 or %3 replaced by s1, s2 or - s3, respectively. s1, s2 and s3 are `displayed' (i.e. their - displayString is used) upon replacement. - -bindWith: s1 with: s2 with: s3 with: s4 - Answer the receiver with every %1, %2, %3 or %4 replaced by s1, - s2, s3 or s4, respectively. s1, s2, s3 and s4 are `displayed' - (i.e. their displayString is used) upon replacement. - -bindWithArguments: anArray - Answer the receiver with every %n (1<=n<=9) replaced by the n-th - element of anArray. The replaced elements are `displayed' (i.e. - their displayString is used). In addition, the special pattern - %n is replaced with one of the two strings - depending on the n-th element of anArray being true or false. - -contractTo: smallSize - Either return myself, or a copy shortened to smallSize characters - by inserting an ellipsis (three dots: ...) - -subStrings - Answer an OrderedCollection of substrings of the receiver. A new - substring start at the start of the receiver, or after every - sequence of white space characters - -substrings - Answer an OrderedCollection of substrings of the receiver. A new - substring start at the start of the receiver, or after every - sequence of white space characters. This message is preserved for - backwards compatibility; the ANSI standard mandates `subStrings', - with an uppercase s. - -substrings: aCharacter - Answer an OrderedCollection of substrings of the receiver. A new - substring start at the start of the receiver, or after every - sequence of characters matching aCharacter. This message is - preserved for backwards compatibility; the ANSI standard mandates - `subStrings:', with an uppercase s. - -subStrings: aCharacter - Answer an OrderedCollection of substrings of the receiver. A new - substring start at the start of the receiver, or after every - sequence of characters matching aCharacter +release + Release the resources used by the receiver that don't survive when + reloading a snapshot.  -File: gst-base.info, Node: CharacterArray-testing functionality, Prev: CharacterArray-string processing, Up: CharacterArray +File: gst-base.info, Node: VFS.ExternalArchiveFileHandler, Next: VFS.RealFileHandler, Prev: VFS.DecodedFileHandler, Up: Base classes -CharacterArray: testing functionality -------------------------------------- +VFS.ExternalArchiveFileHandler +============================== -isCharacterArray - Answer `true'. +Defined in namespace Smalltalk.VFS +Superclass: VFS.ArchiveFileHandler +Category: Streams-Files + ExternalArchiveFileHandler allows for easy implementation of + archive files (for example, transparent unzipping and untarring) + with a single shell script. It implements a protocol that that is + compatible with the Midnight Commander and with GNOME VFS. +* Menu: + +* VFS.ExternalArchiveFileHandler class-registering:: (class) +* VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol:: (instance) +* VFS.ExternalArchiveFileHandler-members:: (instance) +* VFS.ExternalArchiveFileHandler-releasing:: (instance)  -File: gst-base.info, Node: CInt, Next: Class, Prev: CharacterArray, Up: Base classes +File: gst-base.info, Node: VFS.ExternalArchiveFileHandler class-registering, Next: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ExternalArchiveFileHandler -CInt -==== +VFS.ExternalArchiveFileHandler class: registering +------------------------------------------------- -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface +fileSystems + Answer the virtual file systems that can be processed by this + subclass. These are given by the names of the executable files in + the vfs subdirectory of the image directory, of the parent of the + kernel directory and of the parent of the system kernel directory. -* Menu: +fileSystemsIn: path + Registers the executable files in the given directory to be used + to resolve a virtual file system. + +vfsFor: file name: fsName subPath: subPath + Create a temporary file and use it to construct the contents of + the given file, under the virtual filesystem fsName. -* CInt class-accessing:: (class) -* CInt-accessing:: (instance)  -File: gst-base.info, Node: CInt class-accessing, Next: CInt-accessing, Up: CInt +File: gst-base.info, Node: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol, Next: VFS.ExternalArchiveFileHandler-members, Prev: VFS.ExternalArchiveFileHandler class-registering, Up: VFS.ExternalArchiveFileHandler -CInt class: accessing ---------------------- +VFS.ExternalArchiveFileHandler: ArchiveMemberHandler protocol +------------------------------------------------------------- -alignof - Answer the receiver's required aligment +extractMember: anArchiveMemberHandler + Extract the contents of anArchiveMemberHandler into a file that + resides on disk, and answer the name of the file. -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type +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. -sizeof - Answer the receiver's size +member: anArchiveMemberHandler do: aBlock + Evaluate aBlock once for each file in the directory represented by + anArchiveMemberHandler, passing its name. + +refresh + Extract the directory listing from the archive + +removeMember: anArchiveMemberHandler + Remove the member represented by anArchiveMemberHandler. + +updateMember: anArchiveMemberHandler + Update the member represented by anArchiveMemberHandler by copying + the file into which it was extracted back to the archive.  -File: gst-base.info, Node: CInt-accessing, Prev: CInt class-accessing, Up: CInt +File: gst-base.info, Node: VFS.ExternalArchiveFileHandler-members, Next: VFS.ExternalArchiveFileHandler-releasing, Prev: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol, Up: VFS.ExternalArchiveFileHandler + +VFS.ExternalArchiveFileHandler: members +--------------------------------------- -CInt: accessing ---------------- +createDir: dirName + Create a subdirectory of the receiver, naming it dirName. -alignof - Answer the receiver's instances required aligment +do: aBlock + Evaluate aBlock once for each file in the directory represented by + the receiver, passing its name. + + + +File: gst-base.info, Node: VFS.ExternalArchiveFileHandler-releasing, Prev: VFS.ExternalArchiveFileHandler-members, Up: VFS.ExternalArchiveFileHandler -scalarIndex - Private - Answer an index referring to the receiver's scalar type +VFS.ExternalArchiveFileHandler: releasing +----------------------------------------- -sizeof - Answer the receiver's instances size +release + Release the resources used by the receiver that don't survive when + reloading a snapshot.  -File: gst-base.info, Node: Class, Next: ClassDescription, Prev: CInt, Up: Base classes +File: gst-base.info, Node: VFS.RealFileHandler, Next: VFS.VFSHandler, Prev: VFS.ExternalArchiveFileHandler, Up: Base classes -Class -===== +VFS.RealFileHandler +=================== -Defined in namespace Smalltalk -Superclass: ClassDescription -Category: Language-Implementation - I am THE class object. My instances are the classes of the system. - I provide information commonly attributed to classes: namely, the - class name, class comment (you wouldn't be reading this if it - weren't for me), a list of the instance variables of the class, and - the class category. +Defined in namespace Smalltalk.VFS +Superclass: VFS.VFSHandler +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. * Menu: -* Class-accessing instances and variables:: (instance) -* Class-filing:: (instance) -* Class-instance creation:: (instance) -* Class-instance creation - alternative:: (instance) -* Class-printing:: (instance) -* Class-saving and loading:: (instance) -* Class-testing:: (instance) -* Class-testing functionality:: (instance) +* VFS.RealFileHandler class-C functions:: (class) +* VFS.RealFileHandler class-initialization:: (class) +* VFS.RealFileHandler-accessing:: (instance) +* VFS.RealFileHandler-directory operations:: (instance) +* VFS.RealFileHandler-file operations:: (instance) +* VFS.RealFileHandler-testing:: (instance)  -File: gst-base.info, Node: Class-accessing instances and variables, Next: Class-filing, Up: Class +File: gst-base.info, Node: VFS.RealFileHandler class-C functions, Next: VFS.RealFileHandler class-initialization, Up: VFS.RealFileHandler -Class: accessing instances and variables ----------------------------------------- +VFS.RealFileHandler class: C functions +-------------------------------------- + +working + C call-out to getCurDirName. Do not modify! -addClassVarName: aString - Add a class variable with the given name to the class pool - dictionary -addSharedPool: aDictionary - Add the given shared pool to the list of the class' pool - dictionaries + +File: gst-base.info, Node: VFS.RealFileHandler class-initialization, Next: VFS.RealFileHandler-accessing, Prev: VFS.RealFileHandler class-C functions, Up: VFS.RealFileHandler -allClassVarNames - Answer the names of the variables in the receiver's class pool - dictionary and in each of the superclasses' class pool dictionaries +VFS.RealFileHandler class: initialization +----------------------------------------- -bindingFor: aString - Answer the variable binding for the class variable with the given - name +initialize + Initialize the receiver's class variables -category - Answer the class category -category: aString - Change the class category to aString + +File: gst-base.info, Node: VFS.RealFileHandler-accessing, Next: VFS.RealFileHandler-directory operations, Prev: VFS.RealFileHandler class-initialization, Up: VFS.RealFileHandler -classPool - Answer the class pool dictionary +VFS.RealFileHandler: accessing +------------------------------ -classVarNames - Answer the names of the variables in the class pool dictionary +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). -comment - Answer the class comment +lastAccessTime + Answer the last access time of the file identified by the receiver -comment: aString - Change the class name +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. -environment - Answer `environment'. +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). -environment: aNamespace - Set the receiver's environment to aNamespace and recompile - everything +name: aName + Private - Initialize the receiver's instance variables -initialize - redefined in children (?) +refresh + Refresh the statistics for the receiver -name - Answer the class name +size + Answer the size of the file identified by the receiver -removeClassVarName: aString - Removes the class variable from the class, error if not present, or - still in use. -removeSharedPool: aDictionary - Remove the given dictionary to the list of the class' pool - dictionaries + +File: gst-base.info, Node: VFS.RealFileHandler-directory operations, Next: VFS.RealFileHandler-file operations, Prev: VFS.RealFileHandler-accessing, Up: VFS.RealFileHandler -sharedPools - Return the names of the shared pools defined by the class +VFS.RealFileHandler: directory operations +----------------------------------------- + +createDir: dirName + Create a subdirectory of the receiver, naming it dirName. + +do: 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: Class-filing, Next: Class-instance creation, Prev: Class-accessing instances and variables, Up: Class +File: gst-base.info, Node: VFS.RealFileHandler-file operations, Next: VFS.RealFileHandler-testing, Prev: VFS.RealFileHandler-directory operations, Up: VFS.RealFileHandler -Class: filing -------------- +VFS.RealFileHandler: file operations +------------------------------------ -fileOutDeclarationOn: aFileStream - File out class definition to aFileStream +open: class mode: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods) -fileOutHeaderOn: aFileStream - Write date and time stamp to aFileStream +remove + Remove the file with the given path name -fileOutOn: aFileStream - File out complete class description: class definition, class and - instance methods +renameTo: newFileName + Rename the file with the given path name oldFileName to newFileName  -File: gst-base.info, Node: Class-instance creation, Next: Class-instance creation - alternative, Prev: Class-filing, Up: Class +File: gst-base.info, Node: VFS.RealFileHandler-testing, Prev: VFS.RealFileHandler-file operations, Up: VFS.RealFileHandler -Class: instance creation ------------------------- +VFS.RealFileHandler: testing +---------------------------- -extend - Redefine a version of the receiver in the current namespace. Note: - this method can bite you in various ways when sent to system - classes; read the section on namespaces in the manual for some - examples of the problems you can encounter. +exists + Answer whether a file with the name contained in the receiver does + exist. -subclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a fixed subclass of the - receiver with the given name, instance variables, class variables, - pool dictionaries and category. If the class is already defined, - if necessary, recompile everything needed. +isDirectory + Answer whether a file with the name contained in the receiver does + exist and identifies a directory. -variableByteSubclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a byte variable subclass of - the receiver with the given name, instance variables (must be "), - class variables, pool dictionaries and category. If the class is - already defined, if necessary, recompile everything needed. +isExecutable + Answer whether a file with the name contained in the receiver does + exist and is executable -variableSubclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a variable pointer subclass of - the receiver with the given name, instance variables, class - variables, pool dictionaries and category. If the class is already - defined, if necessary, recompile everything needed. +isReadable + Answer whether a file with the name contained in the receiver does + exist and is readable -variableWordSubclass: classNameString - instanceVariableNames: stringInstVarNames classVariableNames: - stringOfClassVarNames poolDictionaries: stringOfPoolNames - category: categoryNameString Define a word variable subclass of - the receiver with the given name, instance variables (must be "), - class variables, pool dictionaries and category. If the class is - already defined, if necessary, recompile everything needed. +isWriteable + Answer whether a file with the name contained in the receiver does + exist and is writeable  -File: gst-base.info, Node: Class-instance creation - alternative, Next: Class-printing, Prev: Class-instance creation, Up: Class +File: gst-base.info, Node: VFS.VFSHandler, Next: Warning, Prev: VFS.RealFileHandler, Up: Base classes -Class: instance creation - alternative --------------------------------------- +VFS.VFSHandler +============== -categoriesFor: method are: categories - Don't use this, it is only present to file in from IBM Smalltalk +Defined in namespace Smalltalk.VFS +Superclass: Object +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. -subclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +* Menu: -subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +* VFS.VFSHandler class-initializing:: (class) +* VFS.VFSHandler class-instance creation:: (class) +* VFS.VFSHandler-accessing:: (instance) +* VFS.VFSHandler-C functions:: (instance) +* VFS.VFSHandler-directory operations:: (instance) +* VFS.VFSHandler-file operations:: (instance) +* VFS.VFSHandler-testing:: (instance) -variableByteSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk + +File: gst-base.info, Node: VFS.VFSHandler class-initializing, Next: VFS.VFSHandler class-instance creation, Up: VFS.VFSHandler -variableByteSubclass: classNameString classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +VFS.VFSHandler class: initializing +---------------------------------- -variableLongSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +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. -variableLongSubclass: classNameString classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +initialize + Register the receiver with ObjectMemory -variableSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +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. -variableSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames - Don't use this, it is only present to file in from IBM Smalltalk +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: Class-printing, Next: Class-saving and loading, Prev: Class-instance creation - alternative, Up: Class +File: gst-base.info, Node: VFS.VFSHandler class-instance creation, Next: VFS.VFSHandler-accessing, Prev: VFS.VFSHandler class-initializing, Up: VFS.VFSHandler -Class: printing ---------------- +VFS.VFSHandler class: instance creation +--------------------------------------- -article - Answer an article (`a' or `an') which is ok for the receiver's name - -printOn: aStream - Print a representation of the receiver on aStream - -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream +for: fileName + Answer the (real or virtual) file handler for the file named + fileName  -File: gst-base.info, Node: Class-saving and loading, Next: Class-testing, Prev: Class-printing, Up: Class +File: gst-base.info, Node: VFS.VFSHandler-accessing, Next: VFS.VFSHandler-C functions, Prev: VFS.VFSHandler class-instance creation, Up: VFS.VFSHandler -Class: saving and loading +VFS.VFSHandler: accessing ------------------------- -binaryRepresentationVersion - Answer a number >= 0 which represents the current version of the - object's representation. The default implementation answers zero. - -convertFromVersion: version withFixedVariables: fixed - indexedVariables: indexed for: anObjectDumper - This method is called if a VersionableObjectProxy is attached to a - class. It receives the version number that was stored for the - object (or nil if the object did not use a VersionableObjectProxy), - the fixed instance variables, the indexed instance variables, and - the ObjectDumper that has read the object. The default - implementation ignores the version and simply fills in an instance - of the receiver with the given fixed and indexed instance - variables (nil if the class instances are of fixed size). If - instance variables were removed from the class, extras are - ignored; if the class is now fixed and used to be indexed, indexed - is not used. - -nonVersionedInstSize - Answer the number of instance variables that the class used to have - when objects were stored without using a VersionableObjectProxy. - The default implementation answers the current instSize. +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 + +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). +name + Answer the name of the file identified by the receiver - -File: gst-base.info, Node: Class-testing, Next: Class-testing functionality, Prev: Class-saving and loading, Up: Class +name: aName + Private - Initialize the receiver's instance variables -Class: testing --------------- +realFileName + Answer the real file name which holds the file contents, or an + empty string if it does not apply. -= aClass - Returns true if the two class objects are to be considered equal. +refresh + Refresh the statistics for the receiver + +size + Answer the size of the file identified by the receiver  -File: gst-base.info, Node: Class-testing functionality, Prev: Class-testing, Up: Class +File: gst-base.info, Node: VFS.VFSHandler-C functions, Next: VFS.VFSHandler-directory operations, Prev: VFS.VFSHandler-accessing, Up: VFS.VFSHandler -Class: testing functionality ----------------------------- +VFS.VFSHandler: C functions +--------------------------- -asClass - Answer the receiver. +closeDir: dirObject + C call-out to closedir. Do not modify! -isClass - Answer `true'. +extractDirentName: dirent + C call-out to extractDirentName. Do not modify! +openDir: dirName + C call-out to opendir. Do not modify! - -File: gst-base.info, Node: ClassDescription, Next: CLong, Prev: Class, Up: Base classes +primCreateDir: dirName mode: mode + C call-out to mkdir. Do not modify! -ClassDescription -================ +primIsExecutable: name + C call-out to fileIsExecutable. Do not modify! -Defined in namespace Smalltalk -Superclass: Behavior -Category: Language-Implementation - My instances provide methods that access classes by category, and - allow whole categories of classes to be filed out to external disk - files. +primIsReadable: name + C call-out to fileIsReadable. Do not modify! -* Menu: +primIsWriteable: name + C call-out to fileIsWriteable. Do not modify! + +primRemoveDir: fileName + C call-out to rmdir. Do not modify! + +primRename: oldFileName to: newFileName + C call-out to rename. Do not modify! + +primUnlink: fileName + C call-out to unlink. Do not modify! + +readDir: dirObject + C call-out to readdir. Do not modify! + +rewindDir: dirObject + C call-out to rewinddir. Do not modify! + +statOn: fileName into: statStruct + C call-out to stat. Do not modify! -* ClassDescription-compiling:: (instance) -* ClassDescription-conversion:: (instance) -* ClassDescription-copying:: (instance) -* ClassDescription-filing:: (instance) -* ClassDescription-organization of messages and classes:: (instance) -* ClassDescription-printing:: (instance)  -File: gst-base.info, Node: ClassDescription-compiling, Next: ClassDescription-conversion, Up: ClassDescription +File: gst-base.info, Node: VFS.VFSHandler-directory operations, Next: VFS.VFSHandler-file operations, Prev: VFS.VFSHandler-C functions, Up: VFS.VFSHandler -ClassDescription: compiling ---------------------------- +VFS.VFSHandler: directory operations +------------------------------------ -compile: code classified: categoryName - Compile code in the receiver, assigning the method to the given - category. Answer the newly created CompiledMethod, or nil if an - error was found. +at: aName + Answer a VFSHandler for a file named `aName' residing in the + directory represented by the receiver. -compile: code classified: categoryName ifError: block - Compile method source and install in method category, - categoryName. If there are parsing errors, invoke exception - block, 'block' (see compile:ifError:). Return the method +createDir: dirName + Create a subdirectory of the receiver, naming it dirName. -compile: code classified: categoryName notifying: requestor - Compile method source and install in method category, - categoryName. If there are parsing errors, send an error message - to requestor +do: 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: ClassDescription-conversion, Next: ClassDescription-copying, Prev: ClassDescription-compiling, Up: ClassDescription +File: gst-base.info, Node: VFS.VFSHandler-file operations, Next: VFS.VFSHandler-testing, Prev: VFS.VFSHandler-directory operations, Up: VFS.VFSHandler -ClassDescription: conversion ----------------------------- +VFS.VFSHandler: file operations +------------------------------- -asClass - This method's functionality should be implemented by subclasses of - ClassDescription +open: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods) -asMetaclass - Answer the metaclass associated to the receiver +open: class mode: mode ifFail: aBlock + Open the receiver in the given mode (as answered by FileStream's + class constant methods) -binding - Answer a VariableBinding object whose value is the receiver +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 + +renameTo: newFileName + Rename the file with the given path name oldFileName to newFileName  -File: gst-base.info, Node: ClassDescription-copying, Next: ClassDescription-filing, Prev: ClassDescription-conversion, Up: ClassDescription +File: gst-base.info, Node: VFS.VFSHandler-testing, Prev: VFS.VFSHandler-file operations, Up: VFS.VFSHandler -ClassDescription: copying -------------------------- +VFS.VFSHandler: testing +----------------------- + +exists + Answer whether a file with the name contained in the receiver does + exist. + +isAccessible + Answer whether a directory with the name contained in the receiver + does exist and can be accessed -copy: selector from: aClass - Copy the given selector from aClass, assigning it the same category +isDirectory + Answer whether a file with the name contained in the receiver does + exist and identifies a directory. -copy: selector from: aClass classified: categoryName - Copy the given selector from aClass, assigning it the given - category +isExecutable + Answer whether a file with the name contained in the receiver does + exist and is executable -copyAll: arrayOfSelectors from: class - Copy all the selectors in arrayOfSelectors from class, assigning - them the same category they have in class +isReadable + Answer whether a file with the name contained in the receiver does + exist and is readable -copyAll: arrayOfSelectors from: class classified: categoryName - Copy all the selectors in arrayOfSelectors from aClass, assigning - them the given category +isWriteable + Answer whether a file with the name contained in the receiver does + exist and is writeable -copyAllCategoriesFrom: aClass - Copy all the selectors in aClass, assigning them the original - category -copyCategory: categoryName from: aClass - Copy all the selectors in from aClass that belong to the given - category + +File: gst-base.info, Node: Warning, Next: WeakArray, Prev: VFS.VFSHandler, Up: Base classes + +Warning +======= -copyCategory: categoryName from: aClass classified: newCategoryName - Copy all the selectors in from aClass that belong to the given - category, reclassifying them as belonging to the given category +Defined in namespace Smalltalk +Superclass: Notification +Category: Language-Exceptions + Warning represents an `important' but resumable error. + +* Menu: +* Warning-exception description:: (instance)  -File: gst-base.info, Node: ClassDescription-filing, Next: ClassDescription-organization of messages and classes, Prev: ClassDescription-copying, Up: ClassDescription +File: gst-base.info, Node: Warning-exception description, Up: Warning -ClassDescription: filing ------------------------- +Warning: exception description +------------------------------ -fileOut: fileName - Open the given file and to file out a complete class description - to it +description + Answer a textual description of the exception. -fileOutCategory: categoryName to: fileName - File out all the methods belonging to the method category, - categoryName, to the fileName file -fileOutCategory: category toStream: aFileStream - File out all the methods belonging to the method category, - categoryName, to aFileStream + +File: gst-base.info, Node: WeakArray, Next: WeakIdentitySet, Prev: Warning, Up: Base classes + +WeakArray +========= + +Defined in namespace Smalltalk +Superclass: Array +Category: Collections-Weak + I am similar to a plain array, but my items are stored in a weak + object, so I track which of them are garbage collected. -fileOutOn: aFileStream - File out complete class description: class definition, class and - instance methods +* Menu: + +* WeakArray class-instance creation:: (class) +* WeakArray-accessing:: (instance) +* WeakArray-conversion:: (instance) +* WeakArray-loading:: (instance) + + +File: gst-base.info, Node: WeakArray class-instance creation, Next: WeakArray-accessing, Up: WeakArray + +WeakArray class: instance creation +---------------------------------- -fileOutSelector: selector to: fileName - File out the given selector to fileName +new: size + Private - Initialize the values array; plus, make it weak and + create the ByteArray used to track garbage collected values  -File: gst-base.info, Node: ClassDescription-organization of messages and classes, Next: ClassDescription-printing, Prev: ClassDescription-filing, Up: ClassDescription +File: gst-base.info, Node: WeakArray-accessing, Next: WeakArray-conversion, Prev: WeakArray class-instance creation, Up: WeakArray -ClassDescription: organization of messages and classes ------------------------------------------------------- +WeakArray: accessing +-------------------- + +aliveObjectsDo: aBlock + Evaluate aBlock for all the elements in the array, excluding the + garbage collected ones. Note: a finalized object stays alive until + the next collection (the collector has no means to see whether it + was resuscitated by the finalizer), so an object being alive does + not mean that it is usable. -classify: aSelector under: aString - Put the method identified by the selector aSelector under the - category given by aString. +at: index + Answer the index-th item of the receiver, or nil if it has been + garbage collected. -createGetMethod: what - Create a method accessing the variable `what'. +at: index put: object + Store the value associated to the given index; plus, store in + nilValues whether the object is nil. nil objects whose associated + item of nilValues is 1 were touched by the garbage collector. -createGetMethod: what default: value - Create a method accessing the variable `what', with a default value - of `value', using lazy initialization +atAll: indices put: object + Put object at every index contained in the indices collection -createSetMethod: what - Create a method which sets the variable `what'. +atAllPut: object + Put object at every index in the receiver -defineAsyncCFunc: cFuncNameString - withSelectorArgs: selectorAndArgs args: argsArray See - documentation. Too complex to describe it here ;-) +clearGCFlag: index + Clear the `object has been garbage collected' flag for the item at + the given index -defineCFunc: cFuncNameString - withSelectorArgs: selectorAndArgs returning: returnTypeSymbol - args: argsArray See documentation. Too complex to describe it - here ;-) +do: aBlock + Evaluate aBlock for all the elements in the array, including the + garbage collected ones (pass nil for those). -removeCategory: aString - Remove from the receiver every method belonging to the given - category +isAlive: index + Answer whether the item at the given index is still alive or has + been garbage collected. Note: a finalized object stays alive until + the next collection (the collector has no means to see whether it + was resuscitated by the finalizer), so an object being alive does + not mean that it is usable. -whichCategoryIncludesSelector: selector - Answer the category for the given selector, or nil if the selector - is not found +size + Answer the number of items in the receiver  -File: gst-base.info, Node: ClassDescription-printing, Prev: ClassDescription-organization of messages and classes, Up: ClassDescription +File: gst-base.info, Node: WeakArray-conversion, Next: WeakArray-loading, Prev: WeakArray-accessing, Up: WeakArray + +WeakArray: conversion +--------------------- -ClassDescription: printing --------------------------- +asArray + Answer a non-weak version of the receiver -classVariableString - This method's functionality should be implemented by subclasses of - ClassDescription +deepCopy + Returns a deep copy of the receiver (the instance variables are + copies of the receiver's instance variables) -instanceVariableString - Answer a string containing the name of the receiver's instance - variables. +shallowCopy + Returns a shallow copy of the receiver (the instance variables are + not copied) -nameIn: aNamespace - Answer the class name when the class is referenced from aNamespace +species + Answer Array; this method is used in the #copyEmpty: message, + which in turn is used by all collection-returning methods + (collect:, select:, reject:, etc.). -printOn: aStream in: aNamespace - Print on aStream the class name when the class is referenced from - aNamespace -sharedVariableString - This method's functionality should be implemented by subclasses of - ClassDescription + +File: gst-base.info, Node: WeakArray-loading, Prev: WeakArray-conversion, Up: WeakArray + +WeakArray: loading +------------------ + +postLoad + Called after loading an object; must restore it to the state before + `preStore' was called. Make it weak again  -File: gst-base.info, Node: CLong, Next: CObject, Prev: ClassDescription, Up: Base classes +File: gst-base.info, Node: WeakIdentitySet, Next: WeakKeyDictionary, Prev: WeakArray, Up: Base classes -CLong -===== +WeakIdentitySet +=============== Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface +Superclass: WeakSet +Category: Collections-Weak + I am similar to a plain identity set, but my keys are stored in a + weak array; I track which of them are garbage collected and, as + soon as I encounter one of them, I swiftly remove all the garbage + collected keys * Menu: -* CLong class-accessing:: (class) -* CLong-accessing:: (instance) -  -File: gst-base.info, Node: CLong class-accessing, Next: CLong-accessing, Up: CLong - -CLong class: accessing ----------------------- +File: gst-base.info, Node: WeakKeyDictionary, Next: WeakKeyIdentityDictionary, Prev: WeakIdentitySet, Up: Base classes -alignof - Answer the receiver's instances required aligment +WeakKeyDictionary +================= -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type +Defined in namespace Smalltalk +Superclass: Dictionary +Category: Collections-Weak + I am similar to a plain Dictionary, but my keys are stored in a + weak array; I track which of them are garbage collected and, as + soon as I encounter one of them, I swiftly remove all the + associations for the garbage collected keys -sizeof - Answer the receiver's instances size +* Menu: +* WeakKeyDictionary-accessing:: (instance)  -File: gst-base.info, Node: CLong-accessing, Prev: CLong class-accessing, Up: CLong +File: gst-base.info, Node: WeakKeyDictionary-accessing, Up: WeakKeyDictionary -CLong: accessing ----------------- +WeakKeyDictionary: accessing +---------------------------- + +add: anAssociation + Store value as associated to the given key. If any, recycle + Associations temporarily stored by the compiler inside the + `Undeclared' dictionary. -alignof - Answer the receiver's required aligment +at: key put: value + Store value as associated to the given key. If any, recycle + Associations temporarily stored by the compiler inside the + `Undeclared' dictionary. -scalarIndex - Private - Answer an index referring to the receiver's scalar type -sizeof - Answer the receiver's size + +File: gst-base.info, Node: WeakKeyIdentityDictionary, Next: WeakSet, Prev: WeakKeyDictionary, Up: Base classes + +WeakKeyIdentityDictionary +========================= +Defined in namespace Smalltalk +Superclass: WeakKeyDictionary +Category: Collections-Weak + I am similar to a plain identity dictionary, but my keys are stored + in a weak array; I track which of them are garbage collected and, + as soon as I encounter one of them, I swiftly remove all the + associations for the garbage collected keys + +* Menu:  -File: gst-base.info, Node: CObject, Next: Collection, Prev: CLong, Up: Base classes +File: gst-base.info, Node: WeakSet, Next: WeakValueIdentityDictionary, Prev: WeakKeyIdentityDictionary, Up: Base classes -CObject +WeakSet ======= Defined in namespace Smalltalk -Superclass: Object -Category: Language-C interface - I am not part of the standard Smalltalk kernel class hierarchy. - My instances contain values that are not interpreted by the - Smalltalk system; they frequently hold "pointers" to data outside - of the Smalltalk environment. The C callout mechanism allows my - instances to be transformed into their corresponding C values for - use in external routines. +Superclass: Set +Category: Collections-Weak + I am similar to a plain set, but my items are stored in a weak + array; I track which of them are garbage collected and, as soon as + I encounter one of them, I swiftly remove all. * Menu: -* CObject class-conversion:: (class) -* CObject class-instance creation:: (class) -* CObject-accessing:: (instance) -* CObject-C data access:: (instance) -* CObject-conversion:: (instance) -* CObject-finalization:: (instance) -* CObject-pointer-like behavior:: (instance) +* WeakSet-accessing:: (instance)  -File: gst-base.info, Node: CObject class-conversion, Next: CObject class-instance creation, Up: CObject +File: gst-base.info, Node: WeakSet-accessing, Up: WeakSet -CObject class: conversion -------------------------- +WeakSet: accessing +------------------ -scalarIndex - Nothing special in the default case - answer a CType for the - receiver +add: anObject + Add newObject to the set, if and only if the set doesn't already + contain an occurrence of it. Don't fail if a duplicate is found. + Answer anObject -type - Nothing special in the default case - answer a CType for the - receiver +do: aBlock + Enumerate all the non-nil members of the set + +remove: anObject ifAbsent: aBlock + Remove oldObject to the set. If it is found, answer oldObject. + Otherwise, evaluate aBlock and return its value.  -File: gst-base.info, Node: CObject class-instance creation, Next: CObject-accessing, Prev: CObject class-conversion, Up: CObject +File: gst-base.info, Node: WeakValueIdentityDictionary, Next: WeakValueLookupTable, Prev: WeakSet, Up: Base classes -CObject class: instance creation --------------------------------- +WeakValueIdentityDictionary +=========================== -address: anInteger - Answer a new object pointing to the passed address, anInteger +Defined in namespace Smalltalk +Superclass: WeakValueLookupTable +Category: Collections-Weak + I am similar to a plain identity dictionary, but my values are + stored in a weak array; I track which of the values are garbage + collected and, as soon as one of them is accessed, I swiftly + remove the associations for the garbage collected values -alloc: nBytes - Allocate nBytes bytes and return an instance of the receiver +* Menu: -alloc: nBytes type: cTypeObject - Allocate nBytes bytes and return a CObject of the given type + +File: gst-base.info, Node: WeakValueLookupTable, Next: WordArray, Prev: WeakValueIdentityDictionary, Up: Base classes -new - Answer a new object pointing to NULL. +WeakValueLookupTable +==================== -new: nBytes - Allocate nBytes bytes and return an instance of the receiver +Defined in namespace Smalltalk +Superclass: LookupTable +Category: Collections-Weak + I am similar to a plain LookupTable, but my values are stored in a + weak array; I track which of the values are garbage collected and, + as soon as one of them is accessed, I swiftly remove the + associations for the garbage collected values +* Menu: - -File: gst-base.info, Node: CObject-accessing, Next: CObject-C data access, Prev: CObject class-instance creation, Up: CObject +* WeakValueLookupTable-hacks:: (instance) +* WeakValueLookupTable-rehashing:: (instance) -CObject: accessing ------------------- + +File: gst-base.info, Node: WeakValueLookupTable-hacks, Next: WeakValueLookupTable-rehashing, Up: WeakValueLookupTable -address - Answer the address the receiver is pointing to. +WeakValueLookupTable: hacks +--------------------------- -address: anInteger - Set the receiver to point to the passed address, anInteger +at: key ifAbsent: aBlock + Answer the value associated to the given key, or the result of + evaluating aBlock if the key is not found -printOn: aStream - Print a representation of the receiver +at: key ifPresent: aBlock + If aKey is absent, answer nil. Else, evaluate aBlock passing the + associated value and answer the result of the invocation -type: aCType - Set the receiver's type to aCType. +includesKey: key + Answer whether the receiver contains the given key.  -File: gst-base.info, Node: CObject-C data access, Next: CObject-conversion, Prev: CObject-accessing, Up: CObject +File: gst-base.info, Node: WeakValueLookupTable-rehashing, Prev: WeakValueLookupTable-hacks, Up: WeakValueLookupTable -CObject: C data access ----------------------- +WeakValueLookupTable: rehashing +------------------------------- -at: byteOffset put: aValue type: aType - Store aValue as data of the given type from byteOffset bytes after - the pointer stored in the receiver - -at: byteOffset type: aType - Answer some data of the given type from byteOffset bytes after the - pointer stored in the receiver +rehash + Rehash the receiver -free - Free the receiver's pointer and set it to null. Big trouble hits - you if the receiver doesn't point to the base of a malloc-ed area. + +File: gst-base.info, Node: WordArray, Next: WriteStream, Prev: WeakValueLookupTable, Up: Base classes + +WordArray +========= + +Defined in namespace Smalltalk +Superclass: ArrayedCollection +Category: Collections-Sequenceable + I am similar to a plain array, but my items are 32-bit integers. + +* Menu:  -File: gst-base.info, Node: CObject-conversion, Next: CObject-finalization, Prev: CObject-C data access, Up: CObject +File: gst-base.info, Node: WriteStream, Next: ZeroDivide, Prev: WordArray, Up: Base classes + +WriteStream +=========== + +Defined in namespace Smalltalk +Superclass: PositionableStream +Category: Streams-Collections + I am the class of writeable streams. I only allow write + operations to my instances; reading is strictly forbidden. + +* Menu: -CObject: conversion -------------------- +* WriteStream class-instance creation:: (class) +* WriteStream-accessing:: (instance) +* WriteStream-accessing-writing:: (instance) +* WriteStream-positioning:: (instance) -castTo: aType - Answer another CObject, pointing to the same address as the - receiver, but belonging to the aType CType. + +File: gst-base.info, Node: WriteStream class-instance creation, Next: WriteStream-accessing, Up: WriteStream + +WriteStream class: instance creation +------------------------------------ -narrow - This method is called on CObjects returned by a C call-out whose - return type is specified as a CType; it mostly allows one to - change the class of the returned CObject. By default it does - nothing, and that's why it is not called when #cObject is used to - specify the return type. +on: aCollection + Answer a new instance of the receiver which streams on aCollection. + Every item of aCollection is discarded. -scalarIndex - Nothing special in the default case - answer the receiver's CType +with: aCollection + Answer a new instance of the receiver which streams from the end + of aCollection. -type - Answer a CType for the receiver +with: aCollection from: firstIndex to: lastIndex + Answer a new instance of the receiver which streams from the + firstIndex-th item of aCollection to the lastIndex-th. The pointer + is moved to the last item in that range.  -File: gst-base.info, Node: CObject-finalization, Next: CObject-pointer-like behavior, Prev: CObject-conversion, Up: CObject +File: gst-base.info, Node: WriteStream-accessing, Next: WriteStream-accessing-writing, Prev: WriteStream class-instance creation, Up: WriteStream -CObject: finalization ---------------------- +WriteStream: accessing +---------------------- -finalize - To make the VM call this, use #addToBeFinalized. It frees - automatically any memory pointed to by the CObject. It is not - automatically enabled because big trouble hits you if you use - #free and the receiver doesn't point to the base of a malloc-ed - area. +size + Answer how many objects have been written  -File: gst-base.info, Node: CObject-pointer-like behavior, Prev: CObject-finalization, Up: CObject +File: gst-base.info, Node: WriteStream-accessing-writing, Next: WriteStream-positioning, Prev: WriteStream-accessing, Up: WriteStream -CObject: pointer-like behavior +WriteStream: accessing-writing ------------------------------ -+ anInteger - Return another instance of the receiver's class which points at - &receiver[anInteger] (or, if you prefer, what `receiver + - anInteger' does in C). - -- intOrPtr - If intOrPtr is an integer, return another instance of the - receiver's class pointing at &receiver[-anInteger] (or, if you - prefer, what `receiver - anInteger' does in C). If it is the same - class as the receiver, return the difference in chars, i.e. in - bytes, between the two pointed addresses (or, if you prefer, what - `receiver - anotherCharPtr' does in C) - -addressAt: anIndex - Return a new CObject of the element type, corresponding to an - object that is anIndex places past the receiver (remember that - CObjects represent pointers and that C pointers behave like - arrays). anIndex is zero-based, just like with all other C-style - accessing. - -at: anIndex - Dereference a pointer that is anIndex places past the receiver - (remember that CObjects represent pointers and that C pointers - behave like arrays). anIndex is zero-based, just like with all - other C-style accessing. - -at: anIndex put: aValue - Store anIndex places past the receiver the passed Smalltalk object - or CObject `aValue'; if it is a CObject is dereferenced: that is, - this method is equivalent either to cobj[anIndex]=aValue or - cobj[anIndex]=*aValue. anIndex is zero-based, just like with all - other C-style accessing. In both cases, aValue should be of the - element type or of the corresponding Smalltalk type (that is, a - String is ok for an array of CStrings) to avoid typing problems - which however will not be signaled because C is untyped. - -decr - Adjust the pointer by sizeof(dereferencedType) bytes down (i.e. - -receiver) - -decrBy: anInteger - Adjust the pointer by anInteger elements down (i.e. receiver -= - anInteger) - -incr - Adjust the pointer by sizeof(dereferencedType) bytes up (i.e. - ++receiver) - -incrBy: anInteger - Adjust the pointer by anInteger elements up (i.e. receiver += - anInteger) +contents + Returns a collection of the same type that the stream accesses, up + to and including the final element. + +nextPut: anObject + Store anObject as the next item in the receiver. Grow the + collection if necessary + +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: WriteStream-positioning, Prev: WriteStream-accessing-writing, Up: WriteStream + +WriteStream: positioning +------------------------ + +emptyStream + Extension - Reset the stream  -File: gst-base.info, Node: Collection, Next: CompiledBlock, Prev: CObject, Up: Base classes +File: gst-base.info, Node: ZeroDivide, Prev: WriteStream, Up: Base classes -Collection +ZeroDivide ========== Defined in namespace Smalltalk -Superclass: Object -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 the objects are stored or organized; I say nothing about - this. I merely provide some object creation and access routines - for general collections of objects. +Superclass: ArithmeticError +Category: Language-Exceptions + A ZeroDivide exception is raised by numeric classes when a program + tries to divide by zero. Information on the dividend is available + to the handler. * Menu: -* Collection class-instance creation:: (class) -* Collection-adding:: (instance) -* Collection-converting:: (instance) -* Collection-copying Collections:: (instance) -* Collection-enumeration:: (instance) -* Collection-finalization:: (instance) -* Collection-printing:: (instance) -* Collection-removing:: (instance) -* Collection-storing:: (instance) -* Collection-testing collections:: (instance) +* ZeroDivide class-instance creation:: (class) +* ZeroDivide-accessing:: (instance) +* ZeroDivide-description:: (instance)  -File: gst-base.info, Node: Collection class-instance creation, Next: Collection-adding, Up: Collection +File: gst-base.info, Node: ZeroDivide class-instance creation, Next: ZeroDivide-accessing, Up: ZeroDivide -Collection class: instance creation +ZeroDivide class: instance creation ----------------------------------- -with: anObject - Answer a collection whose only element is anObject +dividend: aNumber + Create a new ZeroDivide object remembering that the dividend was + aNumber. -with: firstObject with: secondObject - Answer a collection whose only elements are the parameters in the - order they were passed +new + Create a new ZeroDivide object; the dividend is conventionally set + to zero. -with: firstObject with: secondObject with: thirdObject - Answer a collection whose only elements are the parameters in the - order they were passed -with: firstObject with: secondObject with: thirdObject with: fourthObject - Answer a collection whose only elements are the parameters in the - order they were passed + +File: gst-base.info, Node: ZeroDivide-accessing, Next: ZeroDivide-description, Prev: ZeroDivide class-instance creation, Up: ZeroDivide -with: firstObject with: secondObject with: thirdObject with: fourthObject with: fifthObject - Answer a collection whose only elements are the parameters in the - order they were passed +ZeroDivide: accessing +--------------------- -withAll: aCollection - Answer a collection whose elements are all those in aCollection +dividend + Answer the number that was being divided by zero  -File: gst-base.info, Node: Collection-adding, Next: Collection-converting, Prev: Collection class-instance creation, Up: Collection +File: gst-base.info, Node: ZeroDivide-description, Prev: ZeroDivide-accessing, Up: ZeroDivide -Collection: adding ------------------- +ZeroDivide: description +----------------------- -add: newObject - Add newObject to the receiver, answer it +description + Answer a textual description of the exception. + + + +File: gst-base.info, Node: Class index, Next: Method index, Prev: Base classes, Up: Top + +Class index +*********** + +* Menu: + +* AbstractNamespace: AbstractNamespace. +* AlternativeObjectProxy: AlternativeObjectProxy. +* ArithmeticError: ArithmeticError. +* Array: Array. +* ArrayedCollection: ArrayedCollection. +* Association: Association. +* Autoload: Autoload. +* AutoloadClass: AutoloadClass. +* Bag: Bag. +* Behavior: Behavior. +* BindingDictionary: BindingDictionary. +* BlockClosure: BlockClosure. +* BlockContext: BlockContext. +* Boolean: Boolean. +* ByteArray: ByteArray. +* ByteStream: ByteStream. +* CAggregate: CAggregate. +* CallinProcess: CallinProcess. +* CArray: CArray. +* CArrayCType: CArrayCType. +* CBoolean: CBoolean. +* CByte: CByte. +* CChar: CChar. +* CCompound: CCompound. +* CDouble: CDouble. +* CFloat: CFloat. +* CFunctionDescriptor: CFunctionDescriptor. +* Character: Character. +* CharacterArray: CharacterArray. +* CInt: CInt. +* Class: Class. +* ClassDescription: ClassDescription. +* CLong: CLong. +* CObject: CObject. +* Collection: Collection. +* CompiledBlock: CompiledBlock. +* CompiledCode: CompiledCode. +* CompiledMethod: CompiledMethod. +* ContextPart: ContextPart. +* CoreException: CoreException. +* CPtr: CPtr. +* CPtrCType: CPtrCType. +* CScalar: CScalar. +* CScalarCType: CScalarCType. +* CShort: CShort. +* CSmalltalk: CSmalltalk. +* CString: CString. +* CStringCType: CStringCType. +* CStruct: CStruct. +* CType: CType. +* CUChar: CUChar. +* CUInt: CUInt. +* CULong: CULong. +* CUnion: CUnion. +* CUShort: CUShort. +* Date: Date. +* DateTime: DateTime. +* Delay: Delay. +* DelayedAdaptor: DelayedAdaptor. +* Dictionary: Dictionary. +* DirectedMessage: DirectedMessage. +* Directory: Directory. +* DLD: DLD. +* DumperProxy: DumperProxy. +* Duration: Duration. +* Error: Error. +* Exception: Exception. +* ExceptionSet: ExceptionSet. +* False: False. +* File: File. +* FileDescriptor: FileDescriptor. +* FileSegment: FileSegment. +* FileStream: FileStream. +* Float: Float. +* FloatD: FloatD. +* FloatE: FloatE. +* FloatQ: FloatQ. +* Fraction: Fraction. +* Halt: Halt. +* HashedCollection: HashedCollection. +* HomedAssociation: HomedAssociation. +* IdentityDictionary: IdentityDictionary. +* IdentitySet: IdentitySet. +* Integer: Integer. +* Interval: Interval. +* LargeArray: LargeArray. +* LargeArrayedCollection: LargeArrayedCollection. +* LargeArraySubpart: LargeArraySubpart. +* LargeByteArray: LargeByteArray. +* LargeInteger: LargeInteger. +* LargeNegativeInteger: LargeNegativeInteger. +* LargePositiveInteger: LargePositiveInteger. +* LargeWordArray: LargeWordArray. +* LargeZeroInteger: LargeZeroInteger. +* Link: Link. +* LinkedList: LinkedList. +* LookupKey: LookupKey. +* LookupTable: LookupTable. +* Magnitude: Magnitude. +* MappedCollection: MappedCollection. +* Memory: Memory. +* Message: Message. +* MessageNotUnderstood: MessageNotUnderstood. +* Metaclass: Metaclass. +* MethodContext: MethodContext. +* MethodDictionary: MethodDictionary. +* MethodInfo: MethodInfo. +* Namespace: Namespace. +* NetClients.URIResolver: NetClients.URIResolver. +* NetClients.URL: NetClients.URL. +* Notification: Notification. +* NullProxy: NullProxy. +* NullValueHolder: NullValueHolder. +* Number: Number. +* Object: Object. +* ObjectDumper: ObjectDumper. +* ObjectMemory: ObjectMemory. +* OrderedCollection: OrderedCollection. +* Package: Package. +* PackageLoader: PackageLoader. +* PluggableAdaptor: PluggableAdaptor. +* PluggableProxy: PluggableProxy. +* Point: Point. +* PositionableStream: PositionableStream. +* Process: Process. +* ProcessorScheduler: ProcessorScheduler. +* Promise: Promise. +* Random: Random. +* ReadStream: ReadStream. +* ReadWriteStream: ReadWriteStream. +* Rectangle: Rectangle. +* RecursionLock: RecursionLock. +* RootNamespace: RootNamespace. +* RunArray: RunArray. +* ScaledDecimal: ScaledDecimal. +* Semaphore: Semaphore. +* SequenceableCollection: SequenceableCollection. +* Set: Set. +* SharedQueue: SharedQueue. +* Signal: Signal. +* SingletonProxy: SingletonProxy. +* SmallInteger: SmallInteger. +* SortedCollection: SortedCollection. +* Stream: Stream. +* String: String. +* Symbol: Symbol. +* SymLink: SymLink. +* SystemDictionary: SystemDictionary. +* SystemExceptions.AlreadyDefined: SystemExceptions.AlreadyDefined. +* SystemExceptions.ArgumentOutOfRange: SystemExceptions.ArgumentOutOfRange. +* SystemExceptions.BadReturn: SystemExceptions.BadReturn. +* SystemExceptions.CInterfaceError: SystemExceptions.CInterfaceError. +* SystemExceptions.EmptyCollection: SystemExceptions.EmptyCollection. +* SystemExceptions.EndOfStream: SystemExceptions.EndOfStream. +* SystemExceptions.FileError: SystemExceptions.FileError. +* SystemExceptions.IndexOutOfRange: SystemExceptions.IndexOutOfRange. +* SystemExceptions.InvalidArgument: SystemExceptions.InvalidArgument. +* SystemExceptions.InvalidProcessState: SystemExceptions.InvalidProcessState. +* SystemExceptions.InvalidSize: SystemExceptions.InvalidSize. +* SystemExceptions.InvalidValue: SystemExceptions.InvalidValue. +* SystemExceptions.MustBeBoolean: SystemExceptions.MustBeBoolean. +* SystemExceptions.MutationError: SystemExceptions.MutationError. +* SystemExceptions.NoRunnableProcess: SystemExceptions.NoRunnableProcess. +* SystemExceptions.NotFound: SystemExceptions.NotFound. +* SystemExceptions.NotImplemented: SystemExceptions.NotImplemented. +* SystemExceptions.NotIndexable: SystemExceptions.NotIndexable. +* SystemExceptions.NotYetImplemented: SystemExceptions.NotYetImplemented. +* SystemExceptions.PrimitiveFailed: SystemExceptions.PrimitiveFailed. +* SystemExceptions.ProcessBeingTerminated: SystemExceptions.ProcessBeingTerminated. +* SystemExceptions.ProcessTerminated: SystemExceptions.ProcessTerminated. +* SystemExceptions.ReadOnlyObject: SystemExceptions.ReadOnlyObject. +* SystemExceptions.ShouldNotImplement: SystemExceptions.ShouldNotImplement. +* SystemExceptions.SubclassResponsibility: SystemExceptions.SubclassResponsibility. +* SystemExceptions.UserInterrupt: SystemExceptions.UserInterrupt. +* SystemExceptions.VMError: SystemExceptions.VMError. +* SystemExceptions.WrongArgumentCount: SystemExceptions.WrongArgumentCount. +* SystemExceptions.WrongClass: SystemExceptions.WrongClass. +* SystemExceptions.WrongMessageSent: SystemExceptions.WrongMessageSent. +* TextCollector: TextCollector. +* Time: Time. +* TokenStream: TokenStream. +* TrappableEvent: TrappableEvent. +* True: True. +* UndefinedObject: UndefinedObject. +* ValueAdaptor: ValueAdaptor. +* ValueHolder: ValueHolder. +* VariableBinding: VariableBinding. +* VersionableObjectProxy: VersionableObjectProxy. +* VFS.ArchiveFileHandler: VFS.ArchiveFileHandler. +* VFS.ArchiveMemberHandler: VFS.ArchiveMemberHandler. +* VFS.DecodedFileHandler: VFS.DecodedFileHandler. +* VFS.ExternalArchiveFileHandler: VFS.ExternalArchiveFileHandler. +* VFS.RealFileHandler: VFS.RealFileHandler. +* VFS.VFSHandler: VFS.VFSHandler. +* Warning: Warning. +* WeakArray: WeakArray. +* WeakIdentitySet: WeakIdentitySet. +* WeakKeyDictionary: WeakKeyDictionary. +* WeakKeyIdentityDictionary: WeakKeyIdentityDictionary. +* WeakSet: WeakSet. +* WeakValueIdentityDictionary: WeakValueIdentityDictionary. +* WeakValueLookupTable: WeakValueLookupTable. +* WordArray: WordArray. +* WriteStream: WriteStream. +* ZeroDivide: ZeroDivide. + + +File: gst-base.info, Node: Method index, Next: Cross-reference, Prev: Class index, Up: Top + +Method index +************ + +* Menu: + +* & <1>: True-basic. +* & <2>: Set-arithmetic. +* & <3>: False-basic. +* &: Boolean-basic. +* * <1>: SmallInteger-built ins. +* * <2>: ScaledDecimal-arithmetic. +* * <3>: Point-arithmetic. +* * <4>: Number-arithmetic. +* * <5>: LargeZeroInteger-arithmetic. +* * <6>: LargeInteger-arithmetic. +* * <7>: Fraction-arithmetic. +* * <8>: FloatQ-built ins. +* * <9>: FloatE-built ins. +* * <10>: FloatD-built ins. +* *: Duration-arithmetics. +* + <1>: SmallInteger-built ins. +* + <2>: Set-arithmetic. +* + <3>: ScaledDecimal-arithmetic. +* + <4>: Point-arithmetic. +* + <5>: Number-arithmetic. +* + <6>: LargeZeroInteger-arithmetic. +* + <7>: LargePositiveInteger-arithmetic. +* + <8>: LargeNegativeInteger-reverting to LargePositiveInteger. +* + <9>: LargeInteger-arithmetic. +* + <10>: Fraction-arithmetic. +* + <11>: FloatQ-built ins. +* + <12>: FloatE-built ins. +* + <13>: FloatD-built ins. +* + <14>: Duration-arithmetics. +* + <15>: DateTime-basic. +* +: CObject-pointer-like behavior. +* , <1>: TrappableEvent-instance creation. +* , <2>: String class-basic. +* , <3>: SequenceableCollection-copying SequenceableCollections. +* , <4>: Exception class-creating ExceptionCollections. +* ,: ArrayedCollection-basic. +* - <1>: SmallInteger-built ins. +* - <2>: Set-arithmetic. +* - <3>: ScaledDecimal-arithmetic. +* - <4>: Point-arithmetic. +* - <5>: Number-arithmetic. +* - <6>: LargeZeroInteger-arithmetic. +* - <7>: LargePositiveInteger-arithmetic. +* - <8>: LargeNegativeInteger-reverting to LargePositiveInteger. +* - <9>: LargeInteger-arithmetic. +* - <10>: Fraction-arithmetic. +* - <11>: FloatQ-built ins. +* - <12>: FloatE-built ins. +* - <13>: FloatD-built ins. +* - <14>: Duration-arithmetics. +* - <15>: DateTime-basic. +* -: CObject-pointer-like behavior. +* ->: Object-syntax shortcuts. +* / <1>: SmallInteger-built ins. +* / <2>: ScaledDecimal-arithmetic. +* / <3>: Point-arithmetic. +* / <4>: Number-arithmetic. +* / <5>: LargeZeroInteger-arithmetic. +* / <6>: LargeInteger-arithmetic. +* / <7>: Fraction-arithmetic. +* / <8>: FloatQ-built ins. +* / <9>: FloatE-built ins. +* / <10>: FloatD-built ins. +* /: Duration-arithmetics. +* // <1>: SmallInteger-built ins. +* // <2>: ScaledDecimal-arithmetic. +* // <3>: Point-arithmetic. +* // <4>: Number-arithmetic. +* // <5>: LargeZeroInteger-arithmetic. +* // <6>: LargeInteger-arithmetic. +* //: Fraction-arithmetic. +* < <1>: Time-comparing. +* < <2>: SmallInteger-built ins. +* < <3>: Set-comparing. +* < <4>: ScaledDecimal-comparing. +* < <5>: Point-comparing. +* < <6>: Magnitude-basic. +* < <7>: LookupKey-testing. +* < <8>: LargeInteger-testing. +* < <9>: LargeArraySubpart-comparing. +* < <10>: Fraction-comparing. +* < <11>: FloatQ-built ins. +* < <12>: FloatE-built ins. +* < <13>: FloatD-built ins. +* < <14>: DateTime-testing. +* < <15>: Date-testing. +* < <16>: CharacterArray-comparing. +* <: Character-comparing. +* <<: Stream-printing. +* <= <1>: SmallInteger-built ins. +* <= <2>: Set-comparing. +* <= <3>: ScaledDecimal-comparing. +* <= <4>: Point-comparing. +* <= <5>: Magnitude-basic. +* <= <6>: LargeInteger-testing. +* <= <7>: LargeArraySubpart-comparing. +* <= <8>: Fraction-comparing. +* <= <9>: FloatQ-built ins. +* <= <10>: FloatE-built ins. +* <= <11>: FloatD-built ins. +* <= <12>: CharacterArray-comparing. +* <=: Character-comparing. +* = <1>: Time-comparing. +* = <2>: Symbol-built ins. +* = <3>: SmallInteger-built ins. +* = <4>: SequenceableCollection-testing. +* = <5>: ScaledDecimal-comparing. +* = <6>: RunArray-testing. +* = <7>: Rectangle-testing. +* = <8>: Point-comparing. +* = <9>: Object-built ins. +* = <10>: NetClients.URL-comparing. +* = <11>: MethodInfo-equality. +* = <12>: Magnitude-basic. +* = <13>: LookupKey-testing. +* = <14>: LargeInteger-testing. +* = <15>: LargeArraySubpart-comparing. +* = <16>: LargeArrayedCollection-basic. +* = <17>: Interval-testing. +* = <18>: HashedCollection-testing collections. +* = <19>: Fraction-comparing. +* = <20>: FloatQ-built ins. +* = <21>: FloatE-built ins. +* = <22>: FloatD-built ins. +* = <23>: FileSegment-equality. +* = <24>: Exception-comparison. +* = <25>: Dictionary-testing. +* = <26>: Delay-comparing. +* = <27>: DateTime-testing. +* = <28>: Date-testing. +* = <29>: CompiledMethod-basic. +* = <30>: CompiledCode-basic. +* = <31>: CompiledBlock-basic. +* = <32>: Class-testing. +* = <33>: Character-built ins. +* = <34>: Bag-testing collections. +* = <35>: Association-testing. +* =: AbstractNamespace-basic & copying. +* == <1>: SmallInteger-built ins. +* ==: Object-built ins. +* > <1>: SmallInteger-built ins. +* > <2>: Set-comparing. +* > <3>: ScaledDecimal-comparing. +* > <4>: Point-comparing. +* > <5>: Magnitude-basic. +* > <6>: LargeInteger-testing. +* > <7>: Fraction-comparing. +* > <8>: FloatQ-built ins. +* > <9>: FloatE-built ins. +* > <10>: FloatD-built ins. +* > <11>: CharacterArray-comparing. +* >: Character-comparing. +* >= <1>: SmallInteger-built ins. +* >= <2>: Set-comparing. +* >= <3>: ScaledDecimal-comparing. +* >= <4>: Point-comparing. +* >= <5>: Magnitude-basic. +* >= <6>: LargeInteger-testing. +* >= <7>: Fraction-comparing. +* >= <8>: FloatQ-built ins. +* >= <9>: FloatE-built ins. +* >= <10>: FloatD-built ins. +* >= <11>: CharacterArray-comparing. +* >=: Character-comparing. +* >>: Behavior-accessing the methodDictionary. +* @: Number-point creation. +* \\ <1>: SmallInteger-built ins. +* \\ <2>: ScaledDecimal-arithmetic. +* \\ <3>: Number-arithmetic. +* \\ <4>: LargeZeroInteger-arithmetic. +* \\ <5>: LargeInteger-arithmetic. +* \\: Fraction-arithmetic. +* abbreviationOfDay_: Date class-basic. +* abort: ObjectMemory class-builtins. +* abs <1>: Point-arithmetic. +* abs <2>: Number-misc math. +* abs <3>: LargePositiveInteger-numeric testing. +* abs <4>: LargeNegativeInteger-numeric testing. +* abs: Duration-arithmetics. +* acceptUsageForClass_ <1>: SingletonProxy class-accessing. +* acceptUsageForClass_ <2>: DumperProxy class-accessing. +* acceptUsageForClass_: AlternativeObjectProxy class-instance creation. +* accesses_ <1>: CompiledMethod-testing. +* accesses_: CompiledCode-testing accesses. +* activePriority: ProcessorScheduler-basic. +* activeProcess: ProcessorScheduler-basic. +* add_ <1>: WeakSet-accessing. +* add_ <2>: WeakKeyDictionary-accessing. +* add_ <3>: OrderedCollection-adding. +* add_ <4>: MappedCollection-basic. +* add_ <5>: LookupTable-accessing. +* add_ <6>: LinkedList-adding. +* add_ <7>: HashedCollection-accessing. +* add_ <8>: Dictionary-accessing. +* add_ <9>: Collection-adding. +* add_ <10>: BindingDictionary-forward declarations. +* add_ <11>: Bag-adding. +* add_: ArrayedCollection-basic. +* add_after_: OrderedCollection-adding. +* add_afterIndex_ <1>: SortedCollection-disabled. +* add_afterIndex_ <2>: RunArray-adding. +* add_afterIndex_: OrderedCollection-adding. +* add_before_: OrderedCollection-adding. +* add_beforeIndex_: OrderedCollection-adding. +* add_withOccurrences_: Bag-adding. +* addAll_ <1>: OrderedCollection-adding. +* addAll_: Collection-adding. +* addAll_after_: OrderedCollection-adding. +* addAll_afterIndex_ <1>: SortedCollection-disabled. +* addAll_afterIndex_ <2>: RunArray-adding. +* addAll_afterIndex_: OrderedCollection-adding. +* addAll_before_: OrderedCollection-adding. +* addAll_beforeIndex_: OrderedCollection-adding. +* addAllFirst_ <1>: SortedCollection-disabled. +* addAllFirst_ <2>: RunArray-adding. +* addAllFirst_: OrderedCollection-adding. +* addAllLast_ <1>: SortedCollection-disabled. +* addAllLast_ <2>: RunArray-adding. +* addAllLast_: OrderedCollection-adding. +* addClassVarName_ <1>: Metaclass-delegation. +* addClassVarName_: Class-accessing instances and variables. +* addDays_: Date-basic. +* addDependent_ <1>: UndefinedObject-dependents access. +* addDependent_: Object-dependents access. +* addFeature_: SystemDictionary-special accessing. +* addFirst_ <1>: SortedCollection-disabled. +* addFirst_ <2>: RunArray-adding. +* addFirst_ <3>: OrderedCollection-adding. +* addFirst_: LinkedList-adding. +* addInstVarName_: Behavior-instance variables. +* addLast_ <1>: SortedCollection-disabled. +* addLast_ <2>: RunArray-adding. +* addLast_ <3>: OrderedCollection-adding. +* addLast_: LinkedList-adding. +* addLibrary_: DLD class-dynamic linking. +* addModule_: DLD class-dynamic linking. +* address <1>: CObject-accessing. +* address: CFunctionDescriptor-accessing. +* address_ <1>: CType-C instance creation. +* address_ <2>: CObject-accessing. +* address_ <3>: CObject class-instance creation. +* address_: CFunctionDescriptor-accessing. +* addressAt_: CObject-pointer-like behavior. +* addressOf_ <1>: ObjectMemory class-builtins. +* addressOf_: CFunctionDescriptor class-testing. +* addressOfOOP_: ObjectMemory class-builtins. +* addSelector_withMethod_: Behavior-method dictionary. +* addSharedPool_ <1>: Metaclass-delegation. +* addSharedPool_: Class-accessing instances and variables. +* addSubclass_: Behavior-creating a class hierarchy. +* addSubspace_: AbstractNamespace-namespace hierarchy. +* addTime_: Time-arithmetic. +* addToBeFinalized: Object-finalization. +* after_: SequenceableCollection-basic. +* alignof <1>: CUShort-accessing. +* alignof <2>: CUShort class-accessing. +* alignof <3>: CULong-accessing. +* alignof <4>: CULong class-accessing. +* alignof <5>: CUInt-accessing. +* alignof <6>: CUInt class-accessing. +* alignof <7>: CUChar-accessing. +* alignof <8>: CUChar class-getting info. +* alignof <9>: CType-accessing. +* alignof <10>: CSmalltalk-accessing. +* alignof <11>: CSmalltalk class-accessing. +* alignof <12>: CShort-accessing. +* alignof <13>: CShort class-accessing. +* alignof <14>: CPtr-accessing. +* alignof <15>: CLong-accessing. +* alignof <16>: CLong class-accessing. +* alignof <17>: CInt-accessing. +* alignof <18>: CInt class-accessing. +* alignof <19>: CFloat-accessing. +* alignof <20>: CFloat class-accessing. +* alignof <21>: CDouble-accessing. +* alignof <22>: CDouble class-accessing. +* alignof <23>: CCompound class-subclass creation. +* alignof <24>: CChar-accessing. +* alignof <25>: CChar class-accessing. +* alignof <26>: CArrayCType-accessing. +* alignof <27>: CArray-accessing. +* alignof: CAggregate class-accessing. +* alignTo_: Integer-extension. +* aliveObjectsDo_: WeakArray-accessing. +* allAssociations: AbstractNamespace-accessing. +* allBehaviorsDo_: AbstractNamespace-accessing. +* allBlocksDo_: CompiledMethod-accessing. +* allClassesDo_: AbstractNamespace-accessing. +* allClassObjectsDo_: AbstractNamespace-accessing. +* allClassVarNames <1>: Metaclass-delegation. +* allClassVarNames <2>: Class-accessing instances and variables. +* allClassVarNames: Behavior-accessing instances and variables. +* allExceptionsDo_ <1>: TrappableEvent-enumerating. +* allExceptionsDo_ <2>: ExceptionSet-enumerating. +* allExceptionsDo_ <3>: Exception class-interoperability with TrappableEvents. +* allExceptionsDo_: CoreException-enumerating. +* allFiles: Package-accessing. +* allInstances: Behavior-accessing instances and variables. +* allInstancesDo_: Behavior-enumerating. +* allInstVarNames: Behavior-accessing instances and variables. +* allLiterals: CompiledMethod-accessing. +* allMask_: Integer-bit operators. +* allMetaclassesDo_: AbstractNamespace-accessing. +* alloc_: CObject class-instance creation. +* alloc_type_: CObject class-instance creation. +* allocFailures: ObjectMemory-accessing. +* allocMatches: ObjectMemory-accessing. +* allocProbes: ObjectMemory-accessing. +* allocSplits: ObjectMemory-accessing. +* allOwners: Object-built ins. +* allSatisfy_: Collection-enumeration. +* allSelectors: Behavior-accessing the methodDictionary. +* allSharedPools <1>: Metaclass-delegation. +* allSharedPools: Behavior-accessing instances and variables. +* allSubassociationsDo_: AbstractNamespace-namespace hierarchy. +* allSubclasses: Behavior-accessing class hierarchy. +* allSubclassesDo_: Behavior-enumerating. +* allSubinstancesDo_: Behavior-enumerating. +* allSubspaces: AbstractNamespace-namespace hierarchy. +* allSubspacesDo_: AbstractNamespace-namespace hierarchy. +* allSuperclasses: Behavior-accessing class hierarchy. +* allSuperclassesDo_: Behavior-enumerating. +* allSuperspaces: AbstractNamespace-namespace hierarchy. +* allSuperspacesDo_: AbstractNamespace-namespace hierarchy. +* amountToTranslateWithin_: Rectangle-rectangle functions. +* and_ <1>: True-basic. +* and_ <2>: False-basic. +* and_: Boolean-basic. +* anyMask_: Integer-bit operators. +* anyOne <1>: SequenceableCollection-enumerating. +* anyOne: Collection-enumeration. +* anySatisfy_: Collection-enumeration. +* append: FileDescriptor class-instance creation. +* append_to_: Directory class-file name management. +* arcCos <1>: Number-misc math. +* arcCos: Float-built ins. +* arcSin <1>: Number-misc math. +* arcSin: Float-built ins. +* arcTan <1>: Point-point functions. +* arcTan <2>: Number-misc math. +* arcTan: Float-built ins. +* area: Rectangle-rectangle functions. +* areasOutside_: Rectangle-rectangle functions. +* argument <1>: Signal-accessing. +* argument: Message-accessing. +* argumentCount <1>: Signal-accessing. +* argumentCount: BlockClosure-accessing. +* arguments <1>: SystemDictionary-miscellaneous. +* arguments <2>: Signal-accessing. +* arguments: Message-accessing. +* arguments_: Message-accessing. +* arithmeticError_: Number-error raising. +* arrayType_: CType-accessing. +* article <1>: Class-printing. +* article: Behavior-support for lightweight classes. +* asArray <1>: WeakArray-conversion. +* asArray: Collection-converting. +* asBag: Collection-converting. +* asByteArray <1>: String-converting. +* asByteArray <2>: Collection-converting. +* asByteArray: CharacterArray-converting. +* asCBooleanValue <1>: True-C hacks. +* asCBooleanValue <2>: False-C hacks. +* asCBooleanValue: Boolean-C hacks. +* asCData_ <1>: String-built ins. +* asCData_: ByteArray-built ins. +* asCharacter: Integer-converting. +* asciiValue: Character-built ins. +* asciiValue_: Character class-built ins. +* asClass <1>: Metaclass-testing functionality. +* asClass <2>: ClassDescription-conversion. +* asClass <3>: Class-testing functionality. +* asClass: Behavior-support for lightweight classes. +* asClassPoolKey: CharacterArray-converting. +* asDate: DateTime-splitting in dates & times. +* asExactFraction: Float-coercing. +* asFloat <1>: Number-converting. +* asFloat: Float-coercing. +* asFloatD <1>: SmallInteger-built ins. +* asFloatD <2>: ScaledDecimal-coercion. +* asFloatD <3>: Number-converting. +* asFloatD <4>: LargePositiveInteger-converting. +* asFloatD <5>: LargeNegativeInteger-converting. +* asFloatD <6>: Fraction-converting. +* asFloatD <7>: FloatQ-built ins. +* asFloatD <8>: FloatE-built ins. +* asFloatD: FloatD-coercing. +* asFloatE <1>: SmallInteger-built ins. +* asFloatE <2>: ScaledDecimal-coercion. +* asFloatE <3>: Number-converting. +* asFloatE <4>: LargePositiveInteger-converting. +* asFloatE <5>: LargeNegativeInteger-converting. +* asFloatE <6>: Fraction-converting. +* asFloatE <7>: FloatQ-built ins. +* asFloatE <8>: FloatE-coercing. +* asFloatE: FloatD-built ins. +* asFloatQ <1>: SmallInteger-built ins. +* asFloatQ <2>: ScaledDecimal-coercion. +* asFloatQ <3>: Number-converting. +* asFloatQ <4>: LargePositiveInteger-converting. +* asFloatQ <5>: LargeNegativeInteger-converting. +* asFloatQ <6>: Fraction-converting. +* asFloatQ <7>: FloatQ-coercing. +* asFloatQ <8>: FloatE-built ins. +* asFloatQ: FloatD-built ins. +* asFraction <1>: ScaledDecimal-coercion. +* asFraction <2>: Integer-converting. +* asFraction <3>: Fraction-converting. +* asFraction: Float-coercing. +* asGlobalKey: CharacterArray-converting. +* asInteger <1>: Number-truncation and round off. +* asInteger <2>: CharacterArray-converting. +* asInteger: Character-built ins. +* asLocal: DateTime-time zones. +* asLowercase <1>: CharacterArray-converting. +* asLowercase: Character-coercion methods. +* asMetaclass: ClassDescription-conversion. +* asNumber: CharacterArray-converting. +* asObject <1>: SmallInteger-built ins. +* asObject: LargeInteger-disabled. +* asObjectNoFail <1>: SmallInteger-built ins. +* asObjectNoFail: LargeInteger-disabled. +* asOop: Object-built ins. +* asOrderedCollection: Collection-converting. +* asPoint <1>: Point-converting. +* asPoint: Number-point creation. +* asPoolKey: CharacterArray-converting. +* asRectangle <1>: Point-converting. +* asRectangle: Number-converting. +* asRunArray: Collection-converting. +* asScaledDecimal_ <1>: Number-converting. +* asScaledDecimal_: Integer-converting. +* asScaledDecimal_scale_: Number-converting. +* asSeconds <1>: Time-accessing (non ANSI & for Durations). +* asSeconds <2>: DateTime-computations. +* asSeconds: Date-date computations. +* asSet <1>: Collection-converting. +* asSet: Bag-enumerating the elements of a collection. +* assigns_ <1>: CompiledMethod-testing. +* assigns_: CompiledCode-testing accesses. +* associationAt_: Dictionary-accessing. +* associationAt_ifAbsent_ <1>: Namespace-overrides for superspaces. +* associationAt_ifAbsent_ <2>: LookupTable-accessing. +* associationAt_ifAbsent_: Dictionary-accessing. +* associationsDo_ <1>: Namespace-overrides for superspaces. +* associationsDo_ <2>: LookupTable-enumerating. +* associationsDo_: Dictionary-dictionary enumerating. +* asSortedCollection: Collection-converting. +* asSortedCollection_: Collection-converting. +* asString <1>: Symbol-converting. +* asString <2>: String-converting. +* asString <3>: FileSegment-basic. +* asString <4>: CharacterArray-converting. +* asString <5>: Character-coercion methods. +* asString: ByteArray-converting. +* asSymbol <1>: Symbol-converting. +* asSymbol <2>: String-converting. +* asSymbol <3>: CharacterArray-converting. +* asSymbol: Character-coercion methods. +* asTime: DateTime-splitting in dates & times. +* asUppercase <1>: CharacterArray-converting. +* asUppercase: Character-coercion methods. +* asUTC: DateTime-time zones. +* asValue: Object-conversion. +* asyncCallFrom_: CFunctionDescriptor-calling. +* asyncCallNoRetryFrom_: CFunctionDescriptor-calling. +* at_ <1>: WeakArray-accessing. +* at_ <2>: VFS.VFSHandler-directory operations. +* at_ <3>: VFS.ArchiveMemberHandler-directory operations. +* at_ <4>: VFS.ArchiveFileHandler-directory operations. +* at_ <5>: String-built ins. +* at_ <6>: SmallInteger-builtins. +* at_ <7>: RunArray-accessing. +* at_ <8>: OrderedCollection-accessing. +* at_ <9>: Object-built ins. +* at_ <10>: Memory class-accessing. +* at_ <11>: MappedCollection-basic. +* at_ <12>: LinkedList-accessing. +* at_ <13>: Link-iteration. +* at_ <14>: LargeZeroInteger-accessing. +* at_ <15>: LargeInteger-built-ins. +* at_ <16>: LargeArrayedCollection-accessing. +* at_ <17>: Interval-basic. +* at_ <18>: HashedCollection-accessing. +* at_ <19>: Directory-accessing. +* at_ <20>: Dictionary-accessing. +* at_ <21>: DateTime-splitting in dates & times. +* at_: CObject-pointer-like behavior. +* at_ifAbsent_ <1>: WeakValueLookupTable-hacks. +* at_ifAbsent_ <2>: SequenceableCollection-basic. +* at_ifAbsent_ <3>: Namespace-overrides for superspaces. +* at_ifAbsent_ <4>: LookupTable-accessing. +* at_ifAbsent_: Dictionary-accessing. +* at_ifAbsentPut_: Dictionary-accessing. +* at_ifPresent_ <1>: WeakValueLookupTable-hacks. +* at_ifPresent_ <2>: Namespace-overrides for superspaces. +* at_ifPresent_ <3>: LookupTable-accessing. +* at_ifPresent_: Dictionary-accessing. +* at_put_ <1>: WeakKeyDictionary-accessing. +* at_put_ <2>: WeakArray-accessing. +* at_put_ <3>: String-built ins. +* at_put_ <4>: SortedCollection-disabled. +* at_put_ <5>: SmallInteger-builtins. +* at_put_ <6>: RunArray-accessing. +* at_put_ <7>: OrderedCollection-accessing. +* at_put_ <8>: Object-built ins. +* at_put_ <9>: MethodDictionary-adding. +* at_put_ <10>: Memory class-accessing. +* at_put_ <11>: MappedCollection-basic. +* at_put_ <12>: LookupTable-accessing. +* at_put_ <13>: LinkedList-accessing. +* at_put_ <14>: Link-iteration. +* at_put_ <15>: LargeInteger-built-ins. +* at_put_ <16>: LargeArrayedCollection-accessing. +* at_put_ <17>: Interval-basic. +* at_put_ <18>: HashedCollection-accessing. +* at_put_ <19>: Dictionary-accessing. +* at_put_ <20>: CompiledCode-accessing. +* at_put_ <21>: CObject-pointer-like behavior. +* at_put_: BindingDictionary-forward declarations. +* at_put_type_: CObject-C data access. +* at_type_: CObject-C data access. +* atAll_put_ <1>: WeakArray-accessing. +* atAll_put_: SequenceableCollection-basic. +* atAllPut_ <1>: WeakArray-accessing. +* atAllPut_: SequenceableCollection-basic. +* atEnd <1>: TokenStream-basic. +* atEnd <2>: Stream-testing. +* atEnd <3>: Random-basic. +* atEnd <4>: PositionableStream-testing. +* atEnd <5>: ObjectDumper-stream interface. +* atEnd <6>: FileStream-testing. +* atEnd: FileDescriptor-testing. +* backspace: Character class-constants. +* backtrace <1>: SystemDictionary-miscellaneous. +* backtrace <2>: ContextPart-printing. +* backtrace: ContextPart class-exception handling. +* backtraceOn_ <1>: ContextPart-printing. +* backtraceOn_: ContextPart class-exception handling. +* badReturnError: Object-exception handling. +* basicAt_ <1>: String-built ins. +* basicAt_ <2>: SmallInteger-builtins. +* basicAt_ <3>: Object-built ins. +* basicAt_: CharacterArray-basic. +* basicAt_put_ <1>: String-built ins. +* basicAt_put_ <2>: SmallInteger-builtins. +* basicAt_put_ <3>: Object-built ins. +* basicAt_put_: CharacterArray-basic. +* basicAtEnd: PositionableStream-testing. +* basicBacktrace: SystemDictionary-builtins. +* basicFlush: FileStream-buffering. +* basicLeftShift_: LargeInteger-primitive operations. +* basicMessageText: Signal-accessing. +* basicNew: Behavior-built ins. +* basicNew_: Behavior-built ins. +* basicNewInFixedSpace: Behavior-built ins. +* basicNewInFixedSpace_: Behavior-built ins. +* basicPosition_: PositionableStream-positioning. +* basicPrint: Object-built ins. +* basicPrintNl: Object-printing. +* basicPrintOn_: Object-printing. +* basicRightShift_: LargeInteger-primitive operations. +* basicSize: Object-built ins. +* become_: Object-built ins. +* beConsistent <1>: SortedCollection-enumerating. +* beConsistent: Collection-enumeration. +* before_: SequenceableCollection-basic. +* bell: Character class-constants. +* between_and_ <1>: Random-basic. +* between_and_ <2>: Random class-shortcuts. +* between_and_: Magnitude-misc methods. +* bigEndian: Memory class-accessing. +* bigObjectThreshold: ObjectMemory class-builtins. +* bigObjectThreshold_: ObjectMemory class-builtins. +* binaryRepresentationObject <1>: VariableBinding-saving and loading. +* binaryRepresentationObject <2>: Object-saving and loading. +* binaryRepresentationObject <3>: CompiledMethod-saving and loading. +* binaryRepresentationObject: CompiledBlock-saving and loading. +* binaryRepresentationVersion: Class-saving and loading. +* binding: ClassDescription-conversion. +* bindingFor_: Class-accessing instances and variables. +* bindWith_: CharacterArray-string processing. +* bindWith_with_: CharacterArray-string processing. +* bindWith_with_with_: CharacterArray-string processing. +* bindWith_with_with_with_: CharacterArray-string processing. +* bindWithArguments_: CharacterArray-string processing. +* binomial_: Integer-math methods. +* bitAnd_ <1>: SmallInteger-built ins. +* bitAnd_: LargeInteger-bit operations. +* bitAt_ <1>: LargeInteger-bit operations. +* bitAt_: Integer-bit operators. +* bitAt_put_: Integer-bit operators. +* bitClear_: Integer-bit operators. +* bitInvert <1>: LargeInteger-bit operations. +* bitInvert: Integer-bit operators. +* bitOr_ <1>: SmallInteger-built ins. +* bitOr_: LargeInteger-bit operations. +* bits: SmallInteger class-getting limits. +* bitShift_ <1>: SmallInteger-built ins. +* bitShift_: LargeInteger-bit operations. +* bitXor_ <1>: SmallInteger-built ins. +* bitXor_: LargeInteger-bit operations. +* block: BlockClosure-accessing. +* block_ <1>: BlockClosure-accessing. +* block_: BlockClosure class-instance creation. +* blockAt_: CompiledCode-accessing. +* blockCopy_: BlockClosure-built ins. +* bottom: Rectangle-accessing. +* bottom_: Rectangle-accessing. +* bottomCenter: Rectangle-accessing. +* bottomLeft: Rectangle-accessing. +* bottomLeft_: Rectangle-accessing. +* bottomRight: Rectangle-accessing. +* bottomRight_: Rectangle-accessing. +* breakpoint_return_: Object-debugging. +* broadcast_: Object-change and update. +* broadcast_with_: Object-change and update. +* broadcast_with_with_: Object-change and update. +* broadcast_withArguments_: Object-change and update. +* broadcast_withBlock_: Object-change and update. +* bufferSize: FileStream-buffering. +* bufferSize_: FileStream-buffering. +* builtFiles: Package-accessing. +* builtFilesFor_: PackageLoader class-accessing. +* byteAt_: ByteArray-built ins. +* byteAt_put_: ByteArray-built ins. +* bytecodeAt_: CompiledCode-accessing. +* bytecodeAt_put_: CompiledCode-accessing. +* byteCodeCounter: SystemDictionary-builtins. +* bytes_from_compare_: LargePositiveInteger-helper byte-level methods. +* bytes_from_subtract_: LargePositiveInteger-helper byte-level methods. +* bytes_multiply_: LargePositiveInteger-helper byte-level methods. +* bytesLeftShift_: LargePositiveInteger-helper byte-level methods. +* bytesLeftShift_big_: LargePositiveInteger-helper byte-level methods. +* bytesLeftShift_n_: LargePositiveInteger-helper byte-level methods. +* bytesPerOOP: ObjectMemory-accessing. +* bytesPerOTE: ObjectMemory-accessing. +* bytesRightShift_big_: LargePositiveInteger-helper byte-level methods. +* bytesRightShift_n_: LargePositiveInteger-helper byte-level methods. +* bytesTrailingZeros_: LargePositiveInteger-helper byte-level methods. +* caller: BlockContext-accessing. +* callFrom_into_: CFunctionDescriptor-calling. +* callNoRetryFrom_into_: CFunctionDescriptor-calling. +* callouts: Package-accessing. +* calloutsFor_: PackageLoader class-accessing. +* canCache: NetClients.URL-testing. +* canLoad_: PackageLoader class-testing. +* canRead: FileDescriptor-accessing. +* canUnderstand_: Behavior-testing the method dictionary. +* canWrite: FileDescriptor-accessing. +* capacity <1>: HashedCollection-testing collections. +* capacity: Collection-testing collections. +* castTo_: CObject-conversion. +* categoriesFor_are_: Class-instance creation - alternative. +* category <1>: MethodInfo-accessing. +* category <2>: Metaclass-delegation. +* category: Class-accessing instances and variables. +* category_ <1>: MethodInfo-accessing. +* category_: Class-accessing instances and variables. +* ceiling <1>: ScaledDecimal-coercion. +* ceiling <2>: Integer-converting. +* ceiling <3>: Fraction-coercing. +* ceiling: Float-built ins. +* center: Rectangle-accessing. +* changeClassTo_: Object-built ins. +* changed: Object-change and update. +* changed_: Object-change and update. +* changePriorityListOf_to_suspend_: ProcessorScheduler-basic. +* charAt_ <1>: Memory class-accessing. +* charAt_: ByteArray-more advanced accessing. +* charAt_put_ <1>: Memory class-accessing. +* charAt_put_: ByteArray-more advanced accessing. +* checkError: File class-file operations. +* checkError_: File class-file operations. +* checkIndexableBounds_: Object-built ins. +* checkIndexableBounds_put_: Object-built ins. +* chiSquare: Random-testing. +* chiSquare_range_: Random-testing. +* class: Object-built ins. +* class_from_: Autoload class-instance creation. +* class_in_from_: Autoload class-instance creation. +* classAt_: AbstractNamespace-accessing. +* classAt_ifAbsent_: AbstractNamespace-accessing. +* classify_under_: ClassDescription-organization of messages and classes. +* classPool <1>: Metaclass-delegation. +* classPool <2>: Class-accessing instances and variables. +* classPool: Behavior-accessing instances and variables. +* classVariableString: ClassDescription-printing. +* classVarNames <1>: Metaclass-delegation. +* classVarNames <2>: Class-accessing instances and variables. +* classVarNames: Behavior-accessing instances and variables. +* clean: FileStream-buffering. +* clearBit_: Integer-bit operators. +* clearGCFlag_: WeakArray-accessing. +* client: ContextPart-accessing. +* clockPrecision: DateTime class-information. +* close <1>: Stream-providing consistent protocols. +* close <2>: PositionableStream-accessing-reading. +* close: FileDescriptor-basic. +* closeDir_: VFS.VFSHandler-C functions. +* closeTo_: Number-testing. +* cObjectType: CType-accessing. +* cObjectType_: CType class-C instance creation. +* cObjStoredType <1>: CString-accessing. +* cObjStoredType: CScalar-accessing. +* codePoint: Character-built ins. +* codePoint_: Character class-built ins. +* coerce_ <1>: ScaledDecimal-coercion. +* coerce_ <2>: Number-converting. +* coerce_ <3>: Number class-converting. +* coerce_ <4>: LargeInteger-coercion. +* coerce_ <5>: Integer-converting. +* coerce_ <6>: Integer class-converting. +* coerce_ <7>: Fraction-coercing. +* coerce_ <8>: Fraction class-converting. +* coerce_ <9>: FloatQ-coercing. +* coerce_ <10>: FloatQ class-converting. +* coerce_ <11>: FloatE-coercing. +* coerce_ <12>: FloatE class-converting. +* coerce_ <13>: FloatD-coercing. +* coerce_: FloatD class-converting. +* collect_ <1>: MappedCollection-basic. +* collect_ <2>: Interval-basic. +* collect_ <3>: Dictionary-dictionary enumerating. +* collect_ <4>: Collection-enumeration. +* collect_: ArrayedCollection-enumerating the elements of a collection. +* collection: SystemExceptions.IndexOutOfRange-accessing. +* collection_: SystemExceptions.IndexOutOfRange-accessing. +* collection_map_: MappedCollection class-instance creation. +* comment <1>: Metaclass-delegation. +* comment: Class-accessing instances and variables. +* comment_: Class-accessing instances and variables. +* compact: ObjectMemory class-builtins. +* compile_: Behavior-method dictionary. +* compile_classified_: ClassDescription-compiling. +* compile_classified_ifError_: ClassDescription-compiling. +* compile_classified_notifying_: ClassDescription-compiling. +* compile_ifError_: Behavior-method dictionary. +* compile_notifying_: Behavior-method dictionary. +* compileAll: Behavior-method dictionary. +* compileAll_: Behavior-method dictionary. +* compileAllSubclasses: Behavior-method dictionary. +* compileAllSubclasses_: Behavior-method dictionary. +* compileDeclaration_ <1>: CUnion class-subclass creation. +* compileDeclaration_ <2>: CStruct class-subclass creation. +* compileDeclaration_: CCompound class-subclass creation. +* compileDeclaration_inject_into_: CCompound class-subclass creation. +* compiledMethodAt_: Behavior-accessing the methodDictionary. +* compiledMethodAt_ifAbsent_: Behavior-accessing the methodDictionary. +* compilerClass: Behavior-pluggable behavior (not yet implemented). +* compileSize_align_: CCompound class-subclass creation. +* compileString_: Behavior-built ins. +* compileString_ifError_: Behavior-built ins. +* compress: LargeArrayedCollection-accessing. +* computeAggregateType_block_: CCompound class-subclass creation. +* computeArrayType_block_: CCompound class-subclass creation. +* computePtrType_block_: CCompound class-subclass creation. +* computeTypeString_block_: CCompound class-subclass creation. +* conform_: Collection-enumeration. +* construct_: NetClients.URL-utilities. +* contains_ <1>: Rectangle-testing. +* contains_: Collection-enumeration. +* containsLiteral_: CompiledCode-testing accesses. +* containsPoint_: Rectangle-testing. +* contents <1>: WriteStream-accessing-writing. +* contents <2>: Stream-accessing-reading. +* contents <3>: PositionableStream-accessing-reading. +* contents <4>: MappedCollection-basic. +* contents <5>: FileDescriptor-basic. +* contents <6>: File-file operations. +* contents: Directory-enumerating. +* continue_: ContextPart-built ins. +* contractTo_: CharacterArray-string processing. +* convertFromVersion_withFixedVariables_indexedVariables_for_: Class-saving and loading. +* copy <1>: UndefinedObject-basic. +* copy <2>: Rectangle-copying. +* copy <3>: Object-copying. +* copy: BindingDictionary-copying. +* copy_from_: ClassDescription-copying. +* copy_from_classified_: ClassDescription-copying. +* copyAll_from_: ClassDescription-copying. +* copyAll_from_classified_: ClassDescription-copying. +* copyAllCategoriesFrom_: ClassDescription-copying. +* copyCategory_from_: ClassDescription-copying. +* copyCategory_from_classified_: ClassDescription-copying. +* copyEmpty_ <1>: SortedCollection-copying. +* copyEmpty_ <2>: BindingDictionary-copying. +* copyEmpty_: AbstractNamespace-copying. +* copyEmptyForCollect: BindingDictionary-copying. +* copyFrom_: SequenceableCollection-copying SequenceableCollections. +* copyFrom_to_ <1>: SequenceableCollection-copying SequenceableCollections. +* copyFrom_to_ <2>: PositionableStream-accessing-reading. +* copyFrom_to_ <3>: FileStream-basic. +* copyFrom_to_ <4>: FileDescriptor-basic. +* copyFrom_to_: ArrayedCollection-basic. +* copyReplaceAll_with_ <1>: SequenceableCollection-copying SequenceableCollections. +* copyReplaceAll_with_: ArrayedCollection-copying Collections. +* copyReplaceFrom_to_with_ <1>: SequenceableCollection-copying SequenceableCollections. +* copyReplaceFrom_to_with_: ArrayedCollection-copying Collections. +* copyReplaceFrom_to_withObject_ <1>: SequenceableCollection-copying SequenceableCollections. +* copyReplaceFrom_to_withObject_: ArrayedCollection-copying Collections. +* copyReplacing_withObject_: Collection-copying Collections. +* copyUpTo_: SequenceableCollection-copying SequenceableCollections. +* copyWith_ <1>: Collection-copying Collections. +* copyWith_: ArrayedCollection-basic. +* copyWithout_ <1>: Collection-copying Collections. +* copyWithout_: ArrayedCollection-basic. +* copyWithoutAuxiliaryParts: NetClients.URL-copying. +* copyWithoutFragment: NetClients.URL-copying. +* coreException: Exception class-interoperability with TrappableEvents. +* corner: Rectangle-accessing. +* corner_ <1>: Rectangle-accessing. +* corner_: Point-converting. +* cos <1>: Number-misc math. +* cos: Float-built ins. +* costOfNewIndex: LargeByteArray-overridden. +* cr <1>: TextCollector-accessing. +* cr <2>: Stream-character writing. +* cr: Character class-constants. +* create: FileDescriptor class-instance creation. +* create_: Directory class-file operations. +* createDir_ <1>: VFS.VFSHandler-directory operations. +* createDir_ <2>: VFS.RealFileHandler-directory operations. +* createDir_ <3>: VFS.ExternalArchiveFileHandler-members. +* createDir_ <4>: VFS.ArchiveMemberHandler-directory operations. +* createDir_: VFS.ArchiveFileHandler-directory operations. +* createGetMethod_ <1>: ClassDescription-organization of messages and classes. +* createGetMethod_: Behavior-method dictionary. +* createGetMethod_default_ <1>: ClassDescription-organization of messages and classes. +* createGetMethod_default_: Behavior-method dictionary. +* createSetMethod_ <1>: ClassDescription-organization of messages and classes. +* createSetMethod_: Behavior-method dictionary. +* creationTime <1>: VFS.VFSHandler-accessing. +* creationTime <2>: VFS.RealFileHandler-accessing. +* creationTime <3>: VFS.ArchiveMemberHandler-accessing. +* creationTime: File-accessing. +* critical_ <1>: Semaphore-mutual exclusion. +* critical_: RecursionLock-mutual exclusion. +* crTab: Stream-character writing. +* current <1>: ObjectMemory class-accessing. +* current: Namespace class-accessing. +* current_: Namespace class-accessing. +* cutAt_: LargeArraySubpart-modifying. +* dateAndTimeNow: Date class-instance creation (Blue Book). +* day: Date-compatibility (non-ANSI). +* dayName: Date-compatibility (non-ANSI). +* dayOfMonth: Date-date computations. +* dayOfWeek <1>: DateTime-computations. +* dayOfWeek: Date-date computations. +* dayOfWeek_: Date class-basic. +* dayOfWeekAbbreviation: Date-date computations. +* dayOfWeekName: Date-date computations. +* dayOfYear: Date-date computations. +* days: Duration-arithmetics. +* days_: Duration class-instance creation. +* days_hours_minutes_seconds_: Duration class-instance creation. +* daysFromBaseDay: Date-date computations. +* daysInMonth: Date-date computations. +* daysInMonth_forYear_: Date class-basic. +* daysInYear: Date-date computations. +* daysInYear_: Date class-basic. +* daysLeftInMonth: Date-date computations. +* daysLeftInYear: Date-date computations. +* debug: SystemDictionary-builtins. +* debuggerClass <1>: Metaclass-delegation. +* debuggerClass <2>: ContextPart-debugging. +* debuggerClass: Behavior-pluggable behavior (not yet implemented). +* decimalDigits <1>: FloatQ class-characterization. +* decimalDigits <2>: FloatE class-characterization. +* decimalDigits: FloatD class-characterization. +* declarationTrace: SystemDictionary-builtins. +* declarationTrace_: SystemDictionary-builtins. +* decode_: NetClients.URL class-encoding URLs. +* decodedFields: NetClients.URL-accessing. +* decodedFile: NetClients.URL-accessing. +* decodedFragment: NetClients.URL-accessing. +* decompile_: Behavior-method dictionary. +* decompilerClass: Behavior-pluggable behavior (not yet implemented). +* decr: CObject-pointer-like behavior. +* decrBy_: CObject-pointer-like behavior. +* deepCopy <1>: WeakArray-conversion. +* deepCopy <2>: UndefinedObject-basic. +* deepCopy <3>: Symbol-basic. +* deepCopy <4>: RunArray-copying. +* deepCopy <5>: Object-copying. +* deepCopy <6>: Number-copying. +* deepCopy <7>: LookupTable-copying. +* deepCopy <8>: HashedCollection-copying. +* deepCopy <9>: ContextPart-copying. +* deepCopy <10>: CompiledCode-copying. +* deepCopy <11>: Boolean-overriding. +* deepCopy <12>: BlockClosure-overriding. +* deepCopy: BindingDictionary-copying. +* defaultAction <1>: Signal-exception handling. +* defaultAction <2>: Notification-exception description. +* defaultAction: Exception-exception description. +* defaultElement <1>: LargeWordArray-overridden. +* defaultElement: LargeByteArray-overridden. +* defaultHandler: CoreException-accessing. +* defaultHandler_: CoreException-accessing. +* defaultSortBlock: SortedCollection class-hacking. +* define_: BindingDictionary-accessing. +* defineAsyncCFunc_withSelectorArgs_args_ <1>: ClassDescription-organization of messages and classes. +* defineAsyncCFunc_withSelectorArgs_args_: Behavior-method dictionary. +* defineCFunc_as_: DLD class-C functions. +* defineCFunc_withSelectorArgs_returning_args_ <1>: ClassDescription-organization of messages and classes. +* defineCFunc_withSelectorArgs_returning_args_: Behavior-method dictionary. +* definedKeys: AbstractNamespace-overrides for superspaces. +* defineExternFunc_: DLD class-dynamic linking. +* definesKey_: AbstractNamespace-overrides for superspaces. +* degreesToRadians: Number-converting. +* denominator <1>: Integer-accessing. +* denominator: Fraction-accessing. +* denormalized: Float class-characterization. +* dependencies: Object class-initialization. +* dependencies_: Object class-initialization. +* dependents: Object-dependents access. +* deref_: Memory class-accessing. +* description <1>: ZeroDivide-description. +* description <2>: Warning-exception description. +* description <3>: SystemExceptions.WrongClass-accessing. +* description <4>: SystemExceptions.WrongArgumentCount-accessing. +* description <5>: SystemExceptions.VMError-accessing. +* description <6>: SystemExceptions.UserInterrupt-accessing. +* description <7>: SystemExceptions.SubclassResponsibility-accessing. +* description <8>: SystemExceptions.ShouldNotImplement-accessing. +* description <9>: SystemExceptions.ReadOnlyObject-accessing. +* description <10>: SystemExceptions.ProcessTerminated-accessing. +* description <11>: SystemExceptions.ProcessBeingTerminated-accessing. +* description <12>: SystemExceptions.PrimitiveFailed-accessing. +* description <13>: SystemExceptions.NotYetImplemented-accessing. +* description <14>: SystemExceptions.NotIndexable-accessing. +* description <15>: SystemExceptions.NotImplemented-accessing. +* description <16>: SystemExceptions.NotFound-accessing. +* description <17>: SystemExceptions.NoRunnableProcess-accessing. +* description <18>: SystemExceptions.MutationError-accessing. +* description <19>: SystemExceptions.InvalidValue-accessing. +* description <20>: SystemExceptions.InvalidSize-accessing. +* description <21>: SystemExceptions.InvalidProcessState-accessing. +* description <22>: SystemExceptions.IndexOutOfRange-accessing. +* description <23>: SystemExceptions.FileError-accessing. +* description <24>: SystemExceptions.EndOfStream-accessing. +* description <25>: SystemExceptions.EmptyCollection-accessing. +* description <26>: SystemExceptions.CInterfaceError-accessing. +* description <27>: SystemExceptions.BadReturn-accessing. +* description <28>: SystemExceptions.ArgumentOutOfRange-accessing. +* description <29>: SystemExceptions.AlreadyDefined-accessing. +* description <30>: Signal-accessing. +* description <31>: Notification-exception description. +* description <32>: MessageNotUnderstood-description. +* description <33>: Halt-description. +* description <34>: Exception-exception description. +* description <35>: Error-exception description. +* description <36>: CoreException-accessing. +* description: ArithmeticError-description. +* description_: CoreException-accessing. +* detect_: Collection-enumeration. +* detect_ifNone_: Collection-enumeration. +* digitAt_: LargeInteger-built-ins. +* digitAt_put_: LargeInteger-built-ins. +* digitLength: LargeInteger-built-ins. +* digitValue: Character-converting. +* digitValue_: Character class-instance creation. +* directory: Package-accessing. +* directory_forBaseDir_: Package-accessing. +* directoryAt_: Directory-accessing. +* directoryFor_: PackageLoader class-accessing. +* disableInterrupts: ProcessorScheduler-built ins. +* disableProxyFor_: ObjectDumper class-establishing proxy classes. +* discardTranslation: CompiledCode-translation. +* dispatchTo_with_: CompiledCode-decoding bytecodes. +* display: Object-printing. +* display_: Stream-printing. +* displayNl: Object-printing. +* displayOn_ <1>: Symbol-storing. +* displayOn_ <2>: ScaledDecimal-printing. +* displayOn_ <3>: Object-printing. +* displayOn_ <4>: Integer-printing. +* displayOn_ <5>: CharacterArray-printing. +* displayOn_: Character-printing. +* displayString <1>: Symbol-storing. +* displayString <2>: Object-printing. +* displayString <3>: Integer-printing. +* displayString: CharacterArray-printing. +* dist_: Point-point functions. +* divide_using_: LargePositiveInteger-primitive operations. +* dividend: ZeroDivide-accessing. +* dividend_: ZeroDivide class-instance creation. +* do_ <1>: WeakSet-accessing. +* do_ <2>: WeakArray-accessing. +* do_ <3>: VFS.VFSHandler-directory operations. +* do_ <4>: VFS.RealFileHandler-directory operations. +* do_ <5>: VFS.ExternalArchiveFileHandler-members. +* do_ <6>: VFS.ArchiveMemberHandler-directory operations. +* do_ <7>: VFS.ArchiveFileHandler-directory operations. +* do_ <8>: SymLink-iteration. +* do_ <9>: Stream-enumerating. +* do_ <10>: SequenceableCollection-enumerating. +* do_ <11>: RunArray-enumerating. +* do_ <12>: Namespace-overrides for superspaces. +* do_ <13>: MappedCollection-basic. +* do_ <14>: LinkedList-enumerating. +* do_ <15>: Link-iteration. +* do_ <16>: Interval-basic. +* do_ <17>: HashedCollection-enumerating the elements of a collection. +* do_ <18>: Directory-enumerating. +* do_ <19>: Dictionary-dictionary enumerating. +* do_ <20>: Collection-enumeration. +* do_: Bag-enumerating the elements of a collection. +* do_separatedBy_ <1>: SequenceableCollection-enumerating. +* do_separatedBy_: Collection-enumeration. +* doesNotUnderstand_ <1>: Object-error raising. +* doesNotUnderstand_ <2>: BindingDictionary-accessing. +* doesNotUnderstand_ <3>: AutoloadClass-accessing. +* doesNotUnderstand_: Autoload-accessing. +* domain: MappedCollection-basic. +* dotProduct_: Point-point functions. +* doubleAt_ <1>: Memory class-accessing. +* doubleAt_: ByteArray-more advanced accessing. +* doubleAt_put_ <1>: Memory class-accessing. +* doubleAt_put_: ByteArray-more advanced accessing. +* doWithIndex_: SequenceableCollection-enumerating. +* dump_: ObjectDumper-loading/dumping objects. +* dump_to_: ObjectDumper class-shortcuts. +* dumpTo_ <1>: VersionableObjectProxy-saving and restoring. +* dumpTo_ <2>: NullProxy-accessing. +* dumpTo_: DumperProxy-saving and restoring. +* e <1>: FloatQ class-characterization. +* e <2>: FloatE class-characterization. +* e: Float class-characterization. +* edenSize: ObjectMemory-accessing. +* edenUsedBytes: ObjectMemory-accessing. +* edit_: Behavior-method dictionary. +* elementType <1>: CStringCType-accessing. +* elementType <2>: CPtrCType-accessing. +* elementType: CAggregate-accessing. +* elementType_ <1>: CPtrCType class-instance creation. +* elementType_: CArrayCType class-instance creation. +* elementType_numberOfElements_: CArrayCType class-instance creation. +* emax <1>: FloatQ class-characterization. +* emax <2>: FloatE class-characterization. +* emax: FloatD class-characterization. +* emin <1>: FloatQ class-characterization. +* emin <2>: FloatE class-characterization. +* emin: FloatD class-characterization. +* emitInspectTo_for_: CCompound class-subclass creation. +* empty: Collection-removing. +* emptyStream: WriteStream-positioning. +* enableInterrupts: ProcessorScheduler-built ins. +* encode_: NetClients.URL class-encoding URLs. +* endEntry: TextCollector-accessing. +* ensure_: BlockClosure-unwind protection. +* ensureReadable: FileDescriptor-accessing. +* ensureWriteable: FileDescriptor-accessing. +* environment <1>: Metaclass-delegation. +* environment <2>: HomedAssociation-accessing. +* environment <3>: ContextPart-accessing. +* environment <4>: Class-accessing instances and variables. +* environment <5>: BindingDictionary-accessing. +* environment <6>: Behavior-support for lightweight classes. +* environment <7>: AutoloadClass-accessing. +* environment: Association-accessing. +* environment_ <1>: HomedAssociation-accessing. +* environment_ <2>: Class-accessing instances and variables. +* environment_ <3>: BindingDictionary-accessing. +* environment_ <4>: AutoloadClass-accessing. +* environment_: Association-accessing. +* eof: Character class-constants. +* eot: Character class-constants. +* epsilon: Float class-characterization. +* eqv_ <1>: True-basic. +* eqv_ <2>: False-basic. +* eqv_: Boolean-basic. +* errno: File class-C functions. +* error_: Object-error raising. +* esc: Character class-constants. +* estimatedLog <1>: Number-misc math. +* estimatedLog <2>: LargeInteger-arithmetic. +* estimatedLog <3>: Integer-math methods. +* estimatedLog <4>: Fraction-arithmetic. +* estimatedLog: Float-coercing. +* evalString_to_: Behavior-evaluating. +* evalString_to_ifError_: Behavior-evaluating. +* evaluate_: Behavior-evaluating. +* evaluate_ifError_: Behavior-evaluating. +* evaluate_notifying_: Behavior-evaluating. +* evaluate_to_: Behavior-evaluating. +* evaluate_to_ifError_: Behavior-evaluating. +* evaluatorClass: Behavior-pluggable behavior (not yet implemented). +* even <1>: Number-testing. +* even: Integer-math methods. +* example: ObjectDumper class-testing. +* exception: Signal-accessing. +* exceptionalCondition: FileDescriptor-accessing. +* executionTrace: SystemDictionary-builtins. +* executionTrace_: SystemDictionary-builtins. +* exists <1>: VFS.VFSHandler-testing. +* exists <2>: VFS.RealFileHandler-testing. +* exists <3>: VFS.ArchiveMemberHandler-testing. +* exists: File-testing. +* exists_: File class-testing. +* exp <1>: Number-misc math. +* exp: Float-built ins. +* expandBy_: Rectangle-rectangle functions. +* exponent <1>: FloatQ-built ins. +* exponent <2>: FloatE-built ins. +* exponent: FloatD-built ins. +* extend: Class-instance creation. +* extension: File-file name management. +* extensionFor_: File class-file name management. +* extent: Rectangle-accessing. +* extent_ <1>: Rectangle-accessing. +* extent_: Point-converting. +* externalInterruptsEnabled: Process-accessing. +* extractDependenciesFor_onError_: PackageLoader class-loading. +* extractDirentName_: VFS.VFSHandler-C functions. +* extractMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* extractMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* factorial: Integer-math methods. +* fd: FileDescriptor-accessing. +* fileIn: FileStream-filing in. +* fileIn_: FileStream class-file-in. +* fileIn_ifMissing_: FileStream class-file-in. +* fileIn_ifTrue_: FileStream class-file-in. +* fileIn_line_from_at_: FileStream class-file-in. +* fileInLine_fileName_at_: FileStream-filing in. +* fileInPackage_: PackageLoader class-loading. +* fileInPackages_: PackageLoader class-loading. +* fileIns: Package-accessing. +* fileInsFor_: PackageLoader class-accessing. +* fileName <1>: FileSegment-basic. +* fileName <2>: CharacterArray-converting. +* fileName: AutoloadClass-accessing. +* fileName_: AutoloadClass-accessing. +* fileOp_: FileDescriptor-built ins. +* fileOp_ifFail_: FileDescriptor-built ins. +* fileOp_with_: FileDescriptor-built ins. +* fileOp_with_ifFail_: FileDescriptor-built ins. +* fileOp_with_with_: FileDescriptor-built ins. +* fileOp_with_with_ifFail_: FileDescriptor-built ins. +* fileOp_with_with_with_: FileDescriptor-built ins. +* fileOp_with_with_with_ifFail_: FileDescriptor-built ins. +* fileOut_ <1>: Stream-filing out. +* fileOut_: ClassDescription-filing. +* fileOutCategory_to_: ClassDescription-filing. +* fileOutCategory_toStream_: ClassDescription-filing. +* fileOutDeclarationOn_: Class-filing. +* fileOutHeaderOn_: Class-filing. +* fileOutOn_ <1>: Metaclass-filing. +* fileOutOn_ <2>: ClassDescription-filing. +* fileOutOn_: Class-filing. +* fileOutSelector_to_: ClassDescription-filing. +* filePos <1>: FileSegment-basic. +* filePos: CharacterArray-converting. +* files: Package-accessing. +* filesFor_: PackageLoader class-accessing. +* filesMatching_do_: Directory-enumerating. +* fileSystems <1>: VFS.VFSHandler class-initializing. +* fileSystems <2>: VFS.ExternalArchiveFileHandler class-registering. +* fileSystems: VFS.DecodedFileHandler class-registering. +* fileSystemsIn_: VFS.ExternalArchiveFileHandler class-registering. +* fill: FileStream-buffering. +* fillMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* fillMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* finalIP: BlockClosure-accessing. +* finalizableObjects: Object class-initialization. +* finalize <1>: VFS.DecodedFileHandler-files. +* finalize <2>: VFS.ArchiveFileHandler-directory operations. +* finalize <3>: Object-finalization. +* finalize <4>: FileDescriptor-basic. +* finalize: CObject-finalization. +* findFirst_: SequenceableCollection-enumerating. +* findKeyIndex_: Dictionary-awful ST-80 compatibility hacks. +* findLast_: SequenceableCollection-enumerating. +* findObjectIndex_: Set-awful ST-80 compatibility hacks. +* finishIncrementalGC: ObjectMemory class-builtins. +* first <1>: SequenceableCollection-basic. +* first <2>: RunArray-basic. +* first: LargeArraySubpart-accessing. +* first_last_index_ <1>: LargeArraySubpart-accessing. +* first_last_index_: LargeArraySubpart class-instance creation. +* firstDayOfMonth: Date-date computations. +* firstIndex: LargeArraySubpart-accessing. +* fixedSpaceSize: ObjectMemory-accessing. +* fixedSpaceUsedBytes: ObjectMemory-accessing. +* fixTemps: BlockClosure-accessing. +* flags <1>: CompiledMethod-accessing. +* flags <2>: CompiledCode-accessing. +* flags: CompiledBlock-accessing. +* floatAt_ <1>: Memory class-accessing. +* floatAt_: ByteArray-more advanced accessing. +* floatAt_put_ <1>: Memory class-accessing. +* floatAt_put_: ByteArray-more advanced accessing. +* floor <1>: Number-truncation and round off. +* floor <2>: Integer-converting. +* floor <3>: Fraction-coercing. +* floor: Float-built ins. +* floorLog_ <1>: Number-misc math. +* floorLog_: Integer-math methods. +* flush <1>: Stream-providing consistent protocols. +* flush <2>: PackageLoader class-accessing. +* flush <3>: ObjectDumper-accessing. +* flush: FileStream-buffering. +* flushCache: Behavior-built ins. +* flushTranslatorCache: CompiledCode class-cache flushing. +* fmax <1>: FloatQ class-characterization. +* fmax <2>: FloatE class-characterization. +* fmax: FloatD class-characterization. +* fmin: Float class-characterization. +* fminDenormalized: Float class-characterization. +* fminNormalized <1>: FloatQ class-characterization. +* fminNormalized <2>: FloatE class-characterization. +* fminNormalized: FloatD class-characterization. +* fold_: Collection-enumeration. +* fopen_mode_: FileDescriptor class-instance creation. +* fopen_mode_ifFail_: FileDescriptor class-instance creation. +* for_: VFS.VFSHandler class-instance creation. +* for_returning_withArgs_: CFunctionDescriptor class-instance creation. +* fork <1>: DirectedMessage-multiple process. +* fork: BlockClosure-multiple process. +* forkAt_ <1>: DirectedMessage-multiple process. +* forkAt_: BlockClosure-multiple process. +* forkWithoutPreemption: BlockClosure-multiple process. +* forMilliseconds_: Delay class-instance creation. +* forMutualExclusion: Semaphore class-instance creation. +* forSeconds_: Delay class-instance creation. +* fractionPart <1>: ScaledDecimal-coercion. +* fractionPart <2>: Number-truncation and round off. +* fractionPart <3>: FloatQ-built ins. +* fractionPart <4>: FloatE-built ins. +* fractionPart: FloatD-built ins. +* fragment: NetClients.URL-accessing. +* fragment_: NetClients.URL-accessing. +* free <1>: UndefinedObject-CObject interoperability. +* free: CObject-C data access. +* from_to_: Interval class-instance creation. +* from_to_by_: Interval class-instance creation. +* from_to_do_: SequenceableCollection-enumerating. +* from_to_doWithIndex_: SequenceableCollection-enumerating. +* from_to_keysAndValuesDo_: SequenceableCollection-enumerating. +* fromCData_size_: String class-instance creation. +* fromDays_: Date class-instance creation (Blue Book). +* fromDays_seconds_offset_ <1>: Duration class-instance creation (non ANSI). +* fromDays_seconds_offset_: DateTime class-instance creation (non-ANSI). +* fromJulian_: Date class-instance creation (Blue Book). +* fromSeconds_ <1>: Time class-instance creation. +* fromSeconds_: Date class-instance creation (Blue Book). +* fromString_ <1>: NetClients.URL class-instance creation. +* fromString_: CharacterArray class-basic. +* fullName: File-file name management. +* fullNameAt_: Directory-accessing. +* fullNameFor_: File class-file name management. +* fullRequestString: NetClients.URL-accessing. +* gcd_ <1>: LargePositiveInteger-arithmetic. +* gcd_ <2>: LargeNegativeInteger-reverting to LargePositiveInteger. +* gcd_: Integer-math methods. +* gcMessage: ObjectMemory class-builtins. +* gcMessage_: ObjectMemory class-builtins. +* generality <1>: SmallInteger-coercion methods. +* generality <2>: ScaledDecimal-coercion. +* generality <3>: Number-converting. +* generality <4>: LargeInteger-coercion. +* generality <5>: Fraction-coercing. +* generality <6>: FloatQ-coercing. +* generality <7>: FloatE-coercing. +* generality: FloatD-coercing. +* generateMakefileOnto_: FileStream class-file-in. +* getArgc: SystemDictionary-C functions. +* getArgv_: SystemDictionary-C functions. +* getBlock_putBlock_: PluggableAdaptor class-creating instances. +* getenv_: SystemDictionary-C functions. +* getTraceFlag_: SystemDictionary-builtins. +* globalGarbageCollect: ObjectMemory class-builtins. +* goodness_ <1>: TrappableEvent-enumerating. +* goodness_ <2>: ExceptionSet-enumerating. +* goodness_ <3>: Exception class-comparison. +* goodness_: CoreException-enumerating. +* grid_: Point-point functions. +* grow: LargeArraySubpart-modifying. +* growBy_: LargeArraySubpart-modifying. +* growThresholdPercent: ObjectMemory class-builtins. +* growThresholdPercent_: ObjectMemory class-builtins. +* growTo_: ObjectMemory class-builtins. +* halt <1>: SystemDictionary-basic. +* halt: Object-built ins. +* halt_: Object-error raising. +* handles_ <1>: TrappableEvent-enumerating. +* handles_ <2>: ExceptionSet-enumerating. +* handles_ <3>: Exception class-comparison. +* handles_: CoreException-enumerating. +* hasBytecode_between_and_: CompiledCode-testing accesses. +* hasFeatures_: SystemDictionary-special accessing. +* hasFragment: NetClients.URL-testing. +* hash <1>: Time-comparing. +* hash <2>: SystemDictionary-basic. +* hash <3>: Symbol-built ins. +* hash <4>: String-built ins. +* hash <5>: SequenceableCollection-testing. +* hash <6>: ScaledDecimal-comparing. +* hash <7>: RunArray-testing. +* hash <8>: Rectangle-testing. +* hash <9>: Point-converting. +* hash <10>: Object-built ins. +* hash <11>: NetClients.URL-comparing. +* hash <12>: MethodInfo-equality. +* hash <13>: LookupTable-hashing. +* hash <14>: LookupKey-testing. +* hash <15>: LargeZeroInteger-accessing. +* hash <16>: LargeInteger-built-ins. +* hash <17>: LargeArraySubpart-comparing. +* hash <18>: LargeArrayedCollection-basic. +* hash <19>: Interval-testing. +* hash <20>: Integer-basic. +* hash <21>: HashedCollection-testing collections. +* hash <22>: Fraction-comparing. +* hash <23>: Float-basic. +* hash <24>: FileSegment-equality. +* hash <25>: Exception-comparison. +* hash <26>: Dictionary-testing. +* hash <27>: Delay-comparing. +* hash <28>: DateTime-testing. +* hash <29>: Date-testing. +* hash <30>: CompiledMethod-basic. +* hash <31>: CompiledCode-basic. +* hash <32>: ByteArray-built ins. +* hash <33>: Bag-testing collections. +* hash <34>: Association-testing. +* hash: AbstractNamespace-basic & copying. +* hasInterned_ifTrue_: Symbol class-symbol table. +* hasMethodReturn: BlockClosure-testing. +* hasMethods: Behavior-testing the method dictionary. +* hasPostData: NetClients.URL-accessing. +* hasPostData_: NetClients.URL-accessing. +* hasProxyFor_: ObjectDumper class-establishing proxy classes. +* hasQuery: NetClients.URL-testing. +* hasValue: Promise-accessing. +* height: Rectangle-accessing. +* height_: Rectangle-accessing. +* hereAt_: AbstractNamespace-overrides for superspaces. +* hereAt_ifAbsent_: AbstractNamespace-overrides for superspaces. +* hierarchyIndent: Behavior-printing hierarchy. +* high: SystemExceptions.ArgumentOutOfRange-accessing. +* high_: SystemExceptions.ArgumentOutOfRange-accessing. +* highBit <1>: SmallInteger-bit arithmetic. +* highBit <2>: LargePositiveInteger-arithmetic. +* highBit <3>: LargeNegativeInteger-reverting to LargePositiveInteger. +* highBit: Integer-bit operators. +* highestPriority: ProcessorScheduler-priorities. +* highIOPriority: ProcessorScheduler-priorities. +* home <1>: MethodContext-accessing. +* home <2>: Directory class-reading system defaults. +* home <3>: ContextPart-accessing. +* home: BlockContext-accessing. +* host: NetClients.URL-accessing. +* host_: NetClients.URL-accessing. +* hour <1>: Time-accessing (ANSI for DateAndTimes). +* hour: DateTime-computations. +* hour12 <1>: Time-accessing (ANSI for DateAndTimes). +* hour12: DateTime-computations. +* hour24 <1>: Time-accessing (ANSI for DateAndTimes). +* hour24: DateTime-computations. +* hours: Time-accessing (non ANSI & for Durations). +* hours_: Time class-instance creation. +* hours_minutes_seconds_: Time class-instance creation. +* identityHash: Object-built ins. +* identityIncludes_ <1>: SequenceableCollection-basic. +* identityIncludes_ <2>: IdentitySet-testing. +* identityIncludes_: Collection-testing collections. +* identityIndexOf_: SequenceableCollection-basic. +* identityIndexOf_ifAbsent_: SequenceableCollection-basic. +* identityIndexOf_startingAt_: SequenceableCollection-basic. +* identityIndexOf_startingAt_ifAbsent_: SequenceableCollection-basic. +* idle: ProcessorScheduler-idle tasks. +* idleAdd_: ProcessorScheduler-idle tasks. +* ifCurtailed_: BlockClosure-unwind protection. +* ifError_: BlockClosure-exception handling. +* ifFalse_ <1>: True-basic. +* ifFalse_ <2>: False-basic. +* ifFalse_: Boolean-basic. +* ifFalse_ifTrue_ <1>: True-basic. +* ifFalse_ifTrue_ <2>: False-basic. +* ifFalse_ifTrue_: Boolean-basic. +* ifNil_ <1>: UndefinedObject-testing. +* ifNil_: Object-testing functionality. +* ifNil_ifNotNil_ <1>: UndefinedObject-testing. +* ifNil_ifNotNil_: Object-testing functionality. +* ifNotNil_ <1>: UndefinedObject-testing. +* ifNotNil_: Object-testing functionality. +* ifNotNil_ifNil_ <1>: UndefinedObject-testing. +* ifNotNil_ifNil_: Object-testing functionality. +* ifTrue_ <1>: True-basic. +* ifTrue_ <2>: False-basic. +* ifTrue_: Boolean-basic. +* ifTrue_ifFalse_ <1>: True-basic. +* ifTrue_ifFalse_ <2>: False-basic. +* ifTrue_ifFalse_: Boolean-basic. +* ignoreCallouts: PackageLoader class-accessing. +* ignoreCallouts_: PackageLoader class-accessing. +* image <1>: File class-reading system defaults. +* image: Directory class-reading system defaults. +* import_from_: BindingDictionary-accessing. +* includes_ <1>: SortedCollection-searching. +* includes_ <2>: SequenceableCollection-basic. +* includes_ <3>: HashedCollection-testing collections. +* includes_ <4>: Directory-accessing. +* includes_ <5>: Dictionary-dictionary testing. +* includes_ <6>: Collection-testing collections. +* includes_: Bag-testing collections. +* includesAssociation_: Dictionary-dictionary testing. +* includesBehavior_: Behavior-testing the class hierarchy. +* includesClassNamed_: AbstractNamespace-namespace hierarchy. +* includesGlobalNamed_: AbstractNamespace-namespace hierarchy. +* includesKey_ <1>: WeakValueLookupTable-hacks. +* includesKey_ <2>: Namespace-overrides for superspaces. +* includesKey_: Dictionary-dictionary testing. +* includesSelector_: Behavior-testing the method dictionary. +* incr: CObject-pointer-like behavior. +* incrBy_: CObject-pointer-like behavior. +* incrementalGCStep: ObjectMemory class-builtins. +* indexOf_: SequenceableCollection-basic. +* indexOf_ifAbsent_: SequenceableCollection-basic. +* indexOf_matchCase_startingAt_: CharacterArray-comparing. +* indexOf_startingAt_: SequenceableCollection-basic. +* indexOf_startingAt_ifAbsent_ <1>: SortedCollection-searching. +* indexOf_startingAt_ifAbsent_ <2>: SequenceableCollection-basic. +* indexOf_startingAt_ifAbsent_: RunArray-searching. +* indexOfMonth_: Date class-basic. +* indexOfSubCollection_: SequenceableCollection-basic. +* indexOfSubCollection_ifAbsent_: SequenceableCollection-basic. +* indexOfSubCollection_startingAt_: SequenceableCollection-basic. +* indexOfSubCollection_startingAt_ifAbsent_: SequenceableCollection-basic. +* infinity <1>: FloatQ class-characterization. +* infinity <2>: FloatE class-characterization. +* infinity: FloatD class-characterization. +* inheritedKeys <1>: RootNamespace-overrides for superspaces. +* inheritedKeys <2>: Namespace-accessing. +* inheritedKeys: AbstractNamespace-overrides for superspaces. +* inheritsFrom_ <1>: Behavior-testing the class hierarchy. +* inheritsFrom_: AbstractNamespace-namespace hierarchy. +* initDayNameDict: Date class-basic. +* initialIP <1>: ContextPart-accessing. +* initialIP: BlockClosure-accessing. +* initialize <1>: VFS.VFSHandler class-initializing. +* initialize <2>: VFS.RealFileHandler class-initialization. +* initialize <3>: VFS.DecodedFileHandler class-registering. +* initialize <4>: ValueHolder-initializing. +* initialize <5>: Time class-initialization. +* initialize <6>: ScaledDecimal class-constants. +* initialize <7>: Promise-initializing. +* initialize <8>: ProcessorScheduler-idle tasks. +* initialize <9>: ObjectMemory class-initialization. +* initialize <10>: Object class-initialization. +* initialize <11>: NetClients.URL-initialize-release. +* initialize <12>: NetClients.URL class-encoding URLs. +* initialize <13>: Namespace class-initialization. +* initialize <14>: Fraction class-instance creation. +* initialize <15>: FileStream class-file-in. +* initialize <16>: FileDescriptor-initialize-release. +* initialize <17>: FileDescriptor class-initialization. +* initialize <18>: Exception class-initialization. +* initialize <19>: Duration class-instance creation. +* initialize <20>: DLD class-dynamic linking. +* initialize <21>: Delay class-initialization. +* initialize <22>: DateTime class-information. +* initialize <23>: Date class-basic. +* initialize <24>: Class-accessing instances and variables. +* initialize <25>: Character class-initializing lookup tables. +* initialize: CCompound class-subclass creation. +* initMonthNameDict: Date class-basic. +* inject_into_: Collection-enumeration. +* insetBy_: Rectangle-rectangle functions. +* insetOriginBy_corner_: Rectangle-rectangle functions. +* inspect <1>: SequenceableCollection-testing. +* inspect <2>: Object-debugging. +* inspect <3>: Dictionary-printing. +* inspect <4>: CompiledCode-debugging. +* inspect <5>: Collection-printing. +* inspect: CCompound-instance creation. +* inspectSelectorList: CCompound-instance creation. +* instanceClass: Metaclass-accessing. +* instanceCount: Behavior-accessing instances and variables. +* instanceVariableNames_: Metaclass-basic. +* instanceVariableString: ClassDescription-printing. +* instSize: Behavior-testing the form of the instances. +* instVarAt_: Object-built ins. +* instVarAt_put_: Object-built ins. +* instVarNames: Behavior-accessing instances and variables. +* intAt_ <1>: Memory class-accessing. +* intAt_: ByteArray-more advanced accessing. +* intAt_put_ <1>: Memory class-accessing. +* intAt_put_: ByteArray-more advanced accessing. +* integerPart <1>: ScaledDecimal-coercion. +* integerPart <2>: Number-truncation and round off. +* integerPart <3>: Fraction-converting. +* integerPart: Float-arithmetic. +* intern_: Symbol class-built ins. +* internCharacter_: Symbol class-instance creation. +* intersect_: Rectangle-rectangle functions. +* intersects_: Rectangle-testing. +* invalidate: FileDescriptor-basic. +* ip: ContextPart-accessing. +* ip_: ContextPart-accessing. +* isAccessible <1>: VFS.VFSHandler-testing. +* isAccessible <2>: VFS.ArchiveMemberHandler-testing. +* isAccessible <3>: VFS.ArchiveFileHandler class-registering. +* isAccessible: File-testing. +* isAccessible_: File class-testing. +* isAlive_: WeakArray-accessing. +* isAlphaNumeric: Character-testing. +* isArray <1>: Object-testing functionality. +* isArray: Array-testing. +* isBehavior <1>: Object-testing functionality. +* isBehavior: Behavior-testing functionality. +* isBinary: FileDescriptor-class type methods. +* isBits: Behavior-testing the form of the instances. +* isBitSet_: Integer-bit operators. +* isBlock <1>: MethodContext-accessing. +* isBlock <2>: ContextPart-accessing. +* isBlock: BlockContext-accessing. +* isBytes: Behavior-testing the form of the instances. +* isCharacter <1>: Object-testing functionality. +* isCharacter: Character-testing functionality. +* isCharacterArray <1>: Object-testing functionality. +* isCharacterArray: CharacterArray-testing functionality. +* isClass <1>: Object-testing functionality. +* isClass: Class-testing functionality. +* isDefined: VariableBinding-testing. +* isDigit: Character-testing. +* isDirectory <1>: VFS.VFSHandler-testing. +* isDirectory <2>: VFS.RealFileHandler-testing. +* isDirectory <3>: VFS.ArchiveMemberHandler-testing. +* isDirectory <4>: VFS.ArchiveFileHandler class-registering. +* isDirectory: File-testing. +* isDisabled <1>: MethodContext-accessing. +* isDisabled <2>: ContextPart-accessing. +* isDisabled: BlockContext-accessing. +* isEmpty <1>: SharedQueue-accessing. +* isEmpty <2>: PositionableStream-testing. +* isEmpty <3>: LinkedList-testing. +* isEmpty <4>: HashedCollection-testing collections. +* isEmpty <5>: FileDescriptor-overriding inherited methods. +* isEmpty: Collection-testing collections. +* isEnvironment <1>: MethodContext-accessing. +* isEnvironment <2>: ContextPart-accessing. +* isEnvironment: BlockContext-accessing. +* isExecutable <1>: VFS.VFSHandler-testing. +* isExecutable <2>: VFS.RealFileHandler-testing. +* isExecutable <3>: VFS.ArchiveMemberHandler-testing. +* isExecutable: File-testing. +* isExecutable_: File class-testing. +* isExternalStream <1>: Stream-testing. +* isExternalStream <2>: PositionableStream-class type methods. +* isExternalStream: FileDescriptor-class type methods. +* isFile: File-testing. +* isFileScheme: NetClients.URL-testing. +* isFinite <1>: Number-testing. +* isFinite: Float-testing. +* isFixed: Behavior-testing the form of the instances. +* isFloat <1>: Object-testing functionality. +* isFloat: Float-testing functionality. +* isFragmentOnly: NetClients.URL-testing. +* isFunction_: CFunctionDescriptor class-testing. +* isIdentity <1>: SmallInteger class-testing. +* isIdentity <2>: Character class-testing. +* isIdentity <3>: Boolean class-testing. +* isIdentity: Behavior-testing the form of the instances. +* isImmediate <1>: Number class-testing. +* isImmediate <2>: Character class-testing. +* isImmediate <3>: Boolean class-testing. +* isImmediate <4>: BlockClosure class-testing. +* isImmediate: Behavior-testing the form of the instances. +* isInfinite <1>: Number-testing. +* isInfinite: Float-testing. +* isInteger <1>: Object-testing functionality. +* isInteger: Integer-testing functionality. +* isInternalExceptionHandlingContext: ContextPart-debugging. +* isKindOf_: Object-testing functionality. +* isLeapYear: Date-date computations. +* isLetter: Character-testing. +* isLowercase: Character-testing. +* isMemberOf_: Object-testing functionality. +* isMeta: Object-testing functionality. +* isMetaClass: Object-testing functionality. +* isMetaclass <1>: Object-testing functionality. +* isMetaclass: Metaclass-testing functionality. +* isNamespace <1>: Object-testing functionality. +* isNamespace: AbstractNamespace-testing. +* isNaN <1>: Number-testing. +* isNaN: Float-testing. +* isNested: Signal-exception handling. +* isNil <1>: UndefinedObject-testing. +* isNil: Object-testing functionality. +* isNumber <1>: Object-testing functionality. +* isNumber: Number-testing. +* isNumeric: CharacterArray-converting. +* isOpen: FileDescriptor-accessing. +* isOwnerProcess: RecursionLock-accessing. +* isPipe: FileDescriptor-accessing. +* isPointers: Behavior-testing the form of the instances. +* isProcess: ContextPart-accessing. +* isPunctuation: Character-testing. +* isRational <1>: Number-testing. +* isRational <2>: Integer-testing functionality. +* isRational: Fraction-testing. +* isReadable <1>: VFS.VFSHandler-testing. +* isReadable <2>: VFS.RealFileHandler-testing. +* isReadable <3>: VFS.ArchiveMemberHandler-testing. +* isReadable: File-testing. +* isReadable_: File class-testing. +* isReadOnly: Object-built ins. +* isResumable <1>: Signal-exception handling. +* isResumable <2>: Notification-exception description. +* isResumable <3>: Halt-description. +* isResumable <4>: Exception-exception description. +* isResumable <5>: Error-exception description. +* isResumable: CoreException-accessing. +* isResumable_: CoreException-accessing. +* isSeparator: Character-testing. +* isSimpleSymbol: Symbol-testing. +* isSmall: LargePositiveInteger-primitive operations. +* isSmallInteger <1>: SmallInteger-testing functionality. +* isSmallInteger: Object-testing functionality. +* isSmalltalk <1>: Namespace-testing. +* isSmalltalk: AbstractNamespace-testing. +* isString <1>: Symbol-testing functionality. +* isString <2>: String-testing functionality. +* isString: Object-testing functionality. +* isSymbol <1>: Symbol-testing functionality. +* isSymbol: Object-testing functionality. +* isSymbolString_: Symbol class-symbol table. +* isText: FileDescriptor-class type methods. +* isTimeoutProgrammed: ProcessorScheduler-timed invocation. +* isUnwind <1>: MethodContext-accessing. +* isUnwind <2>: ContextPart-accessing. +* isUnwind: BlockContext-accessing. +* isUppercase: Character-testing. +* isValid: CFunctionDescriptor-accessing. +* isVariable: Behavior-testing the form of the instances. +* isVowel: Character-testing. +* isWords: Behavior-testing the form of the instances. +* isWriteable <1>: VFS.VFSHandler-testing. +* isWriteable <2>: VFS.RealFileHandler-testing. +* isWriteable <3>: VFS.ArchiveMemberHandler-testing. +* isWriteable: File-testing. +* isWriteable_: File class-testing. +* jumpDestinationAt_: CompiledCode-testing accesses. +* kernel: Directory class-reading system defaults. +* key: LookupKey-accessing. +* key_ <1>: LookupKey-accessing. +* key_: LookupKey class-basic. +* key_value_ <1>: Association-accessing. +* key_value_: Association class-basic. +* key_value_environment_: HomedAssociation class-basic. +* keyAtValue_: Dictionary-accessing. +* keyAtValue_ifAbsent_: Dictionary-accessing. +* keys: Dictionary-accessing. +* keysAndValuesDo_ <1>: SequenceableCollection-enumerating. +* keysAndValuesDo_ <2>: Namespace-overrides for superspaces. +* keysAndValuesDo_ <3>: LookupTable-enumerating. +* keysAndValuesDo_: Dictionary-dictionary enumerating. +* keysDo_ <1>: Namespace-overrides for superspaces. +* keysDo_: Dictionary-dictionary enumerating. +* keywords: Symbol-basic. +* kindOfSubclass: Behavior-testing the class hierarchy. +* largeNegated: LargeInteger-primitive operations. +* largest: SmallInteger class-getting limits. +* last <1>: SortedCollection-basic. +* last <2>: SequenceableCollection-basic. +* last <3>: RunArray-basic. +* last: LargeArraySubpart-accessing. +* lastAccessTime <1>: VFS.VFSHandler-accessing. +* lastAccessTime <2>: VFS.RealFileHandler-accessing. +* lastAccessTime <3>: VFS.ArchiveMemberHandler-accessing. +* lastAccessTime: File-accessing. +* lastChangeTime <1>: VFS.VFSHandler-accessing. +* lastChangeTime <2>: VFS.RealFileHandler-accessing. +* lastChangeTime <3>: VFS.ArchiveMemberHandler-accessing. +* lastChangeTime: File-accessing. +* lastDayOfMonth: Date-date computations. +* lastIndex: LargeArraySubpart-accessing. +* lastModifyTime <1>: VFS.VFSHandler-accessing. +* lastModifyTime <2>: VFS.RealFileHandler-accessing. +* lastModifyTime <3>: VFS.ArchiveMemberHandler-accessing. +* lastModifyTime: File-accessing. +* lastUnwindPoint: ContextPart class-exception handling. +* lcm_: Integer-math methods. +* left: Rectangle-accessing. +* left_: Rectangle-accessing. +* left_right_top_bottom_: Rectangle class-instance creation. +* left_top_right_bottom_: Rectangle-accessing. +* leftCenter: Rectangle-accessing. +* lf: Character class-constants. +* libraries: Package-accessing. +* librariesFor_: PackageLoader class-accessing. +* library_getFunc_: DLD class-C functions. +* libraryList: DLD class-dynamic linking. +* lineDelimiter: CharacterArray class-basic. +* linesDo_: String-useful functionality. +* linkFile_: DLD class-C functions. +* literalAt_: CompiledCode-accessing. +* literalAt_put_: CompiledCode-accessing. +* literals: CompiledCode-accessing. +* literals_numArgs_numTemps_primitive_bytecodes_depth_: CompiledMethod class-instance creation. +* ln <1>: Number-misc math. +* ln: Float-built ins. +* ln10 <1>: FloatQ class-characterization. +* ln10 <2>: FloatE class-characterization. +* ln10: Float class-characterization. +* load: ObjectDumper-loading/dumping objects. +* loadedClass: AutoloadClass-accessing. +* loadedMetaclass: AutoloadClass-accessing. +* loadFrom_ <1>: VersionableObjectProxy class-saving and restoring. +* loadFrom_ <2>: ObjectDumper class-shortcuts. +* loadFrom_ <3>: NullProxy class-instance creation. +* loadFrom_: DumperProxy class-accessing. +* localKernel: Directory class-reading system defaults. +* lock: Semaphore-builtins. +* log: Number-misc math. +* log10Base2 <1>: FloatQ class-characterization. +* log10Base2 <2>: FloatE class-characterization. +* log10Base2: Float class-characterization. +* log_: Number-misc math. +* longAt_ <1>: Memory class-accessing. +* longAt_: ByteArray-more advanced accessing. +* longAt_put_ <1>: Memory class-accessing. +* longAt_put_: ByteArray-more advanced accessing. +* low: SystemExceptions.ArgumentOutOfRange-accessing. +* low_: SystemExceptions.ArgumentOutOfRange-accessing. +* lowerPriority: Process-basic. +* lowestPriority: ProcessorScheduler-priorities. +* lowIOPriority: ProcessorScheduler-priorities. +* makeEphemeron: Object-built ins. +* makeFixed: Object-built ins. +* makeReadOnly_: Object-built ins. +* makeWeak: Object-built ins. +* map: MappedCollection-basic. +* mark: ContextPart-exception handling. +* mark_: Object-built ins. +* match_: CharacterArray-comparing. +* match_ignoreCase_: CharacterArray-comparing. +* max_ <1>: Point-comparing. +* max_ <2>: Number-comparing. +* max_: Magnitude-misc methods. +* member_do_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* member_do_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* merge_: Rectangle-rectangle functions. +* meridianAbbreviation: DateTime-computations. +* message <1>: TextCollector-set up. +* message: MessageNotUnderstood-accessing. +* message_ <1>: TextCollector-set up. +* message_: TextCollector class-accessing. +* messageText <1>: SystemExceptions.WrongMessageSent-accessing. +* messageText <2>: SystemExceptions.WrongClass-accessing. +* messageText <3>: SystemExceptions.InvalidValue-accessing. +* messageText <4>: SystemExceptions.InvalidArgument-accessing. +* messageText <5>: SystemExceptions.IndexOutOfRange-accessing. +* messageText: Signal-accessing. +* messageText_: Signal-accessing. +* metaclassFor_: UndefinedObject-class creation. +* method <1>: ContextPart-accessing. +* method <2>: CompiledBlock-accessing. +* method: BlockClosure-accessing. +* methodCategory <1>: CompiledMethod-basic. +* methodCategory <2>: CompiledCode-basic. +* methodCategory: CompiledBlock-basic. +* methodCategory_ <1>: CompiledMethod-basic. +* methodCategory_ <2>: CompiledCode-basic. +* methodCategory_: CompiledBlock-basic. +* methodClass <1>: MethodInfo-accessing. +* methodClass <2>: ContextPart-accessing. +* methodClass <3>: CompiledMethod-accessing. +* methodClass <4>: CompiledCode-accessing. +* methodClass: CompiledBlock-accessing. +* methodClass_ <1>: MethodInfo-accessing. +* methodClass_ <2>: CompiledMethod-accessing. +* methodClass_ <3>: CompiledCode-accessing. +* methodClass_: CompiledBlock-accessing. +* methodDictionary: Behavior-method dictionary. +* methodDictionary_: Behavior-method dictionary. +* methods: Behavior-compilation (alternative). +* methodsFor: Behavior-compilation (alternative). +* methodsFor_: Behavior-compiling methods. +* methodsFor_ifFeatures_: Behavior-compilation (alternative). +* methodsFor_ifTrue_: Behavior-built ins. +* methodsFor_stamp_: Behavior-compilation (alternative). +* methodSourceCode <1>: CompiledMethod-basic. +* methodSourceCode <2>: CompiledCode-basic. +* methodSourceCode: CompiledBlock-basic. +* methodSourceFile <1>: CompiledMethod-basic. +* methodSourceFile <2>: CompiledCode-basic. +* methodSourceFile: CompiledBlock-basic. +* methodSourcePos <1>: CompiledMethod-basic. +* methodSourcePos <2>: CompiledCode-basic. +* methodSourcePos: CompiledBlock-basic. +* methodSourceString <1>: CompiledMethod-basic. +* methodSourceString <2>: CompiledCode-basic. +* methodSourceString: CompiledBlock-basic. +* millisecondClock: Time class-clocks. +* millisecondClockValue <1>: Time class-clocks. +* millisecondClockValue: Delay class-general inquiries. +* millisecondsPerDay: Time class-clocks. +* millisecondsToRun_: Time class-clocks. +* min_ <1>: Point-comparing. +* min_ <2>: Number-comparing. +* min_: Magnitude-misc methods. +* minute <1>: Time-accessing (ANSI for DateAndTimes). +* minute: DateTime-computations. +* minutes: Time-accessing (non ANSI & for Durations). +* minutes_: Time class-instance creation. +* module: Directory class-reading system defaults. +* moduleList: DLD class-dynamic linking. +* modules: Package-accessing. +* modulesFor_: PackageLoader class-accessing. +* month: Date-date computations. +* monthAbbreviation: Date-date computations. +* monthName: Date-date computations. +* mourn <1>: Object-finalization. +* mourn <2>: HomedAssociation-finalization. +* mourn: Association-finalization. +* mourn_: Collection-finalization. +* moveBy_: Rectangle-transforming. +* moveTo_: Rectangle-transforming. +* multiBecome_: Array-mutating objects. +* multiply_: LargePositiveInteger-primitive operations. +* mustBeBoolean: Object-exception handling. +* name <1>: VFS.VFSHandler-accessing. +* name <2>: Semaphore-accessing. +* name <3>: RecursionLock-accessing. +* name <4>: Process-accessing. +* name <5>: Package-accessing. +* name <6>: Metaclass-delegation. +* name <7>: FileDescriptor-accessing. +* name <8>: File-accessing. +* name <9>: Class-accessing instances and variables. +* name <10>: CFunctionDescriptor-accessing. +* name <11>: BindingDictionary-accessing. +* name <12>: Behavior-support for lightweight classes. +* name <13>: AutoloadClass-accessing. +* name: AbstractNamespace-printing. +* name_ <1>: VFS.VFSHandler-accessing. +* name_ <2>: VFS.RealFileHandler-accessing. +* name_ <3>: Semaphore-accessing. +* name_ <4>: RecursionLock-accessing. +* name_ <5>: Process-accessing. +* name_ <6>: Package-accessing. +* name_ <7>: File class-instance creation. +* name_ <8>: AutoloadClass-accessing. +* name_: AbstractNamespace-printing. +* name_environment_subclassOf_instanceVariableNames_variable_words_pointers_classVariableNames_poolDictionaries_category_: Metaclass-basic. +* name_realFileName_: VFS.DecodedFileHandler-files. +* nameAt_: Directory-accessing. +* nameIn_ <1>: SystemDictionary-printing. +* nameIn_ <2>: RootNamespace-printing. +* nameIn_ <3>: Namespace-printing. +* nameIn_ <4>: Metaclass-printing. +* nameIn_ <5>: ClassDescription-printing. +* nameIn_ <6>: BindingDictionary-accessing. +* nameIn_ <7>: Behavior-support for lightweight classes. +* nameIn_: AbstractNamespace-printing. +* nameOfDay_: Date class-basic. +* nameOfMonth_: Date class-basic. +* namesMatching_do_: Directory-enumerating. +* nan <1>: FloatQ class-characterization. +* nan <2>: FloatE class-characterization. +* nan: FloatD class-characterization. +* narrow: CObject-conversion. +* negated <1>: Number-misc math. +* negated <2>: LargeInteger-arithmetic. +* negated <3>: Fraction-optimized cases. +* negated <4>: Float-arithmetic. +* negated: Duration-arithmetics. +* negative <1>: Number-testing. +* negative <2>: LargePositiveInteger-numeric testing. +* negative <3>: LargeNegativeInteger-numeric testing. +* negative <4>: Float-testing. +* negative: Duration-arithmetics. +* negativeInfinity <1>: FloatQ class-characterization. +* negativeInfinity <2>: FloatE class-characterization. +* negativeInfinity: FloatD class-characterization. +* new <1>: ZeroDivide class-instance creation. +* new <2>: ValueHolder class-creating instances. +* new <3>: ValueAdaptor class-creating instances. +* new <4>: Time class-instance creation. +* new <5>: TextCollector class-accessing. +* new <6>: Symbol class-instance creation. +* new <7>: SortedCollection class-instance creation. +* new <8>: SharedQueue class-instance creation. +* new <9>: Semaphore class-instance creation. +* new <10>: RunArray class-instance creation. +* new <11>: RecursionLock class-instance creation. +* new <12>: Rectangle class-instance creation. +* new <13>: Random class-instance creation. +* new <14>: ProcessorScheduler class-instance creation. +* new <15>: Point class-instance creation. +* new <16>: OrderedCollection class-instance creation. +* new <17>: ObjectDumper class-instance creation. +* new <18>: NullValueHolder class-creating instances. +* new <19>: NetClients.URL class-instance creation. +* new <20>: Namespace class-disabling instance creation. +* new <21>: MappedCollection class-instance creation. +* new <22>: LookupTable class-instance creation. +* new <23>: HashedCollection class-instance creation. +* new <24>: ExceptionSet class-instance creation. +* new <25>: Exception class-instance creation. +* new <26>: Dictionary class-instance creation. +* new <27>: CType-C instance creation. +* new <28>: CoreException class-instance creation. +* new <29>: CObject class-instance creation. +* new <30>: CCompound class-instance creation. +* new <31>: Behavior-built ins. +* new <32>: Bag class-basic. +* new: AbstractNamespace class-instance creation. +* new_ <1>: WeakArray class-instance creation. +* new_ <2>: Symbol class-instance creation. +* new_ <3>: SortedCollection class-instance creation. +* new_ <4>: RunArray class-instance creation. +* new_ <5>: RootNamespace class-instance creation. +* new_ <6>: OrderedCollection class-instance creation. +* new_ <7>: Namespace class-disabling instance creation. +* new_ <8>: LargeArrayedCollection class-instance creation. +* new_ <9>: HashedCollection class-instance creation. +* new_ <10>: CPtrCType-accessing. +* new_ <11>: CObject class-instance creation. +* new_ <12>: Behavior-built ins. +* new_: Bag class-basic. +* new_withAll_: ArrayedCollection class-instance creation. +* newBuffer <1>: FileStream-buffering. +* newBuffer: FileDescriptor-initialize-release. +* newChild: CoreException-instance creation. +* newCollection_ <1>: LargeWordArray-overridden. +* newCollection_ <2>: LargeByteArray-overridden. +* newCollection_: LargeArray-overridden. +* newDay_month_year_: Date class-instance creation (Blue Book). +* newDay_monthIndex_year_: Date class-instance creation (Blue Book). +* newDay_year_: Date class-instance creation (Blue Book). +* newFromNumber_scale_: ScaledDecimal class-instance creation. +* newInFixedSpace: Behavior-instance creation. +* newInFixedSpace_: Behavior-instance creation. +* newMemberHandlerFor_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* newMeta_environment_subclassOf_instanceVariableNames_variable_words_pointers_classVariableNames_poolDictionaries_category_: Metaclass-basic. +* newMethod_header_literals_: CompiledCode class-instance creation. +* newMethod_header_method_: CompiledBlock class-instance creation. +* newMethod_header_numLiterals_: CompiledCode class-instance creation. +* newPage: Character class-constants. +* newProcess <1>: DirectedMessage-multiple process. +* newProcess: BlockClosure-multiple process. +* newProcessWith_: BlockClosure-multiple process. +* newsGroup: NetClients.URL-accessing. +* newStruct_declaration_: CCompound class-subclass creation. +* next <1>: TokenStream-basic. +* next <2>: Stream-accessing-reading. +* next <3>: SharedQueue-accessing. +* next <4>: Random-basic. +* next <5>: Random class-shortcuts. +* next <6>: PositionableStream-accessing-reading. +* next <7>: ObjectDumper-stream interface. +* next <8>: FileStream-basic. +* next <9>: FileDescriptor-basic. +* next: ByteStream-basic. +* next_ <1>: Stream-accessing-reading. +* next_ <2>: FileStream-overriding inherited methods. +* next_: FileDescriptor-overriding inherited methods. +* next_put_ <1>: TextCollector-accessing. +* next_put_: Stream-accessing-writing. +* next_putAll_startingAt_: Stream-accessing-writing. +* nextAvailable_: Stream-accessing-reading. +* nextByte <1>: FileStream-basic. +* nextByte <2>: FileDescriptor-basic. +* nextByte: ByteStream-basic. +* nextByteArray_ <1>: FileStream-overriding inherited methods. +* nextByteArray_ <2>: FileDescriptor-overriding inherited methods. +* nextByteArray_: ByteStream-basic. +* nextHunk <1>: FileStream-buffering. +* nextHunk: FileDescriptor-initialize-release. +* nextInstance: Object-built ins. +* nextLine <1>: Stream-accessing-reading. +* nextLine: FileStream-overriding inherited methods. +* nextLink: Link-basic. +* nextLink_ <1>: Link-basic. +* nextLink_: Link class-instance creation. +* nextLong: ByteStream-basic. +* nextMatchFor_: Stream-accessing-reading. +* nextPut_ <1>: WriteStream-accessing-writing. +* nextPut_ <2>: TokenStream-write methods. +* nextPut_ <3>: TextCollector-accessing. +* nextPut_ <4>: Stream-accessing-writing. +* nextPut_ <5>: SharedQueue-accessing. +* nextPut_ <6>: Random-basic. +* nextPut_ <7>: ObjectDumper-stream interface. +* nextPut_ <8>: FileStream-basic. +* nextPut_ <9>: FileDescriptor-basic. +* nextPut_: ByteStream-basic. +* nextPutAll_ <1>: TextCollector-accessing. +* nextPutAll_ <2>: Stream-accessing-writing. +* nextPutAll_ <3>: FileStream-overriding inherited methods. +* nextPutAll_ <4>: FileDescriptor-overriding inherited methods. +* nextPutAll_: ByteStream-basic. +* nextPutAllFlush_: FileStream-overriding inherited methods. +* nextPutByte_ <1>: FileStream-basic. +* nextPutByte_ <2>: FileDescriptor-basic. +* nextPutByte_: ByteStream-basic. +* nextPutByteArray_ <1>: FileStream-basic. +* nextPutByteArray_ <2>: FileDescriptor-basic. +* nextPutByteArray_: ByteStream-basic. +* nextPutLong_: ByteStream-basic. +* nextPutShort_: ByteStream-basic. +* nextShort: ByteStream-basic. +* nextSignedByte: ByteStream-basic. +* nextUlong: ByteStream-basic. +* nextUshort: ByteStream-basic. +* nextValidOop: SmallInteger-built ins. +* nl <1>: Stream-character writing. +* nl: Character class-constants. +* nlTab: Stream-character writing. +* noMask_: Integer-bit operators. +* nonVersionedInstSize: Class-saving and loading. +* normal: Point-point functions. +* noRunnableProcess: Object-exception handling. +* not <1>: True-basic. +* not <2>: False-basic. +* not: Boolean-basic. +* notEmpty <1>: LinkedList-testing. +* notEmpty: Collection-testing collections. +* notify: Semaphore-builtins. +* notifyAll: Semaphore-builtins. +* notNil <1>: UndefinedObject-testing. +* notNil: Object-testing functionality. +* notYetImplemented: Object-built ins. +* now <1>: Time class-instance creation. +* now: DateTime class-instance creation. +* nthOuterContext_: BlockContext-accessing. +* nul: Character class-constants. +* null <1>: ValueHolder class-creating instances. +* null: Promise class-creating instances. +* numArgs <1>: Symbol-basic. +* numArgs <2>: ContextPart-accessing. +* numArgs <3>: CompiledMethod-accessing. +* numArgs <4>: CompiledCode-accessing. +* numArgs <5>: CompiledBlock-accessing. +* numArgs: BlockClosure-accessing. +* numArgs_numTemps_bytecodes_depth_literals_ <1>: CompiledBlock class-instance creation. +* numArgs_numTemps_bytecodes_depth_literals_: BlockClosure class-instance creation. +* numberOfElements: CArrayCType-accessing. +* numCompactions: ObjectMemory-accessing. +* numerator <1>: Integer-accessing. +* numerator: Fraction-accessing. +* numerator_denominator_: Fraction class-instance creation. +* numFixedOOPs: ObjectMemory-accessing. +* numFreeOTEs: ObjectMemory-accessing. +* numGlobalGCs: ObjectMemory-accessing. +* numGrowths: ObjectMemory-accessing. +* numLiterals <1>: CompiledCode-accessing. +* numLiterals: CompiledBlock-accessing. +* numOldOOPs: ObjectMemory-accessing. +* numOTEs: ObjectMemory-accessing. +* numScavenges: ObjectMemory-accessing. +* numTemps <1>: ContextPart-accessing. +* numTemps <2>: CompiledMethod-accessing. +* numTemps <3>: CompiledCode-accessing. +* numTemps <4>: CompiledBlock-accessing. +* numTemps: BlockClosure-accessing. +* numWeakOOPs: ObjectMemory-accessing. +* object <1>: SingletonProxy-saving and restoring. +* object <2>: PluggableProxy-saving and restoring. +* object <3>: DumperProxy-saving and restoring. +* object: AlternativeObjectProxy-accessing. +* object_: AlternativeObjectProxy-accessing. +* objectAt_: ByteArray-more advanced accessing. +* objectAt_put_: ByteArray-more advanced accessing. +* objectsAndRunLengthsDo_: RunArray-enumerating. +* occurrencesOf_ <1>: SortedCollection-searching. +* occurrencesOf_ <2>: HashedCollection-testing collections. +* occurrencesOf_ <3>: Dictionary-dictionary testing. +* occurrencesOf_ <4>: Collection-testing collections. +* occurrencesOf_: Bag-testing collections. +* odd <1>: Number-testing. +* odd: Integer-math methods. +* offset: DateTime-time zones. +* offset_: DateTime-time zones. +* oldSpaceSize: ObjectMemory-accessing. +* oldSpaceUsedBytes: ObjectMemory-accessing. +* on_ <1>: WriteStream class-instance creation. +* on_ <2>: TokenStream class-instance creation. +* on_ <3>: SingletonProxy class-instance creation. +* on_ <4>: ReadWriteStream class-instance creation. +* on_ <5>: ReadStream class-instance creation. +* on_ <6>: PositionableStream class-instance creation. +* on_ <7>: PluggableProxy class-accessing. +* on_ <8>: ObjectDumper class-instance creation. +* on_ <9>: NetClients.URIResolver class-instance creation. +* on_ <10>: FileDescriptor class-instance creation. +* on_ <11>: File class-instance creation. +* on_ <12>: DumperProxy class-instance creation. +* on_: AlternativeObjectProxy class-instance creation. +* on_aspect_: PluggableAdaptor class-creating instances. +* on_do_: BlockClosure-exception handling. +* on_do_on_do_: BlockClosure-exception handling. +* on_do_on_do_on_do_: BlockClosure-exception handling. +* on_do_on_do_on_do_on_do_: BlockClosure-exception handling. +* on_do_on_do_on_do_on_do_on_do_: BlockClosure-exception handling. +* on_from_to_: PositionableStream class-instance creation. +* on_getSelector_putSelector_: PluggableAdaptor class-creating instances. +* on_index_: PluggableAdaptor class-creating instances. +* on_key_: PluggableAdaptor class-creating instances. +* on_startingAt_for_: FileSegment class-basic. +* one: ScaledDecimal-constants. +* onStream_: TokenStream class-instance creation. +* open_ <1>: FileDescriptor class-instance creation. +* open_: File-file operations. +* open_ifFail_ <1>: VFS.VFSHandler-file operations. +* open_ifFail_: File-file operations. +* open_mode_: FileDescriptor class-instance creation. +* open_mode_ifFail_ <1>: VFS.VFSHandler-file operations. +* open_mode_ifFail_ <2>: VFS.RealFileHandler-file operations. +* open_mode_ifFail_ <3>: VFS.ArchiveMemberHandler-file operations. +* open_mode_ifFail_: FileDescriptor class-instance creation. +* openDescriptor_: File-file operations. +* openDescriptor_ifFail_: VFS.VFSHandler-file operations. +* openDir_: VFS.VFSHandler-C functions. +* openOn_: NetClients.URIResolver class-api. +* openOn_ifFail_: NetClients.URIResolver class-api. +* openStreamOn_: NetClients.URIResolver class-api. +* openStreamOn_ifFail_: NetClients.URIResolver class-api. +* openTemporaryFile_: FileDescriptor class-instance creation. +* or_ <1>: True-basic. +* or_ <2>: False-basic. +* or_: Boolean-basic. +* origin: Rectangle-accessing. +* origin_: Rectangle-accessing. +* origin_corner_ <1>: Rectangle-accessing. +* origin_corner_: Rectangle class-instance creation. +* origin_extent_ <1>: Rectangle-accessing. +* origin_extent_: Rectangle class-instance creation. +* outer: Signal-exception handling. +* outerContext <1>: BlockContext-accessing. +* outerContext: BlockClosure-accessing. +* outerContext_: BlockClosure-accessing. +* parent <1>: VFS.ArchiveMemberHandler-accessing. +* parent: CoreException-accessing. +* parent_: VFS.ArchiveMemberHandler-initializing. +* parentContext: ContextPart-accessing. +* parentContext_: ContextPart-accessing. +* parserClass: Behavior-pluggable behavior (not yet implemented). +* pass: Signal-exception handling. +* password: NetClients.URL-accessing. +* password_: NetClients.URL-accessing. +* path <1>: VariableBinding-printing. +* path <2>: NetClients.URL-accessing. +* path: File-file name management. +* path_: NetClients.URL-accessing. +* pathFor_: File class-file name management. +* pathSeparator: Directory class-file name management. +* pathSeparatorString: Directory class-file name management. +* peek <1>: SharedQueue-accessing. +* peek <2>: PositionableStream-accessing-reading. +* peek <3>: FileStream-basic. +* peek: FileDescriptor-basic. +* peekFor_: PositionableStream-accessing-reading. +* pendingWrite: FileStream-buffering. +* perform_: Object-built ins. +* perform_with_: Object-built ins. +* perform_with_with_: Object-built ins. +* perform_with_with_with_: Object-built ins. +* perform_withArguments_: Object-built ins. +* pi <1>: FloatQ class-characterization. +* pi <2>: FloatE class-characterization. +* pi: Float class-characterization. +* popen_dir_: FileDescriptor class-instance creation. +* popen_dir_ifFail_: FileDescriptor class-instance creation. +* port: NetClients.URL-accessing. +* port_: NetClients.URL-accessing. +* position <1>: PositionableStream-positioning. +* position <2>: FileStream-basic. +* position: FileDescriptor-basic. +* position_ <1>: ReadWriteStream-positioning. +* position_ <2>: PositionableStream-positioning. +* position_ <3>: FileStream-basic. +* position_: FileDescriptor-basic. +* positive <1>: Number-testing. +* positive <2>: LargePositiveInteger-numeric testing. +* positive <3>: LargeNegativeInteger-numeric testing. +* positive <4>: Float-testing. +* positive: Duration-arithmetics. +* positiveDifference_: Number-misc math. +* postCopy <1>: Object-copying. +* postCopy <2>: NetClients.URL-copying. +* postCopy: CoreException-basic. +* postData: NetClients.URL-accessing. +* postData_: NetClients.URL-accessing. +* postLoad <1>: WeakArray-loading. +* postLoad <2>: SortedCollection-saving and loading. +* postLoad <3>: Object-saving and loading. +* postLoad: HashedCollection-saving and loading. +* postStore <1>: Object-saving and loading. +* postStore: HashedCollection-saving and loading. +* precision <1>: FloatQ class-characterization. +* precision <2>: FloatE class-characterization. +* precision: FloatD class-characterization. +* prerequisites: Package-accessing. +* prerequisitesFor_: PackageLoader class-accessing. +* preStore <1>: SortedCollection-saving and loading. +* preStore: Object-saving and loading. +* primaryInstance: Metaclass-accessing. +* primAt_: HashedCollection-builtins. +* primAt_put_: HashedCollection-builtins. +* primCreateDir_mode_: VFS.VFSHandler-C functions. +* primDefineExternFunc_: DLD class-dynamic linking. +* primDivide_: LargePositiveInteger-helper byte-level methods. +* primError_: Object-built ins. +* primHash: Float-built ins. +* primIsExecutable_: VFS.VFSHandler-C functions. +* primIsReadable_: VFS.VFSHandler-C functions. +* primIsWriteable_: VFS.VFSHandler-C functions. +* primitive <1>: CompiledMethod-accessing. +* primitive: CompiledCode-accessing. +* primitiveFailed: Object-built ins. +* primMillisecondClock: Time class-builtins. +* primNew_name_: AbstractNamespace class-instance creation. +* primObject: AlternativeObjectProxy-accessing. +* primRemoveDir_: VFS.VFSHandler-C functions. +* primRename_to_: VFS.VFSHandler-C functions. +* primReplaceFrom_to_with_startingAt_ <1>: String-built ins. +* primReplaceFrom_to_with_startingAt_ <2>: LargeInteger-built-ins. +* primReplaceFrom_to_with_startingAt_: ByteArray-built ins. +* primSecondClock: Time class-builtins. +* primSize: HashedCollection-builtins. +* primTerminate: Process-basic. +* primUnlink_: VFS.VFSHandler-C functions. +* primWorking_: Directory class-C functions. +* print: Object-printing. +* print_ <1>: TextCollector-printing. +* print_: Stream-printing. +* printHierarchy: Behavior-printing hierarchy. +* printNl: Object-printing. +* printOn_ <1>: VariableBinding-printing. +* printOn_ <2>: ValueAdaptor-printing. +* printOn_ <3>: UndefinedObject-printing. +* printOn_ <4>: True-printing. +* printOn_ <5>: Time-arithmetic. +* printOn_ <6>: TextCollector-printing. +* printOn_ <7>: SymLink-printing. +* printOn_ <8>: Symbol-storing. +* printOn_ <9>: Semaphore-printing. +* printOn_ <10>: ScaledDecimal-printing. +* printOn_ <11>: RecursionLock-printing. +* printOn_ <12>: Rectangle-printing. +* printOn_ <13>: Promise-printing. +* printOn_ <14>: ProcessorScheduler-printing. +* printOn_ <15>: Process-printing. +* printOn_ <16>: Point-printing. +* printOn_ <17>: Package-accessing. +* printOn_ <18>: Object-printing. +* printOn_ <19>: NetClients.URL-printing. +* printOn_ <20>: MethodContext-printing. +* printOn_ <21>: Metaclass-printing. +* printOn_ <22>: Message-basic. +* printOn_ <23>: LookupKey-printing. +* printOn_ <24>: Interval-printing. +* printOn_ <25>: Integer-printing. +* printOn_ <26>: Fraction-printing. +* printOn_ <27>: Float-printing. +* printOn_ <28>: FileDescriptor-printing. +* printOn_ <29>: False-printing. +* printOn_ <30>: Duration-arithmetics. +* printOn_ <31>: DirectedMessage-basic. +* printOn_ <32>: Dictionary-printing. +* printOn_ <33>: DateTime-printing. +* printOn_ <34>: Date-printing. +* printOn_ <35>: CompiledMethod-printing. +* printOn_ <36>: CompiledBlock-printing. +* printOn_ <37>: Collection-printing. +* printOn_ <38>: CObject-accessing. +* printOn_ <39>: Class-printing. +* printOn_ <40>: CharacterArray-printing. +* printOn_ <41>: Character-printing. +* printOn_ <42>: CFunctionDescriptor-printing. +* printOn_ <43>: BlockContext-printing. +* printOn_ <44>: Bag-printing. +* printOn_ <45>: Association-printing. +* printOn_ <46>: Array-printing. +* printOn_: AbstractNamespace-printing. +* printOn_base_: Integer-printing. +* printOn_in_ <1>: SystemDictionary-printing. +* printOn_in_ <2>: RootNamespace-printing. +* printOn_in_ <3>: Namespace-printing. +* printOn_in_ <4>: Metaclass-printing. +* printOn_in_ <5>: ClassDescription-printing. +* printOn_in_ <6>: BindingDictionary-printing. +* printOn_in_: Behavior-support for lightweight classes. +* printString <1>: Object-printing. +* printString: Integer-printing. +* printString_: Integer-printing. +* printStringRadix_: Integer-printing. +* printSubclasses_using_: Behavior-printing hierarchy. +* printXmlOn_collection_tag_: Package-accessing. +* priority: Process-accessing. +* priority_: Process-accessing. +* priorityName_: ProcessorScheduler-priorities. +* privateMethods: Behavior-compilation (alternative). +* processesAt_: ProcessorScheduler-basic. +* proxyClassFor_: ObjectDumper class-establishing proxy classes. +* proxyFor_: ObjectDumper class-establishing proxy classes. +* ptrType: CType-accessing. +* publicMethods: Behavior-compilation (alternative). +* putenv_: SystemDictionary-C functions. +* query: NetClients.URL-accessing. +* query_: NetClients.URL-accessing. +* queueInterrupt_: Process-accessing. +* quit: ObjectMemory class-builtins. +* quit_: ObjectMemory class-builtins. +* quo_ <1>: SmallInteger-built ins. +* quo_ <2>: Number-arithmetic. +* quo_ <3>: LargeZeroInteger-arithmetic. +* quo_: LargeInteger-arithmetic. +* radiansToDegrees: Number-converting. +* radix: Float class-characterization. +* radix_: Integer-printing. +* raisedTo_ <1>: Number-misc math. +* raisedTo_: Float-built ins. +* raisedToInteger_ <1>: Number-misc math. +* raisedToInteger_: Fraction-optimized cases. +* raisePriority: Process-basic. +* read: FileDescriptor class-instance creation. +* read_: FileDescriptor-low-level access. +* read_from_to_: FileDescriptor-low-level access. +* read_numBytes_: FileDescriptor-low-level access. +* readDir_: VFS.VFSHandler-C functions. +* readFrom_ <1>: Time class-instance creation. +* readFrom_ <2>: Number class-converting. +* readFrom_ <3>: DateTime class-instance creation. +* readFrom_: Date class-instance creation (Blue Book). +* reads_ <1>: CompiledMethod-testing. +* reads_: CompiledCode-testing accesses. +* readStream <1>: SequenceableCollection-enumerating. +* readStream: File-file operations. +* readWrite: FileDescriptor class-instance creation. +* readWriteStream: SequenceableCollection-enumerating. +* realFileName <1>: VFS.VFSHandler-accessing. +* realFileName <2>: VFS.DecodedFileHandler-files. +* realFileName: VFS.ArchiveMemberHandler-finalization. +* rebuildTable: Symbol class-symbol table. +* receiver <1>: MessageNotUnderstood-accessing. +* receiver <2>: DirectedMessage-accessing. +* receiver <3>: ContextPart-accessing. +* receiver: BlockClosure-accessing. +* receiver_ <1>: DirectedMessage-accessing. +* receiver_: BlockClosure-accessing. +* reciprocal <1>: Number-arithmetic. +* reciprocal: Fraction-optimized cases. +* reclaimedBytesPerGlobalGC: ObjectMemory-accessing. +* reclaimedBytesPerScavenge: ObjectMemory-accessing. +* reclaimedPercentPerScavenge: ObjectMemory-accessing. +* recompile_: Behavior-method dictionary. +* recompile_notifying_: Behavior-method dictionary. +* reconstructOriginalObject <1>: Object-saving and loading. +* reconstructOriginalObject: DirectedMessage-saving and loading. +* record_: FileStream class-file-in. +* refersTo_: CompiledCode-testing accesses. +* refresh <1>: VFS.VFSHandler-accessing. +* refresh <2>: VFS.RealFileHandler-accessing. +* refresh <3>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* refresh <4>: VFS.ArchiveMemberHandler-accessing. +* refresh: File-accessing. +* refreshDependencies: PackageLoader class-accessing. +* register_forClass_: VFS.VFSHandler class-initializing. +* registerProxyClass_for_: ObjectDumper class-establishing proxy classes. +* rehash <1>: WeakValueLookupTable-rehashing. +* rehash <2>: MethodDictionary-rehashing. +* rehash <3>: LookupTable-rehashing. +* rehash <4>: HashedCollection-rehashing. +* rehash: Dictionary-rehashing. +* reinvokeFor_: Message-basic. +* reject_ <1>: MappedCollection-basic. +* reject_ <2>: Dictionary-dictionary enumerating. +* reject_ <3>: Collection-enumeration. +* reject_: ArrayedCollection-enumerating the elements of a collection. +* release <1>: VFS.ExternalArchiveFileHandler-releasing. +* release <2>: VFS.DecodedFileHandler-files. +* release <3>: VFS.ArchiveMemberHandler-finalization. +* release <4>: VFS.ArchiveFileHandler-directory operations. +* release <5>: UndefinedObject-dependents access. +* release: Object-dependents access. +* relocateFrom_to_: FileSegment class-installing. +* relocateFrom_to_map_: FileSegment-basic. +* relocateTo_: LargeArraySubpart-modifying. +* rem_ <1>: Number-arithmetic. +* rem_ <2>: LargeZeroInteger-arithmetic. +* rem_: LargeInteger-arithmetic. +* remove <1>: VFS.VFSHandler-file operations. +* remove <2>: VFS.RealFileHandler-file operations. +* remove <3>: VFS.ArchiveMemberHandler-file operations. +* remove <4>: VFS.ArchiveFileHandler-file operations. +* remove: File-file operations. +* remove_ <1>: MethodDictionary-removing. +* remove_ <2>: LookupTable-removing. +* remove_ <3>: File class-file operations. +* remove_ <4>: Dictionary-dictionary removing. +* remove_: Collection-removing. +* remove_ifAbsent_ <1>: WeakSet-accessing. +* remove_ifAbsent_ <2>: OrderedCollection-removing. +* remove_ifAbsent_ <3>: LookupTable-removing. +* remove_ifAbsent_ <4>: LinkedList-adding. +* remove_ifAbsent_ <5>: HashedCollection-removing. +* remove_ifAbsent_ <6>: Dictionary-dictionary removing. +* remove_ifAbsent_ <7>: Collection-removing. +* remove_ifAbsent_: Bag-removing. +* removeAll_: Collection-removing. +* removeAll_ifAbsent_: Collection-removing. +* removeAllKeys_: Dictionary-dictionary removing. +* removeAllKeys_ifAbsent_: Dictionary-dictionary removing. +* removeAtIndex_ <1>: RunArray-removing. +* removeAtIndex_: OrderedCollection-removing. +* removeCategory_: ClassDescription-organization of messages and classes. +* removeClassVarName_ <1>: Metaclass-delegation. +* removeClassVarName_: Class-accessing instances and variables. +* removeDependent_: Object-dependents access. +* removeFeature_: SystemDictionary-special accessing. +* removeFirst <1>: RunArray-removing. +* removeFirst <2>: OrderedCollection-removing. +* removeFirst: LinkedList-adding. +* removeFirst_: LargeArraySubpart-modifying. +* removeInstVarName_: Behavior-instance variables. +* removeKey_: Dictionary-dictionary removing. +* removeKey_ifAbsent_ <1>: MethodDictionary-removing. +* removeKey_ifAbsent_ <2>: LookupTable-removing. +* removeKey_ifAbsent_: Dictionary-dictionary removing. +* removeLast <1>: SortedCollection-basic. +* removeLast <2>: RunArray-removing. +* removeLast <3>: OrderedCollection-removing. +* removeLast: LinkedList-adding. +* removeLast_: LargeArraySubpart-modifying. +* removeLastUnwindPoint: ContextPart class-exception handling. +* removeMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* removeMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* removeSelector_: Behavior-method dictionary. +* removeSelector_ifAbsent_: Behavior-method dictionary. +* removeSharedPool_ <1>: Metaclass-delegation. +* removeSharedPool_: Class-accessing instances and variables. +* removeSubclass_ <1>: UndefinedObject-class creation. +* removeSubclass_: Behavior-creating a class hierarchy. +* removeToBeFinalized: Object-finalization. +* rename_to_: File class-file operations. +* renameTo_ <1>: VFS.VFSHandler-file operations. +* renameTo_ <2>: VFS.RealFileHandler-file operations. +* renameTo_ <3>: VFS.ArchiveMemberHandler-file operations. +* renameTo_: File-file operations. +* repeat: BlockClosure-control structures. +* replace_withStringBase_ <1>: LargeZeroInteger-printing. +* replace_withStringBase_: LargePositiveInteger-converting. +* replaceAll_with_: SequenceableCollection-replacing items. +* replaceFrom_to_with_: SequenceableCollection-replacing items. +* replaceFrom_to_with_startingAt_ <1>: String-built ins. +* replaceFrom_to_with_startingAt_ <2>: SequenceableCollection-replacing items. +* replaceFrom_to_with_startingAt_: ByteArray-built ins. +* replaceFrom_to_withByteArray_startingAt_: String-built ins. +* replaceFrom_to_withObject_: SequenceableCollection-replacing items. +* replaceFrom_to_withString_startingAt_: ByteArray-built ins. +* requestString: NetClients.URL-accessing. +* require_: FileStream class-file-in. +* reset <1>: PositionableStream-positioning. +* reset: FileDescriptor-basic. +* resignalAs_: Signal-exception handling. +* respondsTo_: Object-testing functionality. +* resume <1>: Signal-exception handling. +* resume: Process-builtins. +* resume_: Signal-exception handling. +* resumptionTime: Delay-accessing. +* retry: Signal-exception handling. +* retry_coercing_: Number-retrying. +* retryDifferenceCoercing_: Number-retrying. +* retryDivisionCoercing_: Number-retrying. +* retryEqualityCoercing_: Number-retrying. +* retryError: Number-retrying. +* retryInequalityCoercing_: Number-retrying. +* retryMultiplicationCoercing_: Number-retrying. +* retryRelationalOp_coercing_: Number-retrying. +* retrySumCoercing_: Number-retrying. +* retryUsing_: Signal-exception handling. +* return: Signal-exception handling. +* return_: Signal-exception handling. +* reverse <1>: SequenceableCollection-enumerating. +* reverse <2>: Interval-basic. +* reverse: ArrayedCollection-copying Collections. +* reverseContents <1>: WriteStream-accessing-writing. +* reverseContents <2>: ReadStream-accessing-reading. +* reverseContents <3>: PositionableStream-accessing-reading. +* reverseContents: FileDescriptor-overriding inherited methods. +* reverseDo_: SequenceableCollection-enumerating. +* rewindDir_: VFS.VFSHandler-C functions. +* right: Rectangle-accessing. +* right_: Rectangle-accessing. +* rightCenter: Rectangle-accessing. +* rockBottomPriority: ProcessorScheduler-priorities. +* rounded <1>: Rectangle-truncation and round off. +* rounded <2>: Point-truncation and round off. +* rounded <3>: Number-truncation and round off. +* rounded: Integer-converting. +* roundTo_: Number-truncation and round off. +* sameAs_: CharacterArray-comparing. +* scalarIndex <1>: CUShort-accessing. +* scalarIndex <2>: CUShort class-accessing. +* scalarIndex <3>: CULong-accessing. +* scalarIndex <4>: CULong class-accessing. +* scalarIndex <5>: CUInt-accessing. +* scalarIndex <6>: CUInt class-accessing. +* scalarIndex <7>: CUChar-accessing. +* scalarIndex <8>: CUChar class-getting info. +* scalarIndex <9>: CSmalltalk-accessing. +* scalarIndex <10>: CSmalltalk class-accessing. +* scalarIndex <11>: CShort-accessing. +* scalarIndex <12>: CShort class-accessing. +* scalarIndex <13>: CObject-conversion. +* scalarIndex <14>: CObject class-conversion. +* scalarIndex <15>: CLong-accessing. +* scalarIndex <16>: CLong class-accessing. +* scalarIndex <17>: CInt-accessing. +* scalarIndex <18>: CInt class-accessing. +* scalarIndex <19>: CFloat-accessing. +* scalarIndex <20>: CFloat class-accessing. +* scalarIndex <21>: CDouble-accessing. +* scalarIndex <22>: CDouble class-accessing. +* scalarIndex <23>: CChar-accessing. +* scalarIndex <24>: CChar class-accessing. +* scalarIndex <25>: CByte-accessing. +* scalarIndex: CByte class-conversion. +* scaleBy_: Rectangle-transforming. +* scanBacktraceFor_do_: ContextPart-enumerating. +* scavenge: ObjectMemory class-builtins. +* scavengesBeforeTenuring: ObjectMemory-derived information. +* scheme: NetClients.URL-accessing. +* scheme_: NetClients.URL-accessing. +* scheme_host_port_path_: NetClients.URL class-instance creation. +* scheme_path_: NetClients.URL class-instance creation. +* scheme_username_password_host_port_path_: NetClients.URL class-instance creation. +* scopeHas_ifTrue_: Behavior-testing the method dictionary. +* scramble: SmallInteger-builtins. +* second <1>: Time-accessing (ANSI for DateAndTimes). +* second: DateTime-computations. +* secondClock: Time class-clocks. +* seconds: Time-accessing (non ANSI & for Durations). +* seconds_: Time class-instance creation. +* seed_: Random class-instance creation. +* select_ <1>: MappedCollection-basic. +* select_ <2>: Dictionary-dictionary enumerating. +* select_ <3>: Collection-enumeration. +* select_: ArrayedCollection-enumerating the elements of a collection. +* selector <1>: SystemExceptions.WrongMessageSent-accessing. +* selector <2>: MethodInfo-accessing. +* selector <3>: Message-accessing. +* selector <4>: ContextPart-accessing. +* selector <5>: CompiledMethod-accessing. +* selector <6>: CompiledCode-accessing. +* selector: CompiledBlock-accessing. +* selector_ <1>: SystemExceptions.WrongMessageSent-accessing. +* selector_ <2>: MethodInfo-accessing. +* selector_ <3>: Message-accessing. +* selector_ <4>: CompiledMethod-accessing. +* selector_ <5>: CompiledCode-accessing. +* selector_: CompiledBlock-accessing. +* selector_arguments_ <1>: Message class-creating instances. +* selector_arguments_: DirectedMessage class-creating instances. +* selector_arguments_receiver_: DirectedMessage class-creating instances. +* selectorAt_: Behavior-accessing the methodDictionary. +* selectors: Behavior-accessing the methodDictionary. +* selectorsAndMethodsDo_: Behavior-method dictionary. +* selectSubclasses_: Behavior-enumerating. +* selectSubspaces_: AbstractNamespace-namespace hierarchy. +* selectSuperclasses_: Behavior-enumerating. +* selectSuperspaces_: AbstractNamespace-namespace hierarchy. +* send: DirectedMessage-basic. +* sender: MethodContext-accessing. +* sendTo_: Message-basic. +* set_to_: AbstractNamespace-overrides for superspaces. +* set_to_ifAbsent_ <1>: RootNamespace-overrides for superspaces. +* set_to_ifAbsent_ <2>: Namespace-overrides for superspaces. +* set_to_ifAbsent_: AbstractNamespace-overrides for superspaces. +* setBit_: Integer-bit operators. +* setPriorityFrom_to_suspend_: Process-accessing. +* setToEnd <1>: PositionableStream-positioning. +* setToEnd: FileDescriptor-overriding inherited methods. +* setTraceFlag_to_: SystemDictionary-builtins. +* shallowCopy <1>: WeakArray-conversion. +* shallowCopy <2>: UndefinedObject-basic. +* shallowCopy <3>: Symbol-basic. +* shallowCopy <4>: RunArray-copying. +* shallowCopy <5>: Object-built ins. +* shallowCopy <6>: Number-copying. +* shallowCopy <7>: HashedCollection-copying. +* shallowCopy <8>: Boolean-overriding. +* shallowCopy <9>: BlockClosure-overriding. +* shallowCopy: BindingDictionary-copying. +* sharedPools <1>: Metaclass-delegation. +* sharedPools <2>: Class-accessing instances and variables. +* sharedPools: Behavior-accessing instances and variables. +* sharedVariableString: ClassDescription-printing. +* shortAt_ <1>: Memory class-accessing. +* shortAt_: ByteArray-more advanced accessing. +* shortAt_put_ <1>: Memory class-accessing. +* shortAt_put_: ByteArray-more advanced accessing. +* shortMonthName: Date-compatibility (non-ANSI). +* shortNameOfMonth_: Date class-basic. +* shouldNotImplement: Object-built ins. +* show_: TextCollector-accessing. +* showCr_: TextCollector-accessing. +* showOnNewLine_: TextCollector-accessing. +* siblings <1>: RootNamespace-namespace hierarchy. +* siblings <2>: Namespace-namespace hierarchy. +* siblings: AbstractNamespace-namespace hierarchy. +* siblingsDo_ <1>: RootNamespace-namespace hierarchy. +* siblingsDo_ <2>: Namespace-namespace hierarchy. +* siblingsDo_: AbstractNamespace-namespace hierarchy. +* sign <1>: Number-testing. +* sign <2>: LargeZeroInteger-numeric testing. +* sign <3>: LargePositiveInteger-numeric testing. +* sign <4>: LargeNegativeInteger-numeric testing. +* sign: Float-testing. +* signal <1>: Semaphore-builtins. +* signal <2>: Exception-exception signaling. +* signal <3>: Exception class-instance creation. +* signal: CoreException-exception handling. +* signal_ <1>: Exception-exception signaling. +* signal_: Exception class-instance creation. +* signal_atMilliseconds_: ProcessorScheduler-timed invocation. +* signal_onInterrupt_: ProcessorScheduler-timed invocation. +* signalClass: CoreException-accessing. +* signalClass_: CoreException-accessing. +* signalOn_ <1>: SystemExceptions.InvalidValue class-signaling. +* signalOn_: SystemExceptions.EndOfStream class-signaling. +* signalOn_mustBe_: SystemExceptions.WrongClass class-signaling. +* signalOn_mustBeBetween_and_: SystemExceptions.ArgumentOutOfRange class-signaling. +* signalOn_reason_: SystemExceptions.InvalidValue class-signaling. +* signalOn_useInstead_: SystemExceptions.WrongMessageSent class-signaling. +* signalOn_what_: SystemExceptions.NotFound class-accessing. +* signalOn_withIndex_: SystemExceptions.IndexOutOfRange class-signaling. +* signalWith_: CoreException-exception handling. +* signalWith_with_: CoreException-exception handling. +* signalWithArguments_: CoreException-exception handling. +* signByte <1>: FloatQ class-byte-order dependancies. +* signByte <2>: FloatE class-byte-order dependancies. +* signByte <3>: FloatD class-byte-order dependancies. +* signByte: Float class-byte-order dependancies. +* similarityTo_: String-built ins. +* sin <1>: Number-misc math. +* sin: Float-built ins. +* singleStep: Process-basic. +* singleStepWaitingOn_: Process-builtins. +* size <1>: WriteStream-accessing. +* size <2>: WeakArray-accessing. +* size <3>: VFS.VFSHandler-accessing. +* size <4>: VFS.RealFileHandler-accessing. +* size <5>: VFS.ArchiveMemberHandler-accessing. +* size <6>: String-built ins. +* size <7>: RunArray-basic. +* size <8>: ReadStream-accessing-reading. +* size <9>: PositionableStream-positioning. +* size <10>: OrderedCollection-accessing. +* size <11>: Object-built ins. +* size <12>: Namespace-overrides for superspaces. +* size <13>: MappedCollection-basic. +* size <14>: LinkedList-testing. +* size <15>: Link-iteration. +* size <16>: LargeZeroInteger-accessing. +* size <17>: LargeInteger-built-ins. +* size <18>: LargeArrayedCollection-basic. +* size <19>: Interval-basic. +* size <20>: HashedCollection-testing collections. +* size <21>: FileStream-basic. +* size <22>: FileSegment-basic. +* size <23>: FileDescriptor-basic. +* size <24>: File-accessing. +* size <25>: ContextPart-accessing. +* size <26>: Collection-testing collections. +* size <27>: Bag-testing collections. +* size: ArrayedCollection-built ins. +* size_stCtime_stMtime_stAtime_isDirectory_: VFS.ArchiveMemberHandler-initializing. +* sizeof <1>: CUShort-accessing. +* sizeof <2>: CUShort class-accessing. +* sizeof <3>: CULong-accessing. +* sizeof <4>: CULong class-accessing. +* sizeof <5>: CUInt-accessing. +* sizeof <6>: CUInt class-accessing. +* sizeof <7>: CUChar-accessing. +* sizeof <8>: CUChar class-getting info. +* sizeof <9>: CType-accessing. +* sizeof <10>: CSmalltalk-accessing. +* sizeof <11>: CSmalltalk class-accessing. +* sizeof <12>: CShort-accessing. +* sizeof <13>: CShort class-accessing. +* sizeof <14>: CPtr-accessing. +* sizeof <15>: CLong-accessing. +* sizeof <16>: CLong class-accessing. +* sizeof <17>: CInt-accessing. +* sizeof <18>: CInt class-accessing. +* sizeof <19>: CFloat-accessing. +* sizeof <20>: CFloat class-accessing. +* sizeof <21>: CDouble-accessing. +* sizeof <22>: CDouble class-accessing. +* sizeof <23>: CCompound class-subclass creation. +* sizeof <24>: CChar-accessing. +* sizeof <25>: CChar class-accessing. +* sizeof <26>: CArrayCType-accessing. +* sizeof <27>: CArray-accessing. +* sizeof: CAggregate class-accessing. +* skip_ <1>: Stream-positioning. +* skip_ <2>: ReadWriteStream-positioning. +* skip_ <3>: PositionableStream-positioning. +* skip_: FileDescriptor-overriding inherited methods. +* skipSeparators: PositionableStream-positioning. +* skipTo_: Stream-positioning. +* skipToAll_: Stream-positioning. +* smallest: SmallInteger class-getting limits. +* smoothingFactor: ObjectMemory class-builtins. +* smoothingFactor_: ObjectMemory class-builtins. +* snapshot: ObjectMemory class-saving the image. +* snapshot_: ObjectMemory class-builtins. +* soleInstance: Metaclass-accessing. +* someInstance: Behavior-built ins. +* sortBlock: SortedCollection-basic. +* sortBlock_ <1>: SortedCollection-basic. +* sortBlock_ <2>: SortedCollection class-instance creation. +* sortBlock_: SharedQueue class-instance creation. +* sortedByCount: Bag-extracting items. +* sourceCode: MethodInfo-accessing. +* sourceCodeAt_: Behavior-accessing the methodDictionary. +* sourceCodeMap: CompiledCode-testing accesses. +* sourceFile: MethodInfo-accessing. +* sourceMethodAt_: Behavior-accessing the methodDictionary. +* sourcePos: MethodInfo-accessing. +* sourceString: MethodInfo-accessing. +* sp: ContextPart-accessing. +* sp_: ContextPart-accessing. +* space <1>: Stream-character writing. +* space: Character class-constants. +* space_: Stream-character writing. +* spaceGrowRate: ObjectMemory class-builtins. +* spaceGrowRate_: ObjectMemory class-builtins. +* species <1>: WeakArray-conversion. +* species <2>: Symbol-misc. +* species <3>: Stream-basic. +* species <4>: PositionableStream-class type methods. +* species <5>: Object-class type methods. +* species <6>: Interval-basic. +* species: BindingDictionary-testing. +* splitAt_: Stream-accessing-reading. +* sqrt <1>: Number-misc math. +* sqrt: Float-built ins. +* squared <1>: Number-misc math. +* squared: Fraction-optimized cases. +* stackDepth <1>: CompiledMethod-accessing. +* stackDepth <2>: CompiledCode-accessing. +* stackDepth <3>: CompiledBlock-accessing. +* stackDepth: BlockClosure-accessing. +* startsWith_: CharacterArray-comparing. +* statOn_into_: VFS.VFSHandler-C functions. +* stderr: FileStream class-standard streams. +* stdin: FileStream class-standard streams. +* stdout: FileStream class-standard streams. +* store: Object-storing. +* store_ <1>: TextCollector-storing. +* store_: Stream-storing. +* storeNl: Object-storing. +* storeOn_ <1>: VariableBinding-storing. +* storeOn_ <2>: UndefinedObject-storing. +* storeOn_ <3>: TextCollector-storing. +* storeOn_ <4>: SystemDictionary-printing. +* storeOn_ <5>: String-storing. +* storeOn_ <6>: ScaledDecimal-storing. +* storeOn_ <7>: RootNamespace-printing. +* storeOn_ <8>: Rectangle-printing. +* storeOn_ <9>: ProcessorScheduler-storing. +* storeOn_ <10>: Point-storing. +* storeOn_ <11>: Object-storing. +* storeOn_ <12>: Namespace-printing. +* storeOn_ <13>: Metaclass-printing. +* storeOn_ <14>: LookupTable-storing. +* storeOn_ <15>: LookupKey-storing. +* storeOn_ <16>: Interval-storing. +* storeOn_ <17>: Integer-storing. +* storeOn_ <18>: HomedAssociation-storing. +* storeOn_ <19>: HashedCollection-storing. +* storeOn_ <20>: Fraction-printing. +* storeOn_ <21>: Float-storing. +* storeOn_ <22>: Dictionary-storing. +* storeOn_ <23>: DateTime-storing. +* storeOn_ <24>: Date-storing. +* storeOn_ <25>: CType-storing. +* storeOn_ <26>: CScalarCType-storing. +* storeOn_ <27>: CompiledMethod-printing. +* storeOn_ <28>: Collection-storing. +* storeOn_ <29>: Class-printing. +* storeOn_ <30>: CharacterArray-storing. +* storeOn_ <31>: Character-storing. +* storeOn_ <32>: Boolean-storing. +* storeOn_ <33>: Bag-storing. +* storeOn_ <34>: Association-storing. +* storeOn_ <35>: ArrayedCollection-storing. +* storeOn_: AbstractNamespace-printing. +* storeOn_base_: Integer-printing. +* storeString <1>: Object-storing. +* storeString: Integer-storing. +* stream <1>: SystemExceptions.EndOfStream-accessing. +* stream: ObjectDumper-accessing. +* stream_ <1>: SystemExceptions.EndOfStream-accessing. +* stream_: ObjectDumper-accessing. +* streamContents_: SequenceableCollection class-instance creation. +* strictlyPositive <1>: Number-testing. +* strictlyPositive <2>: LargeZeroInteger-numeric testing. +* strictlyPositive <3>: LargePositiveInteger-numeric testing. +* strictlyPositive <4>: LargeNegativeInteger-numeric testing. +* strictlyPositive: Float-testing. +* stringAt_ <1>: Memory class-accessing. +* stringAt_: ByteArray-more advanced accessing. +* stringAt_put_ <1>: Memory class-accessing. +* stringAt_put_: ByteArray-more advanced accessing. +* stringError_: File class-C functions. +* stripExtension: File-file name management. +* stripExtensionFrom_: File class-file name management. +* stripFileName: File-file name management. +* stripFileNameFor_: File class-file name management. +* stripPath: File-file name management. +* stripPathFrom_: File class-file name management. +* stripSourceCode <1>: MethodInfo-accessing. +* stripSourceCode: CompiledMethod class-lean images. +* subclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. +* subclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* subclass_declaration_classVariableNames_poolDictionaries_category_: CCompound class-subclass creation. +* subclass_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. +* subclass_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* subclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. +* subclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. +* subclasses: Behavior-accessing class hierarchy. +* subclassesDo_: Behavior-enumerating. +* subclassInstVarNames: Behavior-accessing instances and variables. +* subclassOf_: Metaclass class-instance creation. +* subclassResponsibility: Object-built ins. +* subspaces: AbstractNamespace-namespace hierarchy. +* subspacesDo_: AbstractNamespace-namespace hierarchy. +* substrings: CharacterArray-string processing. +* subStrings: CharacterArray-string processing. +* subStrings_: CharacterArray-string processing. +* substrings_: CharacterArray-string processing. +* subtractDate_: Date-basic. +* subtractDays_: Date-basic. +* subtractTime_: Time-arithmetic. +* suggestedSelector: SystemExceptions.WrongMessageSent-accessing. +* suggestedSelector_: SystemExceptions.WrongMessageSent-accessing. +* superclass: Behavior-accessing class hierarchy. +* superclass_: Behavior-creating a class hierarchy. +* superspace: AbstractNamespace-namespace hierarchy. +* superspace_: AbstractNamespace-namespace hierarchy. +* survSpaceSize: ObjectMemory-accessing. +* survSpaceUsedBytes: ObjectMemory-accessing. +* suspend: Process-basic. +* suspendedContext: Process-accessing. +* symbol: SymLink-accessing. +* symbol_: SymLink-accessing. +* symbol_nextLink_: SymLink class-instance creation. +* system_: SystemDictionary-C functions. +* systemBackgroundPriority: ProcessorScheduler-priorities. +* systemKernel: Directory class-reading system defaults. +* tab <1>: Stream-character writing. +* tab: Character class-constants. +* tab_: Stream-character writing. +* tag: Signal-accessing. +* tag_: Signal-accessing. +* tan <1>: Number-misc math. +* tan: Float-built ins. +* temporary: Directory class-reading system defaults. +* tenure: Object-built ins. +* tenuredBytesPerScavenge: ObjectMemory-accessing. +* terminate: Process-basic. +* terminateActive: ProcessorScheduler-basic. +* timeBetweenGlobalGCs: ObjectMemory-accessing. +* timeBetweenGrowths: ObjectMemory-accessing. +* timeBetweenScavenges: ObjectMemory-accessing. +* timeSlice: ProcessorScheduler-basic. +* timeSlice_: ProcessorScheduler-basic. +* timesRepeat_: Integer-iterators. +* timesTwoPower_ <1>: FloatQ-built ins. +* timesTwoPower_ <2>: FloatE-built ins. +* timesTwoPower_: FloatD-built ins. +* timeToCollect: ObjectMemory-accessing. +* timeToCompact: ObjectMemory-accessing. +* timeToScavenge: ObjectMemory-accessing. +* timezone: Time class-builtins. +* timeZoneAbbreviation: DateTime-time zones. +* timezoneBias: Time class-builtins. +* timeZoneName: DateTime-time zones. +* timingPriority: ProcessorScheduler-priorities. +* to_: Number-shortcuts and iterators. +* to_by_: Number-shortcuts and iterators. +* to_by_do_: Number-shortcuts and iterators. +* to_do_: Number-shortcuts and iterators. +* today: Date class-instance creation (Blue Book). +* top: Rectangle-accessing. +* top_: Rectangle-accessing. +* topCenter: Rectangle-accessing. +* topLeft: Rectangle-accessing. +* topLeft_: Rectangle-accessing. +* topRight: Rectangle-accessing. +* topRight_: Rectangle-accessing. +* translateBy_: Rectangle-transforming. +* translatedToBeWithin_: Rectangle-rectangle functions. +* transpose: Point-point functions. +* trigger: DelayedAdaptor-accessing. +* trimSeparators: CharacterArray-converting. +* truncate <1>: PositionableStream-truncating. +* truncate <2>: FileStream-basic. +* truncate: FileDescriptor-basic. +* truncated <1>: ScaledDecimal-coercion. +* truncated <2>: Number-truncation and round off. +* truncated <3>: Integer-converting. +* truncated <4>: Fraction-coercing. +* truncated <5>: FloatQ-built ins. +* truncated <6>: FloatE-built ins. +* truncated <7>: FloatD-built ins. +* truncated: Float-coercing. +* truncatedGrid_: Point-point functions. +* truncateTo_ <1>: Point-truncation and round off. +* truncateTo_: Number-truncation and round off. +* type <1>: CString class-instance creation. +* type <2>: CScalar class-instance creation. +* type <3>: CObject-conversion. +* type <4>: CObject class-conversion. +* type <5>: CCompound class-instance creation. +* type <6>: CByte-accessing. +* type: CByte class-conversion. +* type_: CObject-accessing. +* ucharAt_: ByteArray-more advanced accessing. +* ucharAt_put_ <1>: Memory class-accessing. +* ucharAt_put_: ByteArray-more advanced accessing. +* uintAt_: ByteArray-more advanced accessing. +* uintAt_put_ <1>: Memory class-accessing. +* uintAt_put_: ByteArray-more advanced accessing. +* ulongAt_: ByteArray-more advanced accessing. +* ulongAt_put_ <1>: Memory class-accessing. +* ulongAt_put_: ByteArray-more advanced accessing. +* unity <1>: SmallInteger-coercion methods. +* unity <2>: Number-converting. +* unity <3>: LargeInteger-coercion. +* unity <4>: Fraction-coercing. +* unity <5>: FloatQ-coercing. +* unity <6>: FloatE-coercing. +* unity: FloatD-coercing. +* unpreemptedPriority: ProcessorScheduler-priorities. +* unsignedCharAt_ <1>: Memory class-accessing. +* unsignedCharAt_: ByteArray-more advanced accessing. +* unsignedCharAt_put_ <1>: Memory class-accessing. +* unsignedCharAt_put_: ByteArray-more advanced accessing. +* unsignedIntAt_ <1>: Memory class-accessing. +* unsignedIntAt_: ByteArray-more advanced accessing. +* unsignedIntAt_put_ <1>: Memory class-accessing. +* unsignedIntAt_put_: ByteArray-more advanced accessing. +* unsignedLongAt_ <1>: Memory class-accessing. +* unsignedLongAt_: ByteArray-more advanced accessing. +* unsignedLongAt_put_ <1>: Memory class-accessing. +* unsignedLongAt_put_: ByteArray-more advanced accessing. +* unsignedShortAt_ <1>: Memory class-accessing. +* unsignedShortAt_: ByteArray-more advanced accessing. +* unsignedShortAt_put_ <1>: Memory class-accessing. +* unsignedShortAt_put_: ByteArray-more advanced accessing. +* untilMilliseconds_: Delay class-instance creation. +* unwind: ContextPart class-exception handling. +* unwind_: ContextPart class-exception handling. +* update: ObjectMemory-builtins. +* update_ <1>: VFS.VFSHandler class-initializing. +* update_ <2>: VFS.ArchiveMemberHandler-file operations. +* update_ <3>: Time class-initialization. +* update_ <4>: ProcessorScheduler-idle tasks. +* update_ <5>: Object-change and update. +* update_ <6>: Object class-initialization. +* update_ <7>: FileDescriptor class-initialization. +* update_: DLD class-dynamic linking. +* updateMember_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* updateMember_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* upTo_: Stream-accessing-reading. +* upToAll_: Stream-accessing-reading. +* upToEnd: Stream-accessing-reading. +* userBackgroundPriority: ProcessorScheduler-priorities. +* userInterrupt: Object-exception handling. +* userInterruptPriority: ProcessorScheduler-priorities. +* username: NetClients.URL-accessing. +* username_: NetClients.URL-accessing. +* userSchedulingPriority: ProcessorScheduler-priorities. +* ushortAt_: ByteArray-more advanced accessing. +* ushortAt_put_ <1>: Memory class-accessing. +* ushortAt_put_: ByteArray-more advanced accessing. +* utcDateAndTimeNow: Date class-instance creation (Blue Book). +* utcNow: Time class-basic (UTC). +* utcSecondClock: Time class-basic (UTC). +* utcToday: Date class-instance creation (Blue Book). +* validClasses: SystemExceptions.WrongClass-accessing. +* validClasses_: SystemExceptions.WrongClass-accessing. +* validClassesString: SystemExceptions.WrongClass-accessing. +* validSize <1>: Object-debugging. +* validSize: ContextPart-accessing. +* value <1>: ValueHolder-accessing. +* value <2>: ValueAdaptor-accessing. +* value <3>: SystemExceptions.InvalidValue-accessing. +* value <4>: Promise-accessing. +* value <5>: PluggableAdaptor-accessing. +* value <6>: NullValueHolder-accessing. +* value <7>: DirectedMessage-basic. +* value <8>: DelayedAdaptor-accessing. +* value <9>: CString-accessing. +* value <10>: CScalar-accessing. +* value <11>: CPtr-accessing. +* value <12>: Character-built ins. +* value <13>: CByte-accessing. +* value <14>: CBoolean-accessing. +* value <15>: BlockClosure-built ins. +* value: Association-accessing. +* value_ <1>: ValueHolder-accessing. +* value_ <2>: ValueAdaptor-accessing. +* value_ <3>: SystemExceptions.InvalidValue-accessing. +* value_ <4>: Promise-accessing. +* value_ <5>: PluggableAdaptor-accessing. +* value_ <6>: NullValueHolder-accessing. +* value_ <7>: DelayedAdaptor-accessing. +* value_ <8>: CString-accessing. +* value_ <9>: CString class-instance creation. +* value_ <10>: CScalar-accessing. +* value_ <11>: CScalar class-instance creation. +* value_ <12>: CPtr-accessing. +* value_ <13>: Character class-built ins. +* value_ <14>: CByte-accessing. +* value_ <15>: CBoolean-accessing. +* value_ <16>: BlockClosure-built ins. +* value_: Association-accessing. +* value_value_: BlockClosure-built ins. +* value_value_value_: BlockClosure-built ins. +* valueAt_: CharacterArray-built ins. +* valueAt_put_: CharacterArray-built ins. +* values <1>: Dictionary-accessing. +* values: AbstractNamespace-overrides for superspaces. +* valueType <1>: CType-accessing. +* valueType: CScalarCType-accessing. +* valueWithArguments_: BlockClosure-built ins. +* valueWithoutInterrupts: BlockClosure-multiple process. +* valueWithoutInterrupts_: Process-accessing. +* valueWithoutPreemption: BlockClosure-multiple process. +* valueWithUnwind: BlockClosure-unwind protection. +* variableByteSubclass_classInstanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* variableByteSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. +* variableByteSubclass_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* variableByteSubclass_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. +* variableByteSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. +* variableByteSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. +* variableLongSubclass_classInstanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* variableLongSubclass_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* variableSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. +* variableSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_ <1>: UndefinedObject-class creation - alternative. +* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_: Class-instance creation - alternative. +* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. +* variableSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. +* variableWordSubclass_classInstanceVariableNames_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. +* variableWordSubclass_instanceVariableNames_classVariableNames_poolDictionaries_: UndefinedObject-class creation - alternative. +* variableWordSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_ <1>: UndefinedObject-class creation. +* variableWordSubclass_instanceVariableNames_classVariableNames_poolDictionaries_category_: Class-instance creation. +* verbose_: FileStream class-file-in. +* verboseTrace: SystemDictionary-builtins. +* verboseTrace_: SystemDictionary-builtins. +* version: SystemDictionary-special accessing. +* vfsFor_name_subPath_ <1>: VFS.ExternalArchiveFileHandler class-registering. +* vfsFor_name_subPath_: VFS.DecodedFileHandler class-registering. +* wait <1>: Semaphore-builtins. +* wait: Delay-process delay. +* waitAfterSignalling_: Semaphore-builtins. +* waitForException: FileDescriptor-accessing. +* waitingProcesses <1>: Semaphore-accessing. +* waitingProcesses: RecursionLock-accessing. +* whenSignalledIn_do_exitBlock_: Exception class-interoperability with TrappableEvents. +* whichCategoryIncludesSelector_: ClassDescription-organization of messages and classes. +* whichClassIncludesSelector_: Behavior-testing the method dictionary. +* whichSelectorsAccess_: Behavior-testing the method dictionary. +* whichSelectorsAssign_: Behavior-testing the method dictionary. +* whichSelectorsRead_: Behavior-testing the method dictionary. +* whichSelectorsReferTo_: Behavior-testing the method dictionary. +* whichSelectorsReferToByteCode_: Behavior-testing the method dictionary. +* whileCurrentDo_: AbstractNamespace-copying. +* whileFalse: BlockClosure-control structures. +* whileFalse_: BlockClosure-control structures. +* whileTrue: BlockClosure-control structures. +* whileTrue_: BlockClosure-control structures. +* width: Rectangle-accessing. +* width_: Rectangle-accessing. +* with_ <1>: WriteStream class-instance creation. +* with_ <2>: ValueHolder class-creating instances. +* with_ <3>: Symbol class-instance creation. +* with_ <4>: ReadWriteStream class-instance creation. +* with_ <5>: Collection class-instance creation. +* with_: ArrayedCollection class-instance creation. +* with_collect_ <1>: SequenceableCollection-enumerating. +* with_collect_: ArrayedCollection-enumerating the elements of a collection. +* with_do_: SequenceableCollection-enumerating. +* with_from_to_: WriteStream class-instance creation. +* with_with_ <1>: Symbol class-instance creation. +* with_with_ <2>: Collection class-instance creation. +* with_with_: ArrayedCollection class-instance creation. +* with_with_with_ <1>: Symbol class-instance creation. +* with_with_with_ <2>: Collection class-instance creation. +* with_with_with_: ArrayedCollection class-instance creation. +* with_with_with_with_ <1>: Symbol class-instance creation. +* with_with_with_with_ <2>: Collection class-instance creation. +* with_with_with_with_: ArrayedCollection class-instance creation. +* with_with_with_with_with_ <1>: Symbol class-instance creation. +* with_with_with_with_with_ <2>: Collection class-instance creation. +* with_with_with_with_with_: ArrayedCollection class-instance creation. +* withAll_ <1>: Interval class-instance creation. +* withAll_ <2>: Collection class-instance creation. +* withAll_: ArrayedCollection class-instance creation. +* withAllBlocksDo_: CompiledMethod-accessing. +* withAllSubclasses: Behavior-accessing class hierarchy. +* withAllSubclassesDo_: Behavior-enumerating. +* withAllSubspaces: AbstractNamespace-namespace hierarchy. +* withAllSubspacesDo_: AbstractNamespace-namespace hierarchy. +* withAllSuperclasses: Behavior-accessing class hierarchy. +* withAllSuperclassesDo_: Behavior-enumerating. +* withAllSuperspaces <1>: Dictionary-polymorphism hacks. +* withAllSuperspaces: AbstractNamespace-namespace hierarchy. +* withAllSuperspacesDo_: AbstractNamespace-namespace hierarchy. +* withFileDo_: FileSegment-basic. +* withNewMethodClass_: CompiledMethod-accessing. +* withNewMethodClass_selector_: CompiledMethod-accessing. +* withSignOf_: Number-misc math. +* working <1>: VFS.RealFileHandler class-C functions. +* working: Directory class-C functions. +* working_: Directory class-file operations. +* wouldBlock <1>: Semaphore-accessing. +* wouldBlock: RecursionLock-accessing. +* write: FileDescriptor class-instance creation. +* write_: FileDescriptor-low-level access. +* write_from_to_: FileDescriptor-low-level access. +* write_numBytes_: FileDescriptor-low-level access. +* writeStream <1>: SequenceableCollection-enumerating. +* writeStream: File-file operations. +* x: Point-accessing. +* x_: Point-accessing. +* x_y_ <1>: Point-accessing. +* x_y_: Point class-instance creation. +* xor_ <1>: True-basic. +* xor_ <2>: False-basic. +* xor_: Boolean-basic. +* y: Point-accessing. +* y_: Point-accessing. +* year: Date-date computations. +* year_day_hour_minute_second_ <1>: DateTime class-instance creation. +* year_day_hour_minute_second_: Date class-instance creation (ANSI). +* year_day_hour_minute_second_offset_: DateTime class-instance creation. +* year_month_day_hour_minute_second_ <1>: DateTime class-instance creation. +* year_month_day_hour_minute_second_: Date class-instance creation (ANSI). +* year_month_day_hour_minute_second_offset_: DateTime class-instance creation. +* yield <1>: ProcessorScheduler-basic. +* yield: Process-builtins. +* yourself: Object-class type methods. +* zero <1>: SmallInteger-coercion methods. +* zero <2>: ScaledDecimal-constants. +* zero <3>: Number-converting. +* zero <4>: LargeInteger-coercion. +* zero <5>: Fraction-coercing. +* zero <6>: FloatQ-coercing. +* zero <7>: FloatE-coercing. +* zero <8>: FloatD-coercing. +* zero: Duration class-instance creation. +* zeroDivide: Number-error raising. +* | <1>: True-basic. +* | <2>: False-basic. +* |: Boolean-basic. +* ~= <1>: SmallInteger-built ins. +* ~= <2>: ScaledDecimal-comparing. +* ~= <3>: Object-relational operators. +* ~= <4>: LargeInteger-testing. +* ~= <5>: FloatQ-built ins. +* ~= <6>: FloatE-built ins. +* ~=: FloatD-built ins. +* ~~ <1>: SmallInteger-built ins. +* ~~: Object-relational operators. + + +File: gst-base.info, Node: Cross-reference, Prev: Method index, Up: Top + +Selector cross-reference +************************ + +* Menu: -addAll: aCollection - Adds all the elements of 'aCollection' to the receiver, answer - aCollection +* *: Number-retrying. +* + <1>: Symbol-basic. +* +: Number-retrying. +* -: Number-retrying. +* /: Number-retrying. +* = <1>: Stream-accessing-reading. +* =: Number-retrying. +* >>: CompiledMethod-saving and loading. +* add_: SequenceableCollection-copying SequenceableCollections. +* addSubspace_: Namespace class-disabling instance creation. +* addToBeFinalized <1>: FileDescriptor class-instance creation. +* addToBeFinalized <2>: CString class-instance creation. +* addToBeFinalized <3>: CScalar class-instance creation. +* addToBeFinalized <4>: CObject-finalization. +* addToBeFinalized: CCompound class-instance creation. +* AM: DateTime-computations. +* append: FileDescriptor class-instance creation. +* asciiValue: Character-built ins. +* asciiValue_: Character class-built ins. +* asInteger: Character-built ins. +* asyncCallFrom_: CFunctionDescriptor-calling. +* at_ <1>: VariableBinding-saving and loading. +* at_: PluggableAdaptor class-creating instances. +* at_put_ <1>: PluggableAdaptor class-creating instances. +* at_put_ <2>: CString-accessing. +* at_put_ <3>: CScalar-accessing. +* at_put_: BindingDictionary-accessing. +* basicNew: Behavior-built ins. +* basicNew_: Behavior-built ins. +* basicPrint: Object-built ins. +* become_: Object-built ins. +* binaryRepresentationObject <1>: PluggableProxy class-accessing. +* binaryRepresentationObject: Object-saving and loading. +* binaryRepresentationVersion: VersionableObjectProxy class-saving and restoring. +* blockAt_: CompiledBlock-saving and loading. +* bz2: VFS.DecodedFileHandler class-registering. +* callFrom_into_: CFunctionDescriptor-calling. +* changed: Object-change and update. +* changed_: Object-change and update. +* class: Object-class type methods. +* close: FileDescriptor class-instance creation. +* cObject: CObject-conversion. +* codePoint: Character-built ins. +* codePoint_: Character class-built ins. +* collect_: BindingDictionary-copying. +* collection_map_: MappedCollection class-instance creation. +* continue_ <1>: MethodContext-accessing. +* continue_ <2>: ContextPart-accessing. +* continue_: BlockContext-accessing. +* convertFromVersion_withFixedVariables_instanceVariables_for_: VersionableObjectProxy class-saving and restoring. +* copy: RunArray-copying. +* copyEmpty_ <1>: WeakArray-conversion. +* copyEmpty_: Object-class type methods. +* create: FileDescriptor class-instance creation. +* day: Date-date computations. +* debuggingPriority: Behavior-pluggable behavior (not yet implemented). +* directoryFor_: PackageLoader class-accessing. +* disableInterrupts: ProcessorScheduler-built ins. +* display_: Stream-printing. +* do_ <1>: SortedCollection-enumerating. +* do_ <2>: RunArray-adding. +* do_ <3>: Collection-enumeration. +* do_: Collection-converting. +* dumpTo_ <1>: DumperProxy class-instance creation. +* dumpTo_: AlternativeObjectProxy class-instance creation. +* enableInterrupts: ProcessorScheduler-built ins. +* ensure_ <1>: Process-basic. +* ensure_ <2>: MethodContext-accessing. +* ensure_ <3>: ContextPart-built ins. +* ensure_ <4>: ContextPart-accessing. +* ensure_ <5>: BlockContext-accessing. +* ensure_: BlockClosure-unwind protection. +* error_ <1>: BlockClosure-exception handling. +* error_ <2>: Behavior-method dictionary. +* error_: Behavior-evaluating. +* fileSystems: VFS.VFSHandler class-initializing. +* finalize: Object-finalization. +* first <1>: LargeArraySubpart-accessing. +* first: LargeArraySubpart class-instance creation. +* firstIndex <1>: LargeArraySubpart-accessing. +* firstIndex: LargeArraySubpart class-instance creation. +* free: CObject-finalization. +* from_to_keysAndValuesDo_: SequenceableCollection-enumerating. +* generateMakefileOnto_: FileStream class-file-in. +* gz: VFS.DecodedFileHandler class-registering. +* halt: Halt-description. +* hash: Symbol class-symbol table. +* identityHash: AbstractNamespace-basic & copying. +* ifCurtailed_ <1>: Process-basic. +* ifCurtailed_: ContextPart-built ins. +* ifTrue_ifFalse_: Symbol-basic. +* includes_: IdentitySet-testing. +* includesClassNamed_: AbstractNamespace-namespace hierarchy. +* includesGlobalNamed_: AbstractNamespace-namespace hierarchy. +* includesKey_: AbstractNamespace-namespace hierarchy. +* inspect: CCompound-instance creation. +* integerPart: Number-truncation and round off. +* keysAndValuesDo_: SequenceableCollection-enumerating. +* last <1>: LargeArraySubpart-accessing. +* last: LargeArraySubpart class-instance creation. +* line: FileStream-filing in. +* loadFrom_: DumperProxy-saving and restoring. +* lowerPriority: Process-basic. +* mark_: Object-built ins. +* match_: Directory-enumerating. +* mourn: Object-built ins. +* new <1>: Behavior-instance creation. +* new: AbstractNamespace class-instance creation. +* new_: Behavior-instance creation. +* newProcess: ContextPart-accessing. +* next <1>: SharedQueue-accessing. +* next: PositionableStream-positioning. +* nonVersionedInstSize: VersionableObjectProxy class-saving and restoring. +* nop: VFS.DecodedFileHandler class-registering. +* not: Symbol-basic. +* notify: Semaphore-builtins. +* notifyAll: Semaphore-builtins. +* on_: AlternativeObjectProxy class-instance creation. +* on_do_ <1>: Signal-exception handling. +* on_do_: BlockClosure-unwind protection. +* on_index_: PluggableAdaptor class-creating instances. +* outer: Signal-exception handling. +* pass: Signal-exception handling. +* PM: DateTime-computations. +* postLoad <1>: SingletonProxy-saving and restoring. +* postLoad <2>: PluggableProxy-saving and restoring. +* postLoad <3>: Object-saving and loading. +* postLoad: HashedCollection-saving and loading. +* postStore: PluggableProxy class-accessing. +* preStore: PluggableProxy class-accessing. +* primDefineExternFunc_: DLD class-dynamic linking. +* print: Object-printing. +* printHierarchy: Behavior-printing hierarchy. +* printNl: Object-printing. +* printOn_ <1>: Symbol-storing. +* printOn_ <2>: Symbol-basic. +* printOn_ <3>: Object-printing. +* printOn_ <4>: Object-built ins. +* printOn_ <5>: CharacterArray-printing. +* printOn_: Character-printing. +* printString <1>: Symbol-storing. +* printString <2>: ScaledDecimal-printing. +* printString <3>: Object-printing. +* printString: CharacterArray-printing. +* printStringRadix_: Integer-printing. +* raisePriority: Process-basic. +* read: FileDescriptor class-instance creation. +* readWrite: FileDescriptor class-instance creation. +* reconstructOriginalObject <1>: SingletonProxy-saving and restoring. +* reconstructOriginalObject: PluggableProxy-saving and restoring. +* removeFirst_: LargeArraySubpart-modifying. +* removeToBeFinalized: FileDescriptor class-instance creation. +* return_: BlockClosure-exception handling. +* secondClock: Time class-basic (UTC). +* select_: PositionableStream-class type methods. +* self: CFunctionDescriptor-calling. +* selfSmalltalk: CFunctionDescriptor-calling. +* signal: Signal-exception handling. +* signal_atMilliseconds_: ProcessorScheduler-timed invocation. +* singleStepWaitingOn_: Process-basic. +* size_stCtime_stMtime_stAtime_isDirectory_ <1>: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol. +* size_stCtime_stMtime_stAtime_isDirectory_: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol. +* skipSeparators: PositionableStream-positioning. +* species: Object-class type methods. +* strings: VFS.DecodedFileHandler class-registering. +* subclass_declaration_: CCompound class-subclass creation. +* subclassResponsibility: Number-testing. +* tar: VFS.DecodedFileHandler class-registering. +* tgz: VFS.DecodedFileHandler class-registering. +* timeZoneAbbreviation: DateTime-time zones. +* trigger: DelayedAdaptor-accessing. +* ubz2: VFS.DecodedFileHandler class-registering. +* ugz: VFS.DecodedFileHandler class-registering. +* upTo_: PositionableStream-class type methods. +* uZ: VFS.DecodedFileHandler class-registering. +* value <1>: PluggableAdaptor class-creating instances. +* value: Character-built ins. +* value_ <1>: PluggableAdaptor class-creating instances. +* value_: Character class-built ins. +* valueWithoutPreemption: ProcessorScheduler-priorities. +* valueWithUnwind: BlockClosure-unwind protection. +* Variable: BindingDictionary-accessing. +* vfsFor_name_subPath_: VFS.VFSHandler class-initializing. +* wait: RecursionLock-accessing. +* write: FileDescriptor class-instance creation. +* Z: VFS.DecodedFileHandler class-registering. +* ~=: Number-retrying. diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-4 smalltalk-2.1.7/doc/gst-base.info-4 --- smalltalk-2.1.6/doc/gst-base.info-4 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-4 1970-01-01 01:00:00.000000000 +0100 @@ -1,1846 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: Collection-converting, Next: Collection-copying Collections, Prev: Collection-adding, Up: Collection - -Collection: converting ----------------------- - -asArray - Answer an Array containing all the elements in the receiver - -asBag - Answer a Bag containing all the elements in the receiver - -asByteArray - Answer a ByteArray containing all the elements in the receiver - -asOrderedCollection - Answer an OrderedCollection containing all the elements in the - receiver - - order - -asRunArray - Answer the receiver converted to a RunArray. If the receiver is not - ordered the order of the elements in the RunArray might not be the - #do: order. - -asSet - Answer a Set containing all the elements in the receiver with no - duplicates - -asSortedCollection - Answer a SortedCollection containing all the elements in the - receiver with the default sort block - [ :a :b | a <= b ] - -asSortedCollection: aBlock - Answer a SortedCollection whose elements are the elements of the - receiver, sorted according to the sort block aBlock - - - -File: gst-base.info, Node: Collection-copying Collections, Next: Collection-enumeration, Prev: Collection-converting, Up: Collection - -Collection: copying Collections -------------------------------- - -copyReplacing: targetObject withObject: newObject - Copy replacing each object which is = to targetObject with - newObject - -copyWith: newElement - Answer a copy of the receiver to which newElement is added - -copyWithout: oldElement - Answer a copy of the receiver to which all occurrences of - oldElement are removed - - - -File: gst-base.info, Node: Collection-enumeration, Next: Collection-finalization, Prev: Collection-copying Collections, Up: Collection - -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 - before attempting to iterate on it; its presence reduces the - number of overrides needed by collections who try to amortize - their execution times. The default implementation does nothing, - so it is optimized out by the virtual machine and so it loses very - little on the performance side. Note that descendants of - Collection have to call it explicitly since #do: is abstract in - Collection. - -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. - -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. - -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: Collection-finalization, Next: Collection-printing, Prev: Collection-enumeration, Up: Collection - -Collection: finalization ------------------------- - -mourn: anObject - Private - anObject has been found to have a weak key, remove it - and possibly finalize the key. - - - -File: gst-base.info, Node: Collection-printing, Next: Collection-removing, Prev: Collection-finalization, Up: Collection - -Collection: printing --------------------- - -inspect - Print all the instance variables and objects in the receiver on the - Transcript - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-base.info, Node: Collection-removing, Next: Collection-storing, Prev: Collection-printing, Up: Collection - -Collection: removing --------------------- - -empty - Remove everything from the receiver. - -remove: oldObject - Remove oldObject from the receiver. If absent, fail, else answer - oldObject. - -remove: oldObject ifAbsent: anExceptionBlock - Remove oldObject from the receiver. If absent, evaluate - anExceptionBlock and answer the result, else answer oldObject. - -removeAll: aCollection - Remove each object in aCollection, answer aCollection, fail if some - of them is absent. Warning: this could leave the collection in a - semi-updated state. - -removeAll: aCollection ifAbsent: aBlock - Remove each object in aCollection, answer aCollection; if some - element is absent, pass it to aBlock. - - - -File: gst-base.info, Node: Collection-storing, Next: Collection-testing collections, Prev: Collection-removing, Up: Collection - -Collection: storing -------------------- - -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: Collection-testing collections, Prev: Collection-storing, Up: Collection - -Collection: testing collections -------------------------------- - -capacity - Answer how many elements the receiver can hold before having to - grow. - -identityIncludes: anObject - Answer whether we include the anObject object - -includes: anObject - Answer whether we include anObject - -isEmpty - Answer whether we are (still) empty - -notEmpty - Answer whether we include at least one object - -occurrencesOf: anObject - Answer how many occurrences of anObject we include - -size - Answer how many objects we include - - - -File: gst-base.info, Node: CompiledBlock, Next: CompiledCode, Prev: Collection, Up: Base classes - -CompiledBlock -============= - -Defined in namespace Smalltalk -Superclass: CompiledCode -Category: Language-Implementation - I represent a block that has been compiled. - -* Menu: - -* CompiledBlock class-instance creation:: (class) -* CompiledBlock-accessing:: (instance) -* CompiledBlock-basic:: (instance) -* CompiledBlock-printing:: (instance) -* CompiledBlock-saving and loading:: (instance) - - -File: gst-base.info, Node: CompiledBlock class-instance creation, Next: CompiledBlock-accessing, Up: CompiledBlock - -CompiledBlock class: instance creation --------------------------------------- - -newMethod: numBytecodes header: anInteger method: outerMethod - Answer a new CompiledMethod with room for the given bytes and the - given header - -numArgs: args numTemps: temps bytecodes: bytecodes depth: depth literals: literalArray - Answer an (almost) full fledged CompiledBlock. To make it - complete, you must either set the new object's `method' variable, - or put it into a BlockClosure and put the BlockClosure into a - CompiledMethod's literals. The clean-ness of the block is - automatically computed. - - - -File: gst-base.info, Node: CompiledBlock-accessing, Next: CompiledBlock-basic, Prev: CompiledBlock class-instance creation, Up: CompiledBlock - -CompiledBlock: accessing ------------------------- - -flags - Answer the `cleanness' of the block. 0 = clean; 1 = access to - receiver variables and/or self; 2-30 = access to variables that - are 1-29 contexts away; 31 = return from method or push thisContext - -method - Answer the CompiledMethod in which the receiver lies - -methodClass - Answer the class in which the receiver is installed. - -methodClass: methodClass - Set the receiver's class instance variable - -numArgs - Answer the number of arguments passed to the receiver - -numLiterals - Answer the number of literals for the receiver - -numTemps - Answer the number of temporary variables used by the receiver - -selector - Answer the selector through which the method is called - -selector: aSymbol - Set the selector through which the method is called - -stackDepth - Answer the number of stack slots needed for the receiver - - - -File: gst-base.info, Node: CompiledBlock-basic, Next: CompiledBlock-printing, Prev: CompiledBlock-accessing, Up: CompiledBlock - -CompiledBlock: basic --------------------- - -= aMethod - Answer whether the receiver and aMethod are equal - -methodCategory - Answer the method category - -methodCategory: aCategory - Set the method category to the given string - -methodSourceCode - Answer the method source code (a FileSegment or String or nil) - -methodSourceFile - Answer the file where the method source code is stored - -methodSourcePos - Answer the location where the method source code is stored in the - methodSourceFile - -methodSourceString - Answer the method source code as a string - - - -File: gst-base.info, Node: CompiledBlock-printing, Next: CompiledBlock-saving and loading, Prev: CompiledBlock-basic, Up: CompiledBlock - -CompiledBlock: printing ------------------------ - -printOn: aStream - Print the receiver's class and selector on aStream - - - -File: gst-base.info, Node: CompiledBlock-saving and loading, Prev: CompiledBlock-printing, Up: CompiledBlock - -CompiledBlock: saving and loading ---------------------------------- - - to - -binaryRepresentationObject - This method is implemented to allow for a PluggableProxy to be used - with CompiledBlocks. Answer a DirectedMessage which sends - #blockAt: to the CompiledMethod containing the receiver. - - - -File: gst-base.info, Node: CompiledCode, Next: CompiledMethod, Prev: CompiledBlock, Up: Base classes - -CompiledCode -============ - -Defined in namespace Smalltalk -Superclass: ArrayedCollection -Category: Language-Implementation - I represent code that has been compiled. I am an abstract - superclass for blocks and methods - -* Menu: - -* CompiledCode class-cache flushing:: (class) -* CompiledCode class-instance creation:: (class) -* CompiledCode-accessing:: (instance) -* CompiledCode-basic:: (instance) -* CompiledCode-copying:: (instance) -* CompiledCode-debugging:: (instance) -* CompiledCode-decoding bytecodes:: (instance) -* CompiledCode-testing accesses:: (instance) -* CompiledCode-translation:: (instance) - - -File: gst-base.info, Node: CompiledCode class-cache flushing, Next: CompiledCode class-instance creation, Up: CompiledCode - -CompiledCode class: cache flushing ----------------------------------- - -flushTranslatorCache - Answer any kind of cache mantained by a just-in-time code - translator in the virtual machine (if any). Do nothing for now. - - - -File: gst-base.info, Node: CompiledCode class-instance creation, Next: CompiledCode-accessing, Prev: CompiledCode class-cache flushing, Up: CompiledCode - -CompiledCode class: instance creation -------------------------------------- - -newMethod: numBytecodes header: anInteger literals: literals - Answer a new CompiledMethod with room for the given bytes and the - given header - -newMethod: numBytecodes header: anInteger numLiterals: numLiterals - Answer a new CompiledMethod with room for the given bytes and the - given header - - - -File: gst-base.info, Node: CompiledCode-accessing, Next: CompiledCode-basic, Prev: CompiledCode class-instance creation, Up: CompiledCode - -CompiledCode: accessing ------------------------ - -at: anIndex put: aBytecode - Store aBytecode as the anIndex-th bytecode - -blockAt: anIndex - Answer the CompiledBlock attached to the anIndex-th literal, - assuming that the literal is a BlockClosure. - -bytecodeAt: anIndex - Answer the anIndex-th bytecode - -bytecodeAt: anIndex put: aBytecode - Store aBytecode as the anIndex-th bytecode - -flags - Private - Answer the optimization flags for the receiver - -literalAt: anIndex - Answer the anIndex-th literal - -literalAt: anInteger put: aValue - Store aValue as the anIndex-th literal - -literals - Answer `literals'. - -methodClass - Answer the class in which the receiver is installed. - -methodClass: methodClass - Set the receiver's class instance variable - -numArgs - Answer the number of arguments for the receiver - -numLiterals - Answer the number of literals for the receiver - -numTemps - Answer the number of temporaries for the receiver - -primitive - Answer the primitive called by the receiver - -selector - Answer the selector through which the method is called - -selector: aSymbol - Set the selector through which the method is called - -stackDepth - Answer the number of stack slots needed for the receiver - - - -File: gst-base.info, Node: CompiledCode-basic, Next: CompiledCode-copying, Prev: CompiledCode-accessing, Up: CompiledCode - -CompiledCode: basic -------------------- - -= aMethod - Answer whether the receiver and aMethod are equal - -hash - Answer an hash value for the receiver - -methodCategory - Answer the method category - -methodCategory: aCategory - Set the method category to the given string - -methodSourceCode - Answer the method source code (a FileSegment or String or nil) - -methodSourceFile - Answer the file where the method source code is stored - -methodSourcePos - Answer the location where the method source code is stored in the - methodSourceFile - -methodSourceString - Answer the method source code as a string - - - -File: gst-base.info, Node: CompiledCode-copying, Next: CompiledCode-debugging, Prev: CompiledCode-basic, Up: CompiledCode - -CompiledCode: copying ---------------------- - -deepCopy - Answer a deep copy of the receiver - - - -File: gst-base.info, Node: CompiledCode-debugging, Next: CompiledCode-decoding bytecodes, Prev: CompiledCode-copying, Up: CompiledCode - -CompiledCode: debugging ------------------------ - -inspect - Print the contents of the receiver in a verbose way. - - - -File: gst-base.info, Node: CompiledCode-decoding bytecodes, Next: CompiledCode-testing accesses, Prev: CompiledCode-debugging, Up: CompiledCode - -CompiledCode: decoding bytecodes --------------------------------- - -dispatchTo: anObject with: param - Disassemble the bytecodes and tell anObject about them in the form - of message sends. param is given as an argument to every message - send. - - - -File: gst-base.info, Node: CompiledCode-testing accesses, Next: CompiledCode-translation, Prev: CompiledCode-decoding bytecodes, Up: CompiledCode - -CompiledCode: testing accesses ------------------------------- - -accesses: instVarIndex - Answer whether the receiver accesses the instance variable with - the given index - -assigns: instVarIndex - Answer whether the receiver writes to the instance variable with - the given index - -containsLiteral: anObject - Answer if the receiver contains a literal which is equal to - anObject. - -hasBytecode: byte between: firstIndex and: lastIndex - Answer whether the receiver includes the `byte' bytecode in any of - the indices between firstIndex and lastIndex. - -jumpDestinationAt: anIndex - Answer where the jump at bytecode index `anIndex' lands - -reads: instVarIndex - Answer whether the receiver reads the instance variable with the - given index - -refersTo: anObject - Answer whether the receiver refers to the given object - -sourceCodeMap - Answer an array which maps bytecode indices to source code line - numbers. 0 values represent invalid instruction pointer indices. - - - -File: gst-base.info, Node: CompiledCode-translation, Prev: CompiledCode-testing accesses, Up: CompiledCode - -CompiledCode: translation -------------------------- - -discardTranslation - Flush the just-in-time translated code for the receiver (if any). - - - -File: gst-base.info, Node: CompiledMethod, Next: ContextPart, Prev: CompiledCode, Up: Base classes - -CompiledMethod -============== - -Defined in namespace Smalltalk -Superclass: CompiledCode -Category: Language-Implementation - I represent methods that have been compiled. I can recompile - methods from their source code, I can invoke Emacs to edit the - source code for one of my instances, and I know how to access - components of my instances. - -* Menu: - -* CompiledMethod class-instance creation:: (class) -* CompiledMethod class-lean images:: (class) -* CompiledMethod-accessing:: (instance) -* CompiledMethod-basic:: (instance) -* CompiledMethod-printing:: (instance) -* CompiledMethod-saving and loading:: (instance) -* CompiledMethod-testing:: (instance) - - -File: gst-base.info, Node: CompiledMethod class-instance creation, Next: CompiledMethod class-lean images, Up: CompiledMethod - -CompiledMethod class: instance creation ---------------------------------------- - -literals: lits numArgs: numArg numTemps: numTemp - primitive: primIndex bytecodes: bytecodes depth: depth Answer a - full fledged CompiledMethod. Construct the method header from the - parameters, and set the literals and bytecodes to the provided - ones. Also, the bytecodes are optimized and any embedded - CompiledBlocks modified to refer to these literals and to the - newly created CompiledMethod. - - - -File: gst-base.info, Node: CompiledMethod class-lean images, Next: CompiledMethod-accessing, Prev: CompiledMethod class-instance creation, Up: CompiledMethod - -CompiledMethod class: lean images ---------------------------------- - -stripSourceCode - Remove all the references to method source code from the system - - - -File: gst-base.info, Node: CompiledMethod-accessing, Next: CompiledMethod-basic, Prev: CompiledMethod class-lean images, Up: CompiledMethod - -CompiledMethod: accessing -------------------------- - -allBlocksDo: aBlock - Evaluate aBlock, passing to it all the CompiledBlocks it holds - -allLiterals - Answer the literals referred to by the receiver and all the blocks - in it - -flags - Private - Answer the optimization flags for the receiver - -methodClass - Answer the class in which the receiver is installed. - -methodClass: methodClass - Set the receiver's class instance variable - -numArgs - Answer the number of arguments for the receiver - -numTemps - Answer the number of temporaries for the receiver - -primitive - Answer the primitive called by the receiver - -selector - Answer the selector through which the method is called - -selector: aSymbol - Set the selector through which the method is called - -stackDepth - Answer the number of stack slots needed for the receiver - -withAllBlocksDo: aBlock - Evaluate aBlock, passing the receiver and all the CompiledBlocks it - holds - -withNewMethodClass: class - Answer either the receiver or a copy of it, with the method class - set to class - -withNewMethodClass: class selector: selector - Answer either the receiver or a copy of it, with the method class - set to class - - - -File: gst-base.info, Node: CompiledMethod-basic, Next: CompiledMethod-printing, Prev: CompiledMethod-accessing, Up: CompiledMethod - -CompiledMethod: basic ---------------------- - -= aMethod - Answer whether the receiver and aMethod are equal - -hash - Answer an hash value for the receiver - -methodCategory - Answer the method category - -methodCategory: aCategory - Set the method category to the given string - -methodSourceCode - Answer the method source code (a FileSegment or String or nil) - -methodSourceFile - Answer the file where the method source code is stored - -methodSourcePos - Answer the location where the method source code is stored in the - methodSourceFile - -methodSourceString - Answer the method source code as a string - - - -File: gst-base.info, Node: CompiledMethod-printing, Next: CompiledMethod-saving and loading, Prev: CompiledMethod-basic, Up: CompiledMethod - -CompiledMethod: printing ------------------------- - -printOn: aStream - Print the receiver's class and selector on aStream - -storeOn: aStream - Print code to create the receiver on aStream - - - -File: gst-base.info, Node: CompiledMethod-saving and loading, Next: CompiledMethod-testing, Prev: CompiledMethod-printing, Up: CompiledMethod - -CompiledMethod: saving and loading ----------------------------------- - - to - -binaryRepresentationObject - This method is implemented to allow for a PluggableProxy to be used - with CompiledMethods. Answer a DirectedMessage which sends #>> to - the class object containing the receiver. - - - -File: gst-base.info, Node: CompiledMethod-testing, Prev: CompiledMethod-saving and loading, Up: CompiledMethod - -CompiledMethod: testing ------------------------ - -accesses: instVarIndex - Answer whether the receiver or the blocks it contains accesses the - instance variable with the given index - -assigns: instVarIndex - Answer whether the receiver or the blocks it contains writes to - the instance variable with the given index - -reads: instVarIndex - Answer whether the receiver or the blocks it contains reads to the - instance variable with the given index - - - -File: gst-base.info, Node: ContextPart, Next: CoreException, Prev: CompiledMethod, Up: Base classes - -ContextPart -=========== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - My instances represent executing Smalltalk code, which represent - the local environment of executable code. They contain a stack and - also provide some methods that can be used in inspection or - debugging. - -* Menu: - -* ContextPart class-exception handling:: (class) -* ContextPart-accessing:: (instance) -* ContextPart-built ins:: (instance) -* ContextPart-copying:: (instance) -* ContextPart-debugging:: (instance) -* ContextPart-enumerating:: (instance) -* ContextPart-exception handling:: (instance) -* ContextPart-printing:: (instance) - - -File: gst-base.info, Node: ContextPart class-exception handling, Next: ContextPart-accessing, Up: ContextPart - -ContextPart class: exception handling -------------------------------------- - -backtrace - Print a backtrace from the caller to the bottom of the stack on the - Transcript - -backtraceOn: aStream - 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. - - - -File: gst-base.info, Node: ContextPart-accessing, Next: ContextPart-built ins, Prev: ContextPart class-exception handling, Up: ContextPart - -ContextPart: accessing ----------------------- - -client - Answer the client of this context, that is, the object that sent - the message that created this context. Fail if the receiver has no - parent - -environment - To create a valid execution environment for the interpreter even - before it starts, GST creates a fake context whose selector is nil - and which can be used as a marker for the current execution - environment. This method answers that context. For processes, it - answers the process block itself - -home - Answer the MethodContext to which the receiver refers - -initialIP - Answer the value of the instruction pointer when execution starts - in the current context - -ip - Answer the current instruction pointer into the receiver - -ip: newIP - Set the instruction pointer for the receiver - -isBlock - Answer whether the receiver is a block context - -isDisabled - Answers whether the context is skipped when doing a return. - Contexts are marked as disabled whenever a non-local return is - done (either by returning from the enclosing method of a block, or - with the #continue: method of ContextPart) and there are unwind - contexts such as those created by #ensure:. All non-unwind - contexts are then marked as disabled. - -isEnvironment - To create a valid execution environment for the interpreter even - before it starts, GST creates a fake context whose selector is nil - and which can be used as a marker for the current execution - environment. Answer whether the receiver is that kind of context. - -isProcess - Answer whether the receiver represents a process context, i.e. a - context created by BlockClosure>>#newProcess. Such a context can - be recognized because it has no parent but its flags are different - from those of the contexts created by the VM's - prepareExecutionEnvironment function. - -isUnwind - Answers whether the context must continue execution even after a - non-local return (a return from the enclosing method of a block, or - a call to the #continue: method of ContextPart). Such contexts are - created by #ensure:. - -method - Return the CompiledMethod being executed - -methodClass - Return the class in which the CompiledMethod being executed is - defined - -numArgs - Answer the number of arguments passed to the receiver - -numTemps - Answer the number of temporaries used by the receiver - -parentContext - Answer the context that called the receiver - -parentContext: aContext - Set the context to which the receiver will return - -receiver - Return the receiver (self) for the method being executed - -selector - Return the selector for the method being executed - -size - Answer the number of valid fields for the receiver. Any read - access from (self size + 1) to (self basicSize) has undefined - results - even crashing - -sp - Answer the current stack pointer into the receiver - -sp: newSP - Set the stack pointer for the receiver. - -validSize - Answer how many elements in the receiver should be inspected - - - -File: gst-base.info, Node: ContextPart-built ins, Next: ContextPart-copying, Prev: ContextPart-accessing, Up: ContextPart - -ContextPart: built ins ----------------------- - -continue: anObject - Resume execution from the receiver, faking that the context on top - of it in the execution chain has returned anObject. The receiver - must belong to the same process as the executing context, - otherwise the results are not predictable. All #ensure: (and - possibly #ifCurtailed:) blocks between the currently executing - context and the receiver are evaluated (which is not what would - happen if you directly bashed at the parent context of - thisContext). - - - -File: gst-base.info, Node: ContextPart-copying, Next: ContextPart-debugging, Prev: ContextPart-built ins, Up: ContextPart - -ContextPart: copying --------------------- - -deepCopy - Answer a shallow copy of the receiver - duplicating e.g. the - method and the instance variables that have been pushed is almost - surely not the right thing. - - - -File: gst-base.info, Node: ContextPart-debugging, Next: ContextPart-enumerating, Prev: ContextPart-copying, Up: ContextPart - -ContextPart: debugging ----------------------- - -debuggerClass - Answer which debugger should be used to debug the current context - chain. The class with the highest debugging priority is picked - among those mentioned in the chain. - -isInternalExceptionHandlingContext - Answer whether the receiver is a context that should be hidden to - the user when presenting a backtrace - - - -File: gst-base.info, Node: ContextPart-enumerating, Next: ContextPart-exception handling, Prev: ContextPart-debugging, Up: ContextPart - -ContextPart: enumerating ------------------------- - -scanBacktraceFor: selectors do: aBlock - Scan the backtrace for contexts whose selector is among those - listed in selectors; if one is found, invoke aBlock passing the - selector. - - - -File: gst-base.info, Node: ContextPart-exception handling, Next: ContextPart-printing, Prev: ContextPart-enumerating, Up: ContextPart - -ContextPart: exception handling -------------------------------- - -mark - Add the receiver as a possible unwind point - - - -File: gst-base.info, Node: ContextPart-printing, Prev: ContextPart-exception handling, Up: ContextPart - -ContextPart: printing ---------------------- - -backtrace - Print a backtrace from the receiver to the bottom of the stack on - the Transcript. - -backtraceOn: aStream - Print a backtrace from the caller to the bottom of the stack on - aStream. - - - -File: gst-base.info, Node: CoreException, Next: CPtr, Prev: ContextPart, Up: Base classes - -CoreException -============= - -Defined in namespace Smalltalk -Superclass: TrappableEvent -Category: Language-Exceptions - My instances describe a single event that can be trapped using - #on:do:..., contain whether such execution can be resumed after - such an event, a description of what happened, and a block that is - used as an handler by default. Using my methods you can raise - exceptions and create new exceptions. Exceptions are organized in - a kind of hierarchy (different from the class hierarchy): - intercepting an exception will intercept all its children too. - - CoreExceptions are different from ANSI Exceptions in that the - signaled exception is not an instance of the CoreException, - instead it belongs to a different class, Signal. ANSI Exceptions - inherit from Signal but hold on to a CoreException via a - class-instance variable. - -* Menu: - -* CoreException class-instance creation:: (class) -* CoreException-accessing:: (instance) -* CoreException-basic:: (instance) -* CoreException-enumerating:: (instance) -* CoreException-exception handling:: (instance) -* CoreException-instance creation:: (instance) - - -File: gst-base.info, Node: CoreException class-instance creation, Next: CoreException-accessing, Up: CoreException - -CoreException class: instance creation --------------------------------------- - -new - Create a new exception whose parent is ExAll - - - -File: gst-base.info, Node: CoreException-accessing, Next: CoreException-basic, Prev: CoreException class-instance creation, Up: CoreException - -CoreException: accessing ------------------------- - -defaultHandler - Answer the default handler for the receiver - -defaultHandler: aBlock - Set the default handler of the receiver to aBlock. A Signal object - will be passed to aBlock - -description - Answer a description of the receiver - -description: aString - Set the description of the receiver to aString - -isResumable - Answer true if the receiver is resumable - -isResumable: aBoolean - Set the resumable flag of the receiver to aBoolean - -parent - Answer the parent of the receiver - -signalClass - Answer the subclass of Signal to be passed to handler blocks that - handle the receiver - -signalClass: aClass - Set which subclass of Signal is to be passed to handler blocks - that handle the receiver - - - -File: gst-base.info, Node: CoreException-basic, Next: CoreException-enumerating, Prev: CoreException-accessing, Up: CoreException - -CoreException: basic --------------------- - -postCopy - Modify the receiver so that the description is deep copied - - - -File: gst-base.info, Node: CoreException-enumerating, Next: CoreException-exception handling, Prev: CoreException-basic, Up: CoreException - -CoreException: enumerating --------------------------- - -allExceptionsDo: aBlock - Private - Evaluate aBlock for every exception in the receiver. As - it contains just one exception, evaluate it just once, passing the - receiver - -goodness: exception - Answer how good the receiver is at handling the given exception. A - negative value indicates that the receiver is not able to handle - the exception. - -handles: exceptionOrSignal - Answer whether the receiver handles `exceptionOrSignal'. - - - -File: gst-base.info, Node: CoreException-exception handling, Next: CoreException-instance creation, Prev: CoreException-enumerating, Up: CoreException - -CoreException: exception handling ---------------------------------- - -signal - Raise the exception described by the receiver, passing no - parameters - -signalWith: arg - Raise the exception described by the receiver, passing the - parameter arg - -signalWith: arg with: arg2 - Raise the exception described by the receiver, passing the - parameters arg and arg2 - -signalWithArguments: args - Raise the exception described by the receiver, passing the - parameters in args - - - -File: gst-base.info, Node: CoreException-instance creation, Prev: CoreException-exception handling, Up: CoreException - -CoreException: instance creation --------------------------------- - -newChild - Answer a child exception of the receiver. Its properties are set - to those of the receiver - - - -File: gst-base.info, Node: CPtr, Next: CPtrCType, Prev: CoreException, Up: Base classes - -CPtr -==== - -Defined in namespace Smalltalk -Superclass: CAggregate -Category: Language-C interface - -* Menu: - -* CPtr-accessing:: (instance) - - -File: gst-base.info, Node: CPtr-accessing, Up: CPtr - -CPtr: accessing ---------------- - -alignof - Answer the receiver's required aligment - -sizeof - Answer the receiver's size - -value - Answer the address of the location pointed to by the receiver. - -value: anObject - Set the address of the location pointed to by the receiver to - anObject, which can be either an Integer or a CObject. if - anObject is an Integer, it is interpreted as a 32-bit or 64-bit - address. If it is a CObject, its address is stored. - - - -File: gst-base.info, Node: CPtrCType, Next: CScalar, Prev: CPtr, Up: Base classes - -CPtrCType -========= - -Defined in namespace Smalltalk -Superclass: CType -Category: Language-C interface - -* Menu: - -* CPtrCType class-instance creation:: (class) -* CPtrCType-accessing:: (instance) - - -File: gst-base.info, Node: CPtrCType class-instance creation, Next: CPtrCType-accessing, Up: CPtrCType - -CPtrCType class: instance creation ----------------------------------- - -elementType: aCType - Answer a new instance of CPtrCType that maps pointers to the given - CType - - - -File: gst-base.info, Node: CPtrCType-accessing, Prev: CPtrCType class-instance creation, Up: CPtrCType - -CPtrCType: accessing --------------------- - -elementType - Answer the type of the elements in the receiver's instances - -new: size - Allocate space for `size' objects like those that the receiver - points to, and with the type (class) identified by the receiver. - It is the caller's responsibility to free the memory allocated for - it. - - - -File: gst-base.info, Node: CScalar, Next: CScalarCType, Prev: CPtrCType, Up: Base classes - -CScalar -======= - -Defined in namespace Smalltalk -Superclass: CObject -Category: Language-C interface - -* Menu: - -* CScalar class-instance creation:: (class) -* CScalar-accessing:: (instance) - - -File: gst-base.info, Node: CScalar class-instance creation, Next: CScalar-accessing, Up: CScalar - -CScalar class: instance creation --------------------------------- - -type - Answer a CType for the receiver - for example, CByteType if the - receiver is CByte. - -value: anObject - Answer a newly allocated CObject containing the passed value, - anObject. Remember to call #addToBeFinalized if you want the - CObject to be automatically freed - - - -File: gst-base.info, Node: CScalar-accessing, Prev: CScalar class-instance creation, Up: CScalar - -CScalar: accessing ------------------- - -cObjStoredType - Private - Provide a conversion from a CObject to a Smalltalk object - to be stored by #at:put: - -value - Answer the value the receiver is pointing to. The exact returned - value depends on the receiver's class - -value: aValue - Set the receiver to point to the value, aValue. The exact meaning - of aValue depends on the receiver's class - - - -File: gst-base.info, Node: CScalarCType, Next: CShort, Prev: CScalar, Up: Base classes - -CScalarCType -============ - -Defined in namespace Smalltalk -Superclass: CType -Category: Language-C interface - -* Menu: - -* CScalarCType-accessing:: (instance) -* CScalarCType-storing:: (instance) - - -File: gst-base.info, Node: CScalarCType-accessing, Next: CScalarCType-storing, Up: CScalarCType - -CScalarCType: accessing ------------------------ - -valueType - valueType is used as a means to communicate to the interpreter the - underlying type of the data. For scalars, it is supplied by the - CObject subclass. - - - -File: gst-base.info, Node: CScalarCType-storing, Prev: CScalarCType-accessing, Up: CScalarCType - -CScalarCType: storing ---------------------- - -storeOn: aStream - Store Smalltalk code that compiles to the receiver - - - -File: gst-base.info, Node: CShort, Next: CSmalltalk, Prev: CScalarCType, Up: Base classes - -CShort -====== - -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface - -* Menu: - -* CShort class-accessing:: (class) -* CShort-accessing:: (instance) - - -File: gst-base.info, Node: CShort class-accessing, Next: CShort-accessing, Up: CShort - -CShort class: accessing ------------------------ - -alignof - Answer the receiver's instances required aligment - -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type - -sizeof - Answer the receiver's instances size - - - -File: gst-base.info, Node: CShort-accessing, Prev: CShort class-accessing, Up: CShort - -CShort: accessing ------------------ - -alignof - Answer the receiver's required aligment - -scalarIndex - Private - Answer an index referring to the receiver's scalar type - -sizeof - Answer the receiver's size - - - -File: gst-base.info, Node: CSmalltalk, Next: CString, Prev: CShort, Up: Base classes - -CSmalltalk -========== - -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface - -* Menu: - -* CSmalltalk class-accessing:: (class) -* CSmalltalk-accessing:: (instance) - - -File: gst-base.info, Node: CSmalltalk class-accessing, Next: CSmalltalk-accessing, Up: CSmalltalk - -CSmalltalk class: accessing ---------------------------- - -alignof - Answer the receiver's instances required aligment - -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type - -sizeof - Answer the receiver's instances size - - - -File: gst-base.info, Node: CSmalltalk-accessing, Prev: CSmalltalk class-accessing, Up: CSmalltalk - -CSmalltalk: accessing ---------------------- - -alignof - Answer the receiver's required aligment - -scalarIndex - Private - Answer an index referring to the receiver's scalar type - -sizeof - Answer the receiver's size - - - -File: gst-base.info, Node: CString, Next: CStringCType, Prev: CSmalltalk, Up: Base classes - -CString -======= - -Defined in namespace Smalltalk -Superclass: CPtr -Category: Language-C interface - Technically, CString is really a pointer to type char. However, - it's so darn useful as a distinct datatype, and it is a separate - datatype in Smalltalk, so we allow developers to express their - semantics more precisely by using a more descriptive type. - - In general, I behave like a cross between an array of characters - and a pointer to a character. I provide the protocol for both - data types. My #value method returns a Smalltalk String, as you - would expect for a scalar datatype. - - -* Menu: - -* CString class-instance creation:: (class) -* CString-accessing:: (instance) - - -File: gst-base.info, Node: CString class-instance creation, Next: CString-accessing, Up: CString - -CString class: instance creation --------------------------------- - -type - Answer a CType for the receiver - for example, CByteType if the - receiver is CByte. - -value: anObject - Answer a newly allocated CObject containing the passed value, - anObject. Remember to call #addToBeFinalized if you want the - CObject to be automatically freed - - - -File: gst-base.info, Node: CString-accessing, Prev: CString class-instance creation, Up: CString - -CString: accessing ------------------- - -cObjStoredType - Private - Provide a conversion from a CObject to a Smalltalk object - to be stored by #at:put: - -value - Answer the value the receiver is pointing to. The exact returned - value depends on the receiver's class - -value: aValue - Set the receiver to point to the value, aValue. The exact meaning - of aValue depends on the receiver's class - - - -File: gst-base.info, Node: CStringCType, Next: CStruct, Prev: CString, Up: Base classes - -CStringCType -============ - -Defined in namespace Smalltalk -Superclass: CScalarCType -Category: Language-C interface - -* Menu: - -* CStringCType-accessing:: (instance) - - -File: gst-base.info, Node: CStringCType-accessing, Up: CStringCType - -CStringCType: accessing ------------------------ - -elementType - Answer the type of the elements in the receiver's instances - - - -File: gst-base.info, Node: CStruct, Next: CType, Prev: CStringCType, Up: Base classes - -CStruct -======= - -Defined in namespace Smalltalk -Superclass: CCompound -Category: Language-C interface - -* Menu: - -* CStruct class-subclass creation:: (class) - - -File: gst-base.info, Node: CStruct class-subclass creation, Up: CStruct - -CStruct class: subclass creation --------------------------------- - -compileDeclaration: array - Compile methods that implement the declaration in array. - - - -File: gst-base.info, Node: CType, Next: CUChar, Prev: CStruct, Up: Base classes - -CType -===== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-C interface - I am not part of the standard Smalltalk kernel class hierarchy. I - contain type information used by subclasses of CObject, which - represents external C data items. - - My only instance variable, cObjectType, is used to hold onto the - CObject subclass that gets created for a given CType. Used - primarily in the C part of the interpreter because internally it - cannot execute methods to get values, so it has a simple way to - access instance variable which holds the desired subclass. - - My subclasses have instances which represent the actual data - types; for the scalar types, there is only one instance created of - each, but for the aggregate types, there is at least one instance - per base type and/or number of elements. - -* Menu: - -* CType class-C instance creation:: (class) -* CType-accessing:: (instance) -* CType-C instance creation:: (instance) -* CType-storing:: (instance) - - -File: gst-base.info, Node: CType class-C instance creation, Next: CType-accessing, Up: CType - -CType class: C instance creation --------------------------------- - -cObjectType: aCObjectSubclass - Create a new CType for the given subclass of CObject - - - -File: gst-base.info, Node: CType-accessing, Next: CType-C instance creation, Prev: CType class-C instance creation, Up: CType - -CType: accessing ----------------- - -alignof - Answer the size of the receiver's instances - -arrayType: size - Answer a CArrayCType which represents an array with the given size - of CObjects whose type is in turn represented by the receiver - -cObjectType - Answer the CObject subclass whose instance is created when new is - sent to the receiver - -ptrType - Answer a CPtrCType which represents a pointer to CObjects whose - type is in turn represented by the receiver - -sizeof - Answer the size of the receiver's instances - -valueType - valueType is used as a means to communicate to the interpreter the - underlying type of the data. For anything but scalars, it's just - 'self' - - - -File: gst-base.info, Node: CType-C instance creation, Next: CType-storing, Prev: CType-accessing, Up: CType - -CType: C instance creation --------------------------- - -address: cObjOrInt - Create a new CObject with the type (class) identified by the - receiver, pointing to the given address (identified by an Integer - or CObject). - -new - Allocate a new CObject with the type (class) identified by the - receiver. It is the caller's responsibility to free the memory - allocated for it. - - - -File: gst-base.info, Node: CType-storing, Prev: CType-C instance creation, Up: CType - -CType: storing --------------- - -storeOn: aStream - Store Smalltalk code that compiles to the receiver - - - -File: gst-base.info, Node: CUChar, Next: CUInt, Prev: CType, Up: Base classes - -CUChar -====== - -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface - -* Menu: - -* CUChar class-getting info:: (class) -* CUChar-accessing:: (instance) - - -File: gst-base.info, Node: CUChar class-getting info, Next: CUChar-accessing, Up: CUChar - -CUChar class: getting info --------------------------- - -alignof - Answer the receiver's instances required aligment - -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type - -sizeof - Answer the receiver's instances size - - - -File: gst-base.info, Node: CUChar-accessing, Prev: CUChar class-getting info, Up: CUChar - -CUChar: accessing ------------------ - -alignof - Answer the receiver's required aligment - -scalarIndex - Private - Answer an index referring to the receiver's scalar type - -sizeof - Answer the receiver's size - - - -File: gst-base.info, Node: CUInt, Next: CULong, Prev: CUChar, Up: Base classes - -CUInt -===== - -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface - -* Menu: - -* CUInt class-accessing:: (class) -* CUInt-accessing:: (instance) - - -File: gst-base.info, Node: CUInt class-accessing, Next: CUInt-accessing, Up: CUInt - -CUInt class: accessing ----------------------- - -alignof - Answer the receiver's instances required aligment - -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type - -sizeof - Answer the receiver's instances size - - - -File: gst-base.info, Node: CUInt-accessing, Prev: CUInt class-accessing, Up: CUInt - -CUInt: accessing ----------------- - -alignof - Answer the receiver's required aligment - -scalarIndex - Private - Answer an index referring to the receiver's scalar type - -sizeof - Answer the receiver's size - - - -File: gst-base.info, Node: CULong, Next: CUnion, Prev: CUInt, Up: Base classes - -CULong -====== - -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface - -* Menu: - -* CULong class-accessing:: (class) -* CULong-accessing:: (instance) - - -File: gst-base.info, Node: CULong class-accessing, Next: CULong-accessing, Up: CULong - -CULong class: accessing ------------------------ - -alignof - Answer the receiver's instances required aligment - -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type - -sizeof - Answer the receiver's instances size - - - -File: gst-base.info, Node: CULong-accessing, Prev: CULong class-accessing, Up: CULong - -CULong: accessing ------------------ - -alignof - Answer the receiver's required aligment - -scalarIndex - Private - Answer an index referring to the receiver's scalar type - -sizeof - Answer the receiver's size - - - -File: gst-base.info, Node: CUnion, Next: CUShort, Prev: CULong, Up: Base classes - -CUnion -====== - -Defined in namespace Smalltalk -Superclass: CCompound -Category: Language-C interface - -* Menu: - -* CUnion class-subclass creation:: (class) - - -File: gst-base.info, Node: CUnion class-subclass creation, Up: CUnion - -CUnion class: subclass creation -------------------------------- - -compileDeclaration: array - Compile methods that implement the declaration in array. - - - -File: gst-base.info, Node: CUShort, Next: Date, Prev: CUnion, Up: Base classes - -CUShort -======= - -Defined in namespace Smalltalk -Superclass: CScalar -Category: Language-C interface - -* Menu: - -* CUShort class-accessing:: (class) -* CUShort-accessing:: (instance) - - -File: gst-base.info, Node: CUShort class-accessing, Next: CUShort-accessing, Up: CUShort - -CUShort class: accessing ------------------------- - -alignof - Answer the receiver's instances required aligment - -scalarIndex - Private - Answer an index referring to the receiver's instances - scalar type - -sizeof - Answer the receiver's instances size - - - -File: gst-base.info, Node: CUShort-accessing, Prev: CUShort class-accessing, Up: CUShort - -CUShort: accessing ------------------- - -alignof - Answer the receiver's required aligment - -scalarIndex - Private - Answer an index referring to the receiver's scalar type - -sizeof - Answer the receiver's size - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-5 smalltalk-2.1.7/doc/gst-base.info-5 --- smalltalk-2.1.6/doc/gst-base.info-5 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-5 1970-01-01 01:00:00.000000000 +0100 @@ -1,1769 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: Date, Next: DateTime, Prev: CUShort, Up: Base classes - -Date -==== - -Defined in namespace Smalltalk -Superclass: Magnitude -Category: Language-Data types - My instances represent dates. My base date is defined to be Jan - 1, 1901. I provide methods for instance creation (including via - "symbolic" dates, such as "Date newDay: 14 month: #Feb year: 1990". - - PLEASE BE WARNED - use this class only for dates after 1582 AD; - that's the beginning of the epoch. Dates before 1582 will not be - correctly printed. In addition, since ten days were lost from - October 5 through October 15, operations between a Gregorian date - (after 15-Oct-1582) and a Julian date (before 5-Oct-1582) will - give incorrect results; or, 4-Oct-1582 + 2 days will yield - 6-Oct-1582 (a non-existent day!), not 16-Oct-1582. - - In fact, if you pass a year < 1582 to a method like - #newDay:month:year: it will assume that it is a two-digit year - (e.g. 90=1990, 1000=2900). The only way to create Julian calendar - dates is with the #fromDays: instance creation method. - -* Menu: - -* Date class-basic:: (class) -* Date class-instance creation (ANSI):: (class) -* Date class-instance creation (Blue Book):: (class) -* Date-basic:: (instance) -* Date-compatibility (non-ANSI):: (instance) -* Date-date computations:: (instance) -* Date-printing:: (instance) -* Date-storing:: (instance) -* Date-testing:: (instance) - - -File: gst-base.info, Node: Date class-basic, Next: Date class-instance creation (ANSI), Up: Date - -Date class: basic ------------------ - -abbreviationOfDay: dayIndex - Answer the abbreviated name of the day of week corresponding to - the given index - -dayOfWeek: dayName - Answer the index of the day of week corresponding to the given name - -daysInMonth: monthName forYear: yearInteger - Answer the number of days in the given (named) month for the given - year - -daysInYear: i - Answer the number of days in the given year - -indexOfMonth: monthName - Answer the index of the month corresponding to the given name - -initDayNameDict - Initialize the DayNameDict to the names of the days - -initialize - Initialize the receiver - -initMonthNameDict - Initialize the MonthNameDict to the names of the months - -nameOfDay: dayIndex - Answer the name of the day of week corresponding to the given index - -nameOfMonth: monthIndex - Answer the name of the month corresponding to the given index - -shortNameOfMonth: monthIndex - Answer the name of the month corresponding to the given index - - - -File: gst-base.info, Node: Date class-instance creation (ANSI), Next: Date class-instance creation (Blue Book), Prev: Date class-basic, Up: Date - -Date class: instance creation (ANSI) ------------------------------------- - -year: y day: d hour: h minute: min second: s - Answer a Date denoting the d-th day of the given year - -year: y month: m day: d hour: h minute: min second: s - Answer a Date denoting the d-th day of the given (as a number) - month and year - - - -File: gst-base.info, Node: Date class-instance creation (Blue Book), Next: Date-basic, Prev: Date class-instance creation (ANSI), Up: Date - -Date class: instance creation (Blue Book) ------------------------------------------ - -dateAndTimeNow - Answer an array containing the current date and time - -fromDays: dayCount - Answer a Date denoting dayCount days past 1/1/1901 - -fromJulian: jd - Answer a Date denoting the jd-th day in the astronomical Julian - calendar. - -fromSeconds: time - Answer a Date denoting the date time seconds past Jan 1st, 1901 - -newDay: day month: monthName year: yearInteger - Answer a Date denoting the dayCount day of the given (named) month - and year - -newDay: day monthIndex: monthIndex year: yearInteger - Answer a Date denoting the dayCount day of the given (as a number) - month and year - -newDay: dayCount year: yearInteger - Answer a Date denoting the dayCount day of the yearInteger year - -readFrom: aStream - Parse an instance of the receiver from aStream - -today - Answer a Date denoting the current date in local time - -utcDateAndTimeNow - Answer an array containing the current date and time in Coordinated - Universal Time (UTC) - -utcToday - Answer a Date denoting the current date in Coordinated Universal - Time (UTC) - - - -File: gst-base.info, Node: Date-basic, Next: Date-compatibility (non-ANSI), Prev: Date class-instance creation (Blue Book), Up: Date - -Date: basic ------------ - -addDays: dayCount - Answer a new Date pointing dayCount past the receiver - -subtractDate: aDate - Answer the number of days between aDate and the receiver (negative - if the receiver is before aDate) - -subtractDays: dayCount - Answer a new Date pointing dayCount before the receiver - - - -File: gst-base.info, Node: Date-compatibility (non-ANSI), Next: Date-date computations, Prev: Date-basic, Up: Date - -Date: compatibility (non-ANSI) ------------------------------- - -day - Answer the day represented by the receiver - -dayName - Answer the day of week of the receiver as a Symbol - -shortMonthName - Answer the abbreviated name of the month represented by the - receiver - - - -File: gst-base.info, Node: Date-date computations, Next: Date-printing, Prev: Date-compatibility (non-ANSI), Up: Date - -Date: date computations ------------------------ - -asSeconds - Answer the date as the number of seconds from 1/1/1901. - -dayOfMonth - Answer the day represented by the receiver (same as #day) - -dayOfWeek - Answer the day of week of the receiver. 1 = Monday, 7 = Sunday - -dayOfWeekAbbreviation - Answer the day of week of the receiver as a Symbol - -dayOfWeekName - Answer the day of week of the receiver as a Symbol - -dayOfYear - Answer the days passed since 31/12 of last year; e.g. New Year's - Day is 1 - -daysFromBaseDay - Answer the days passed since 1/1/1901 - -daysInMonth - Answer the days in the month represented by the receiver - -daysInYear - Answer the days in the year represented by the receiver - -daysLeftInMonth - Answer the days to the end of the month represented by the receiver - -daysLeftInYear - Answer the days to the end of the year represented by the receiver - -firstDayOfMonth - Answer a Date representing the first day of the month represented - by the receiver - -isLeapYear - Answer whether the receiver refers to a date in a leap year. - -lastDayOfMonth - Answer a Date representing the last day of the month represented - by the receiver - -month - Answer the month represented by the receiver - -monthAbbreviation - Answer the abbreviated name of the month represented by the - receiver - -monthName - Answer the name of the month represented by the receiver - -year - Answer the year represented by the receiver - - - -File: gst-base.info, Node: Date-printing, Next: Date-storing, Prev: Date-date computations, Up: Date - -Date: printing --------------- - -printOn: aStream - Print a representation for the receiver on aStream - - - -File: gst-base.info, Node: Date-storing, Next: Date-testing, Prev: Date-printing, Up: Date - -Date: storing -------------- - -storeOn: aStream - Store on aStream Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: Date-testing, Prev: Date-storing, Up: Date - -Date: testing -------------- - -< aDate - Answer whether the receiver indicates a date preceding aDate - -= aDate - Answer whether the receiver indicates the same date as aDate - -hash - Answer an hash value for the receievr - - - -File: gst-base.info, Node: DateTime, Next: Delay, Prev: Date, Up: Base classes - -DateTime -======== - -Defined in namespace Smalltalk -Superclass: Date -Category: Language-Data types - My instances represent timestamps. - -* Menu: - -* DateTime class-information:: (class) -* DateTime class-instance creation:: (class) -* DateTime class-instance creation (non-ANSI):: (class) -* DateTime-basic:: (instance) -* DateTime-computations:: (instance) -* DateTime-printing:: (instance) -* DateTime-splitting in dates & times:: (instance) -* DateTime-storing:: (instance) -* DateTime-testing:: (instance) -* DateTime-time zones:: (instance) - - -File: gst-base.info, Node: DateTime class-information, Next: DateTime class-instance creation, Up: DateTime - -DateTime class: information ---------------------------- - -clockPrecision - Answer `ClockPrecision'. - -initialize - Initialize the receiver's class variables - - - -File: gst-base.info, Node: DateTime class-instance creation, Next: DateTime class-instance creation (non-ANSI), Prev: DateTime class-information, Up: DateTime - -DateTime class: instance creation ---------------------------------- - -now - Answer an instance of the receiver referring to the current date - and time. - -readFrom: aStream - Parse an instance of the receiver from aStream - -year: y day: d hour: h minute: min second: s - Answer a DateTime denoting the d-th day of the given year, and - setting the time part to the given hour, minute, and second - -year: y day: d hour: h minute: min second: s offset: ofs - Answer a DateTime denoting the d-th day of the given year. Set - the offset field to ofs (a Duration), and the time part to the - given hour, minute, and second - -year: y month: m day: d hour: h minute: min second: s - Answer a DateTime denoting the d-th day of the given (as a number) - month and year, setting the time part to the given hour, minute, - and second - -year: y month: m day: d hour: h minute: min second: s offset: ofs - Answer a DateTime denoting the d-th day of the given (as a number) - month and year. Set the offset field to ofs (a Duration), and the - the time part to the given hour, minute, and second - - - -File: gst-base.info, Node: DateTime class-instance creation (non-ANSI), Next: DateTime-basic, Prev: DateTime class-instance creation, Up: DateTime - -DateTime class: instance creation (non-ANSI) --------------------------------------------- - -fromDays: days seconds: secs offset: ofs - Answer a DateTime denoting the d-th day of the given (as a number) - month and year. Set the offset field to ofs (a Duration), and the - the time part to the given hour, minute, and second - - - -File: gst-base.info, Node: DateTime-basic, Next: DateTime-computations, Prev: DateTime class-instance creation (non-ANSI), Up: DateTime - -DateTime: basic ---------------- - -+ aDuration - Answer a new Date pointing dayCount past the receiver - -- aDateTimeOrDuration - Answer a new Date pointing dayCount before the receiver - - - -File: gst-base.info, Node: DateTime-computations, Next: DateTime-printing, Prev: DateTime-basic, Up: DateTime - -DateTime: computations ----------------------- - -asSeconds - Answer the date as the number of seconds from 1/1/1901. - -dayOfWeek - Answer the day of week of the receiver. Unlike Dates, DateAndTimes - have 1 = Sunday, 7 = Saturday - -hour - Answer the hour in a 24-hour clock - -hour12 - Answer the hour in a 12-hour clock - -hour24 - Answer the hour in a 24-hour clock - -meridianAbbreviation - Answer either #AM (for anti-meridian) or #PM (for post-meridian) - -minute - Answer the minute - -second - Answer the month represented by the receiver - - - -File: gst-base.info, Node: DateTime-printing, Next: DateTime-splitting in dates & times, Prev: DateTime-computations, Up: DateTime - -DateTime: printing ------------------- - -printOn: aStream - Print a representation for the receiver on aStream - - - -File: gst-base.info, Node: DateTime-splitting in dates & times, Next: DateTime-storing, Prev: DateTime-printing, Up: DateTime - -DateTime: splitting in dates & times ------------------------------------- - -asDate - Answer a Date referring to the same day as the receiver - -asTime - Answer a Time referring to the same time (from midnight) as the - receiver - -at: anIndex - Since in the past timestamps were referred to as Arrays containing - a Date and a Time (in this order), this method provides access to - DateTime objects like if they were two-element Arrays. - - - -File: gst-base.info, Node: DateTime-storing, Next: DateTime-testing, Prev: DateTime-splitting in dates & times, Up: DateTime - -DateTime: storing ------------------ - -storeOn: aStream - Store on aStream Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: DateTime-testing, Next: DateTime-time zones, Prev: DateTime-storing, Up: DateTime - -DateTime: testing ------------------ - -< aDateTime - Answer whether the receiver indicates a date preceding aDate - -= aDateTime - Answer whether the receiver indicates the same date as aDate - -hash - Answer an hash value for the receievr - - - -File: gst-base.info, Node: DateTime-time zones, Prev: DateTime-testing, Up: DateTime - -DateTime: time zones --------------------- - -asLocal - Answer the receiver, since DateTime objects store themselves in - Local time - -asUTC - Convert the receiver to UTC time, and answer a new DateTime object. - -offset - Answer the receiver's offset from UTC to local time (e.g. +3600 - seconds for Central Europe Time, -3600*6 seconds for Eastern - Standard Time). The offset is expressed as a Duration - -offset: anOffset - Answer a copy of the receiver with the offset from UTC to local - time changed to anOffset (a Duration). - -timeZoneAbbreviation - Answer an abbreviated indication of the receiver's offset, - expressed as `shhmm', where `hh' is the number of hours and `mm' - is the number of minutes between UTC and local time, and `s' can - be `+' for the Eastern hemisphere and `-' for the Western - hemisphere. - -timeZoneName - Answer the time zone name for the receiver (currently, it is - simply `GMT +xxxx', where `xxxx' is the receiver's - #timeZoneAbbreviation). - - - -File: gst-base.info, Node: Delay, Next: DelayedAdaptor, Prev: DateTime, Up: Base classes - -Delay -===== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Processes - I am the ultimate agent for frustration in the world. I cause - things to wait (typically much more than is appropriate, but it is - those losing operating systems' fault). When a process sends one - of my instances a wait message, that process goes to sleep for the - interval specified when the instance was created. - -* Menu: - -* Delay class-general inquiries:: (class) -* Delay class-initialization:: (class) -* Delay class-instance creation:: (class) -* Delay-accessing:: (instance) -* Delay-comparing:: (instance) -* Delay-process delay:: (instance) - - -File: gst-base.info, Node: Delay class-general inquiries, Next: Delay class-initialization, Up: Delay - -Delay class: general inquiries ------------------------------- - -millisecondClockValue - Private - Answer the number of milliseconds since midnight - - - -File: gst-base.info, Node: Delay class-initialization, Next: Delay class-instance creation, Prev: Delay class-general inquiries, Up: Delay - -Delay class: initialization ---------------------------- - -initialize - Private - Initialize the receiver and the associated process - - - -File: gst-base.info, Node: Delay class-instance creation, Next: Delay-accessing, Prev: Delay class-initialization, Up: Delay - -Delay class: instance creation ------------------------------- - -forMilliseconds: millisecondCount - Answer a Delay waiting for millisecondCount milliseconds - -forSeconds: secondCount - Answer a Delay waiting for secondCount seconds - -untilMilliseconds: millisecondCount - Answer a Delay waiting for millisecondCount milliseconds after - midnight - - - -File: gst-base.info, Node: Delay-accessing, Next: Delay-comparing, Prev: Delay class-instance creation, Up: Delay - -Delay: accessing ----------------- - -resumptionTime - Answer the time when a process waiting on a Delay will resume - - - -File: gst-base.info, Node: Delay-comparing, Next: Delay-process delay, Prev: Delay-accessing, Up: Delay - -Delay: comparing ----------------- - -= aDelay - Answer whether the receiver and aDelay denote the same delay - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: Delay-process delay, Prev: Delay-comparing, Up: Delay - -Delay: process delay --------------------- - -wait - Wait until the amount of time represented by the instance of Delay - elapses - - - -File: gst-base.info, Node: DelayedAdaptor, Next: Dictionary, Prev: Delay, Up: Base classes - -DelayedAdaptor -============== - -Defined in namespace Smalltalk -Superclass: PluggableAdaptor -Category: Language-Data types - I can be used where many expensive updates must be performed. My - in- stances buffer the last value that was set, and only actually - set the value when the #trigger message is sent. Apart from this, - I'm equi- valent to PluggableAdaptor. - -* Menu: - -* DelayedAdaptor-accessing:: (instance) - - -File: gst-base.info, Node: DelayedAdaptor-accessing, Up: DelayedAdaptor - -DelayedAdaptor: accessing -------------------------- - -trigger - Really set the value of the receiver. - -value - Get the value of the receiver. - -value: anObject - Set the value of the receiver - actually, the value is cached and - is not set until the #trigger method is sent. - - - -File: gst-base.info, Node: Dictionary, Next: DirectedMessage, Prev: DelayedAdaptor, Up: Base classes - -Dictionary -========== - -Defined in namespace Smalltalk -Superclass: HashedCollection -Category: Collections-Keyed - I implement a dictionary, which is an object that is indexed by - unique objects (typcially instances of Symbol), and associates - another object with that index. I use the equality operator = to - determine equality of indices. - -* Menu: - -* Dictionary class-instance creation:: (class) -* Dictionary-accessing:: (instance) -* Dictionary-awful ST-80 compatibility hacks:: (instance) -* Dictionary-dictionary enumerating:: (instance) -* Dictionary-dictionary removing:: (instance) -* Dictionary-dictionary testing:: (instance) -* Dictionary-polymorphism hacks:: (instance) -* Dictionary-printing:: (instance) -* Dictionary-rehashing:: (instance) -* Dictionary-storing:: (instance) -* Dictionary-testing:: (instance) - - -File: gst-base.info, Node: Dictionary class-instance creation, Next: Dictionary-accessing, Up: Dictionary - -Dictionary class: instance creation ------------------------------------ - -new - Create a new dictionary with a default size - - - -File: gst-base.info, Node: Dictionary-accessing, Next: Dictionary-awful ST-80 compatibility hacks, Prev: Dictionary class-instance creation, Up: Dictionary - -Dictionary: accessing ---------------------- - -add: newObject - Add the newObject association to the receiver - -associationAt: key - Answer the key/value Association for the given key. Fail if the key - is not found - -associationAt: key ifAbsent: aBlock - Answer the key/value Association for the given key. Evaluate aBlock - (answering the result) if the key is not found - -at: key - Answer the value associated to the given key. Fail if the key is - not found - -at: key ifAbsent: aBlock - Answer the value associated to the given key, or the result of - evaluating aBlock if the key is not found - -at: aKey ifAbsentPut: aBlock - Answer the value associated to the given key. If the key is not - found, evaluate aBlock and associate the result to aKey before - returning. - -at: aKey ifPresent: aBlock - If aKey is absent, answer nil. Else, evaluate aBlock passing the - associated value and answer the result of the invocation - -at: key put: value - Store value as associated to the given key - -keyAtValue: value - Answer the key associated to the given value, or nil if the value - is not found - -keyAtValue: value ifAbsent: exceptionBlock - Answer the key associated to the given value. Evaluate - exceptionBlock (answering the result) if the value is not found. - IMPORTANT: == is used to compare values - -keys - Answer a kind of Set containing the keys of the receiver - -values - Answer an Array containing the values of the receiver - - - -File: gst-base.info, Node: Dictionary-awful ST-80 compatibility hacks, Next: Dictionary-dictionary enumerating, Prev: Dictionary-accessing, Up: Dictionary - -Dictionary: awful ST-80 compatibility hacks -------------------------------------------- - -findKeyIndex: key - Tries to see if key exists as a the key of an indexed variable. As - soon as nil or an association with the correct key is found, the - index of that slot is answered - - - -File: gst-base.info, Node: Dictionary-dictionary enumerating, Next: Dictionary-dictionary removing, Prev: Dictionary-awful ST-80 compatibility hacks, Up: Dictionary - -Dictionary: dictionary enumerating ----------------------------------- - -associationsDo: aBlock - Pass each association in the dictionary to aBlock - -collect: aBlock - Answer a new dictionary where the keys are the same and the values - are obtained by passing each value to aBlock and collecting the - return values - -do: aBlock - Pass each value in the dictionary to aBlock - -keysAndValuesDo: aBlock - Pass each key/value pair in the dictionary as two distinct - parameters to aBlock - -keysDo: aBlock - Pass each key in the dictionary to aBlock - -reject: aBlock - Answer a new dictionary containing the key/value pairs for which - aBlock returns false. aBlock only receives the value part of the - pairs. - -select: aBlock - Answer a new dictionary containing the key/value pairs for which - aBlock returns true. aBlock only receives the value part of the - pairs. - - - -File: gst-base.info, Node: Dictionary-dictionary removing, Next: Dictionary-dictionary testing, Prev: Dictionary-dictionary enumerating, Up: Dictionary - -Dictionary: dictionary removing -------------------------------- - -remove: anAssociation - Remove anAssociation's key from the dictionary - -remove: anAssociation ifAbsent: aBlock - Remove anAssociation's key from the dictionary - -removeAllKeys: keys - Remove all the keys in keys, without raising any errors - -removeAllKeys: keys ifAbsent: aBlock - Remove all the keys in keys, passing the missing keys as parameters - to aBlock as they're encountered - -removeKey: key - Remove the passed key from the dictionary, fail if it is not found - -removeKey: key ifAbsent: aBlock - Remove the passed key from the dictionary, answer the result of - evaluating aBlock if it is not found - - - -File: gst-base.info, Node: Dictionary-dictionary testing, Next: Dictionary-polymorphism hacks, Prev: Dictionary-dictionary removing, Up: Dictionary - -Dictionary: dictionary testing ------------------------------- - -includes: anObject - Answer whether the receiver contains anObject as one of its values - -includesAssociation: anAssociation - Answer whether the receiver contains the key which is - anAssociation's key and its value is anAssociation's value - -includesKey: key - Answer whether the receiver contains the given key - -occurrencesOf: aValue - Answer whether the number of occurrences of aValue as one of the - receiver's values - - - -File: gst-base.info, Node: Dictionary-polymorphism hacks, Next: Dictionary-printing, Prev: Dictionary-dictionary testing, Up: Dictionary - -Dictionary: polymorphism hacks ------------------------------- - -withAllSuperspaces - This method is needed by the compiler - - - -File: gst-base.info, Node: Dictionary-printing, Next: Dictionary-rehashing, Prev: Dictionary-polymorphism hacks, Up: Dictionary - -Dictionary: printing --------------------- - -inspect - Print all the instance variables and objects in the receiver on the - Transcript - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-base.info, Node: Dictionary-rehashing, Next: Dictionary-storing, Prev: Dictionary-printing, Up: Dictionary - -Dictionary: rehashing ---------------------- - -rehash - Rehash the receiver - - - -File: gst-base.info, Node: Dictionary-storing, Next: Dictionary-testing, Prev: Dictionary-rehashing, Up: Dictionary - -Dictionary: storing -------------------- - -storeOn: aStream - Print Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: Dictionary-testing, Prev: Dictionary-storing, Up: Dictionary - -Dictionary: testing -------------------- - -= aDictionary - Answer whether the receiver and aDictionary are equal - -hash - Answer the hash value for the receiver - - - -File: gst-base.info, Node: DirectedMessage, Next: Directory, Prev: Dictionary, Up: Base classes - -DirectedMessage -=============== - -Defined in namespace Smalltalk -Superclass: Message -Category: Language-Implementation - I represent a message send: I contain the receiver, selector and - arguments for a message. - -* Menu: - -* DirectedMessage class-creating instances:: (class) -* DirectedMessage-accessing:: (instance) -* DirectedMessage-basic:: (instance) -* DirectedMessage-multiple process:: (instance) -* DirectedMessage-saving and loading:: (instance) - - -File: gst-base.info, Node: DirectedMessage class-creating instances, Next: DirectedMessage-accessing, Up: DirectedMessage - -DirectedMessage class: creating instances ------------------------------------------ - -selector: aSymbol arguments: anArray - This method should not be called for instances of this class. - -selector: aSymbol arguments: anArray receiver: anObject - Create a new instance of the receiver - - - -File: gst-base.info, Node: DirectedMessage-accessing, Next: DirectedMessage-basic, Prev: DirectedMessage class-creating instances, Up: DirectedMessage - -DirectedMessage: accessing --------------------------- - -receiver - Answer the receiver - -receiver: anObject - Change the receiver - - - -File: gst-base.info, Node: DirectedMessage-basic, Next: DirectedMessage-multiple process, Prev: DirectedMessage-accessing, Up: DirectedMessage - -DirectedMessage: basic ----------------------- - -printOn: aStream - Print a representation of the receiver on aStream - -send - Send the message - -value - Send the message (this message provides interoperability between - DirectedMessages and blocks) - - - -File: gst-base.info, Node: DirectedMessage-multiple process, Next: DirectedMessage-saving and loading, Prev: DirectedMessage-basic, Up: DirectedMessage - -DirectedMessage: multiple process ---------------------------------- - -fork - Create a new process executing the receiver and start it - -forkAt: priority - Create a new process executing the receiver with given priority - and start it - -newProcess - Create a new process executing the receiver in suspended state. - The priority is the same as for the calling process. The receiver - must not contain returns - - - -File: gst-base.info, Node: DirectedMessage-saving and loading, Prev: DirectedMessage-multiple process, Up: DirectedMessage - -DirectedMessage: saving and loading ------------------------------------ - -reconstructOriginalObject - This method is used when DirectedMessages are used together with - PluggableProxies (see ObjectDumper). It sends the receiver to - reconstruct the object that was originally stored. - - - -File: gst-base.info, Node: Directory, Next: DLD, Prev: DirectedMessage, Up: Base classes - -Directory -========= - -Defined in namespace Smalltalk -Superclass: File -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 of File and Directory. In addition I have the notion of - a current working directory (which alas must be a real directory - and not a virtual one). - -* Menu: - -* Directory class-C functions:: (class) -* 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-C functions, Next: Directory class-file name management, Up: Directory - -Directory class: C functions ----------------------------- - -primWorking: dirName - C call-out to chdir. Do not modify! - -working - C call-out to getCurDirName. Do not modify! - - - -File: gst-base.info, Node: Directory class-file name management, Next: Directory class-file operations, Prev: Directory class-C functions, Up: Directory - -Directory class: file name management -------------------------------------- - -append: fileName to: directory - Answer the name of a file named `fileName' which resides in a - directory named `directory'. - -pathSeparator - Answer (as a Character) the character used to separate directory - names - -pathSeparatorString - Answer (in a String) the character used to separate directory names - - - -File: gst-base.info, Node: Directory class-file operations, Next: Directory class-reading system defaults, Prev: Directory class-file name management, Up: Directory - -Directory class: file operations --------------------------------- - -create: dirName - Create a directory named dirName. - -working: dirName - Change the current working directory to dirName. - - - -File: gst-base.info, Node: Directory class-reading system defaults, Next: Directory-accessing, Prev: Directory class-file operations, Up: Directory - -Directory class: reading system defaults ----------------------------------------- - -home - Answer the path to the user's home directory - -image - Answer the path to GNU Smalltalk's image file - -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 - -localKernel - Answer the path in which a local version of the GNU Smalltalk - kernel's Smalltalk source files were found - -module - Answer the path to GNU Smalltalk's dynamically loaded modules - -systemKernel - Answer the path to the GNU Smalltalk kernel's Smalltalk source - files - -temporary - Answer the path in which temporary files can be created. This is - read from the environment, and guessed if that fails. - - - -File: gst-base.info, Node: Directory-accessing, Next: Directory-enumerating, Prev: Directory class-reading system defaults, Up: Directory - -Directory: accessing --------------------- - -at: aName - Answer a File object for a file named `aName' residing 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. - -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. - - - -File: gst-base.info, Node: Directory-enumerating, Prev: Directory-accessing, Up: Directory - -Directory: enumerating ----------------------- - -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 - -DLD -=== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-C interface - ...and Gandalf said: "Many folk like to know beforehand what is to - be set on the table; but those who have laboured to prepare the - feast like to keep their secret; for wonder makes the words of - praise louder." - - I am just an ancillary class used to reference some C functions. - Most of my actual functionality is used by redefinitions of methods - in CFunctionDescriptor. - -* Menu: - -* DLD class-C functions:: (class) -* DLD class-dynamic linking:: (class) - - -File: gst-base.info, Node: DLD class-C functions, Next: DLD class-dynamic linking, Up: DLD - -DLD class: C functions ----------------------- - -defineCFunc: aName as: aFuncAddr - C call-out to defineCFunc. Do not modify! - -library: libHandle getFunc: aFuncString - C call-out to dldGetFunc. Do not modify! - -linkFile: aFileName - C call-out to dldLink. Do not modify! - - - -File: gst-base.info, Node: DLD class-dynamic linking, Prev: DLD class-C functions, Up: DLD - -DLD class: dynamic linking --------------------------- - -addLibrary: library - Add library to the search path of libraries to be used by DLD. - -addModule: library - Add library to the list of modules to be loaded when the image is - started. The gst_initModule function in the library is called, - but the library will not be put in the search path used whenever a - C function is requested but not registered. - -defineExternFunc: aFuncName - This method calls #primDefineExternFunc: to try to link to a - function with the given name, and answers whether the linkage was - successful. You can redefine this method to restrict the ability - to do dynamic linking. - -initialize - Private - Initialize the receiver's class variables - -libraryList - Answer a copy of the search path of libraries to be used by DLD - -moduleList - Answer a copy of the modules reloaded when the image is started - -primDefineExternFunc: aFuncName - This method tries to link to a function with the given name, and - answers whether the linkage was successful. It should not be - overridden. - -update: aspect - Called on startup - Make DLD re-link and reset the addresses of - all the externally defined functions - - - -File: gst-base.info, Node: DumperProxy, Next: Duration, Prev: DLD, Up: Base classes - -DumperProxy -=========== - -Defined in namespace Smalltalk -Superclass: Object -Category: Streams-Files - I am an helper class for ObjectDumper. When an object cannot be - saved in the standard way, you can register a subclass of me to - provide special means to save that object. - -* Menu: - -* DumperProxy class-accessing:: (class) -* DumperProxy class-instance creation:: (class) -* DumperProxy-saving and restoring:: (instance) - - -File: gst-base.info, Node: DumperProxy class-accessing, Next: DumperProxy class-instance creation, Up: DumperProxy - -DumperProxy class: accessing ----------------------------- - -acceptUsageForClass: aClass - The receiver was asked to be used as a proxy for the class aClass. - Answer whether the registration is fine. By default, answer true - -loadFrom: anObjectDumper - Reload a proxy stored in anObjectDumper and reconstruct the object - - - -File: gst-base.info, Node: DumperProxy class-instance creation, Next: DumperProxy-saving and restoring, Prev: DumperProxy class-accessing, Up: DumperProxy - -DumperProxy class: instance creation ------------------------------------- - -on: anObject - Answer a proxy to be used to save anObject. This method MUST be - overridden and anObject must NOT be stored in the object's - instance variables unless you override #dumpTo:, because that - would result in an infinite loop! - - - -File: gst-base.info, Node: DumperProxy-saving and restoring, Prev: DumperProxy class-instance creation, Up: DumperProxy - -DumperProxy: saving and restoring ---------------------------------- - -dumpTo: anObjectDumper - Dump the proxy to anObjectDumper - the #loadFrom: class method - will reconstruct the original object. - -object - Reconstruct the object stored in the proxy and answer it - - - -File: gst-base.info, Node: Duration, Next: Error, Prev: DumperProxy, Up: Base classes - -Duration -======== - -Defined in namespace Smalltalk -Superclass: Time -Category: Language-Data types - My instances represent differences between timestamps. - -* Menu: - -* Duration class-instance creation:: (class) -* Duration class-instance creation (non ANSI):: (class) -* Duration-arithmetics:: (instance) - - -File: gst-base.info, Node: Duration class-instance creation, Next: Duration class-instance creation (non ANSI), Up: Duration - -Duration class: instance creation ---------------------------------- - -days: d - Answer a duration of `d' days - -days: d hours: h minutes: m seconds: s - Answer a duration of `d' days and the given number of hours, - minutes, and seconds. - -initialize - Initialize the receiver's instance variables - -zero - Answer a duration of zero seconds. - - - -File: gst-base.info, Node: Duration class-instance creation (non ANSI), Next: Duration-arithmetics, Prev: Duration class-instance creation, Up: Duration - -Duration class: instance creation (non ANSI) --------------------------------------------- - -fromDays: days seconds: secs offset: unused - Answer a duration of `d' days and `secs' seconds. The last - parameter is unused; this message is available for interoperability - with the DateTime class. - - - -File: gst-base.info, Node: Duration-arithmetics, Prev: Duration class-instance creation (non ANSI), Up: Duration - -Duration: arithmetics ---------------------- - -* factor - Answer a Duration that is `factor' times longer than the receiver - -+ aDuration - Answer a Duration that is the sum of the receiver and aDuration's - lengths. - -- aDuration - Answer a Duration that is the difference of the receiver and - aDuration's lengths. - -/ factorOrDuration - If the parameter is a Duration, answer the ratio between the - receiver and factorOrDuration. Else divide the receiver by - factorOrDuration (a Number) and answer a new Duration that is - correspondingly shorter. - -abs - Answer a Duration that is as long as the receiver, but always in - the future. - -days - Answer the number of days in the receiver - -negated - Answer a Duration that is as long as the receiver, but with past - and future exchanged. - -negative - Answer whether the receiver is in the past. - -positive - Answer whether the receiver is a zero-second duration or is in the - future. - -printOn: aStream - Print a represention of the receiver on aStream. - - - -File: gst-base.info, Node: Error, Next: Exception, Prev: Duration, Up: Base classes - -Error -===== - -Defined in namespace Smalltalk -Superclass: Exception -Category: Language-Exceptions - Error represents a fatal error. Instances of it are not resumable. - -* Menu: - -* Error-exception description:: (instance) - - -File: gst-base.info, Node: Error-exception description, Up: Error - -Error: exception description ----------------------------- - -description - Answer a textual description of the exception. - -isResumable - Answer false. Error exceptions are by default unresumable; - subclasses can override this method if desired. - - - -File: gst-base.info, Node: Exception, Next: ExceptionSet, Prev: Error, Up: Base classes - -Exception -========= - -Defined in namespace Smalltalk -Superclass: Signal -Category: Language-Exceptions - An Exception defines the characteristics of an exceptional event - in a different way than CoreExceptions. Instead of creating an - hierarchy of objects and setting attributes of the objects, you - create an hierarchy of classes and override methods in those - classes; instances of those classes are passed to the handlers - instead of instances of the common class Signal. - - Internally, Exception and every subclass of it hold onto a - CoreException, so the two mechanisms are actually interchangeable. - -* Menu: - -* Exception class-comparison:: (class) -* Exception class-creating ExceptionCollections:: (class) -* Exception class-initialization:: (class) -* Exception class-instance creation:: (class) -* Exception class-interoperability with TrappableEvents:: (class) -* Exception-comparison:: (instance) -* Exception-exception description:: (instance) -* Exception-exception signaling:: (instance) - - -File: gst-base.info, Node: Exception class-comparison, Next: Exception class-creating ExceptionCollections, Up: Exception - -Exception class: comparison ---------------------------- - -goodness: anException - Answer how good the receiver is at handling the given exception. A - negative value indicates that the receiver is not able to handle - the exception. - -handles: anException - Answer whether the receiver handles `anException'. - - - -File: gst-base.info, Node: Exception class-creating ExceptionCollections, Next: Exception class-initialization, Prev: Exception class-comparison, Up: Exception - -Exception class: creating ExceptionCollections ----------------------------------------------- - -, aTrappableEvent - Answer an ExceptionCollection containing all the exceptions in the - receiver and all the exceptions in aTrappableEvent - - - -File: gst-base.info, Node: Exception class-initialization, Next: Exception class-instance creation, Prev: Exception class-creating ExceptionCollections, Up: Exception - -Exception class: initialization -------------------------------- - -initialize - Initialize the `links' between the core exception handling system - and the ANSI exception handling system. - - - -File: gst-base.info, Node: Exception class-instance creation, Next: Exception class-interoperability with TrappableEvents, Prev: Exception class-initialization, Up: Exception - -Exception class: instance creation ----------------------------------- - -new - Create an instance of the receiver, which you will be able to - signal later. - -signal - Create an instance of the receiver, give it default attributes, - and signal it immediately. - -signal: messageText - Create an instance of the receiver, set its message text, and - signal it immediately. - - - -File: gst-base.info, Node: Exception class-interoperability with TrappableEvents, Next: Exception-comparison, Prev: Exception class-instance creation, Up: Exception - -Exception class: interoperability with TrappableEvents ------------------------------------------------------- - -allExceptionsDo: aBlock - Private - Pass the coreException to aBlock - -coreException - Private - Answer the coreException which represents instances of - the receiver - -whenSignalledIn: onDoBlock do: handlerBlock exitBlock: exitBlock - Private - Create an ExceptionHandler from the arguments and - register it - - - -File: gst-base.info, Node: Exception-comparison, Next: Exception-exception description, Prev: Exception class-interoperability with TrappableEvents, Up: Exception - -Exception: comparison ---------------------- - -= anObject - Answer whether the receiver is equal to anObject. This is true if - either the receiver or its coreException are the same object as - anObject. - -hash - Answer an hash value for the receiver. - - - -File: gst-base.info, Node: Exception-exception description, Next: Exception-exception signaling, Prev: Exception-comparison, Up: Exception - -Exception: exception description --------------------------------- - -defaultAction - Execute the default action that is attached to the receiver. - -description - Answer a textual description of the exception. - -isResumable - Answer true. Exceptions are by default resumable. - - - -File: gst-base.info, Node: Exception-exception signaling, Prev: Exception-exception description, Up: Exception - -Exception: exception signaling ------------------------------- - -signal - Raise the exceptional event represented by the receiver - -signal: messageText - Raise the exceptional event represented by the receiver, setting - its message text to messageText. - - - -File: gst-base.info, Node: ExceptionSet, Next: False, Prev: Exception, Up: Base classes - -ExceptionSet -============ - -Defined in namespace Smalltalk -Superclass: TrappableEvent -Category: Language-Exceptions - My instances are not real exceptions: they can only be used as - arguments to #on:do:... methods in BlockClosure. They act as - shortcuts that allows you to use the same handler for many - exceptions without having to write duplicate code - -* Menu: - -* ExceptionSet class-instance creation:: (class) -* ExceptionSet-enumerating:: (instance) - - -File: gst-base.info, Node: ExceptionSet class-instance creation, Next: ExceptionSet-enumerating, Up: ExceptionSet - -ExceptionSet class: instance creation -------------------------------------- - -new - Private - Answer a new, empty ExceptionSet - - - -File: gst-base.info, Node: ExceptionSet-enumerating, Prev: ExceptionSet class-instance creation, Up: ExceptionSet - -ExceptionSet: enumerating -------------------------- - -allExceptionsDo: aBlock - Private - Evaluate aBlock for every exception in the receiver. - Answer the receiver - -goodness: exception - Answer how good the receiver is at handling the given exception. A - negative value indicates that the receiver is not able to handle - the exception. - -handles: exception - Answer whether the receiver handles `exception'. - - - -File: gst-base.info, Node: False, Next: File, Prev: ExceptionSet, Up: Base classes - -False -===== - -Defined in namespace Smalltalk -Superclass: Boolean -Category: Language-Data types - I always tell lies. I have a single instance in the system, which - represents the value false. - -* Menu: - -* False-basic:: (instance) -* False-C hacks:: (instance) -* False-printing:: (instance) - - -File: gst-base.info, Node: False-basic, Next: False-C hacks, Up: False - -False: basic ------------- - -& aBoolean - We are false - anded with anything, we always answer false - -and: aBlock - We are false - anded with anything, we always answer false - -eqv: aBoolean - Answer whether the receiver and aBoolean represent the same - boolean value - -ifFalse: falseBlock - We are false - evaluate the falseBlock - -ifFalse: falseBlock ifTrue: trueBlock - We are false - evaluate the falseBlock - -ifTrue: trueBlock - We are false - answer nil - -ifTrue: trueBlock ifFalse: falseBlock - We are false - evaluate the falseBlock - -not - We are false - answer true - -or: aBlock - We are false - ored with anything, we always answer the other - operand, so evaluate aBlock - -xor: aBoolean - Answer whether the receiver and aBoolean represent different - boolean values - -| aBoolean - We are false - ored with anything, we always answer the other - operand - - - -File: gst-base.info, Node: False-C hacks, Next: False-printing, Prev: False-basic, Up: False - -False: C hacks --------------- - -asCBooleanValue - Answer `0'. - - - -File: gst-base.info, Node: False-printing, Prev: False-C hacks, Up: False - -False: printing ---------------- - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-base.info, Node: File, Next: FileDescriptor, Prev: False, Up: Base classes - -File -==== - -Defined in namespace Smalltalk -Superclass: Object -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: - -* File class-C functions:: (class) -* File class-file name management:: (class) -* File class-file operations:: (class) -* File class-instance creation:: (class) -* File class-reading system defaults:: (class) -* File class-testing:: (class) -* File-accessing:: (instance) -* File-file name management:: (instance) -* File-file operations:: (instance) -* File-testing:: (instance) - - -File: gst-base.info, Node: File class-C functions, Next: File class-file name management, Up: File - -File class: C functions ------------------------ - -errno - C call-out to errno. Do not modify! - -stringError: errno - C call-out to strerror. Do not modify! - - - -File: gst-base.info, Node: File class-file name management, Next: File class-file operations, Prev: File class-C functions, Up: File - -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. - -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 class: file operations ---------------------------- - -checkError - Return whether an error had been reported or not. If there had - been one, raise an exception too - -checkError: errno - The error with the C code `errno' has been reported. If errno >= - 1, raise an exception - -remove: fileName - Remove the file with the given path name - -rename: oldFileName to: newFileName - Rename the file with the given path name oldFileName to newFileName - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-6 smalltalk-2.1.7/doc/gst-base.info-6 --- smalltalk-2.1.6/doc/gst-base.info-6 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-6 1970-01-01 01:00:00.000000000 +0100 @@ -1,1735 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: File class-instance creation, Next: File class-reading system defaults, Prev: File class-file operations, Up: File - -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 - -on: aVFSHandler - Answer a new file with the given path. The handler that returns - the information is aVFSHandler - - - -File: gst-base.info, Node: File class-reading system defaults, Next: File class-testing, Prev: File class-instance creation, Up: File - -File class: reading system defaults ------------------------------------ - -image - Answer the full path to the image being used. - - - -File: gst-base.info, Node: File class-testing, Next: File-accessing, Prev: File class-reading system defaults, Up: File - -File class: testing -------------------- - -exists: fileName - Answer whether a file with the given name exists - -isAccessible: fileName - Answer whether a directory with the given name exists and can be - accessed - -isExecutable: fileName - Answer whether a file with the given name exists and can be - executed - -isReadable: fileName - Answer whether a file with the given name exists and is readable - -isWriteable: fileName - Answer whether a file with the given name exists and is writeable - - - -File: gst-base.info, Node: File-accessing, Next: File-file name management, Prev: File class-testing, Up: File - -File: 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). - -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). - -name - Answer the name of the file identified by the receiver - -refresh - Refresh the statistics for the receiver - -size - Answer the size of the file identified by the receiver - - - -File: gst-base.info, Node: File-file name management, Next: File-file operations, Prev: File-accessing, Up: File - -File: file name management --------------------------- - -extension - Answer the extension of 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 - -stripExtension - Answer the path (if any) and file name of the receiver - -stripFileName - Answer the path of the receiver, always including a directory name - (possibly `.') and the final directory separator - -stripPath - Answer the file name and extension (if any) of the receiver - - - -File: gst-base.info, Node: File-file operations, Next: File-testing, Prev: File-file name management, Up: File - -File: file operations ---------------------- - -contents - Open a read-only FileStream on the receiver, read its contents, - close the stream and answer the contents - -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. - -openDescriptor: mode - Open the receiver in the given mode (as answered by FileStream's - class constant methods). Upon failure, evaluate aBlock. - -readStream - Open a read-only FileStream on the receiver - -remove - Remove the file identified by the receiver - -renameTo: newName - Remove the file identified by the receiver - -writeStream - Open a write-only FileStream on the receiver - - - -File: gst-base.info, Node: File-testing, Prev: File-file operations, Up: File - -File: testing -------------- - -exists - Answer whether a file with the name contained in the receiver does - exist. - -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. - -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. - -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 - - - -File: gst-base.info, Node: FileDescriptor, Next: FileSegment, Prev: File, Up: Base classes - -FileDescriptor -============== - -Defined in namespace Smalltalk -Superclass: ByteStream -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). - In addition, they accept a virtual filesystem path like - `configure.gz#ugz' which can be used to transparently extract or - decompress files from archives, or do arbitrary processing on the - files. - -* Menu: - -* FileDescriptor class-initialization:: (class) -* FileDescriptor class-instance creation:: (class) -* FileDescriptor-accessing:: (instance) -* FileDescriptor-basic:: (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-printing:: (instance) -* FileDescriptor-testing:: (instance) - - -File: gst-base.info, Node: FileDescriptor class-initialization, Next: FileDescriptor class-instance creation, Up: FileDescriptor - -FileDescriptor class: initialization ------------------------------------- - -initialize - Initialize the receiver's class variables - -update: aspect - Close open files before quitting - - - -File: gst-base.info, Node: FileDescriptor class-instance creation, Next: FileDescriptor-accessing, Prev: FileDescriptor class-initialization, Up: FileDescriptor - -FileDescriptor class: instance creation ---------------------------------------- - -append - Open for writing. The file is created if it does not exist. The - stream is positioned at the end of the file. - -create - Open for reading and writing. The file is created if it does not - exist, otherwise it is truncated. The stream is positioned at the - beginning of the file. - -fopen: fileName mode: fileMode - Open fileName in the required mode - answered by #append, #create, - #readWrite, #read or #write - and fail if the file cannot be - opened. Else answer a new FileStream. For mode anyway you can use - any standard C non-binary fopen mode. The file will be - automatically closed upon GC if the object is not referenced - anymore, but it is better to close it as soon as you're finished - with it anyway, using #close. To keep a file open even when no - references exist anymore, send it #removeToBeFinalized - -fopen: fileName mode: fileMode ifFail: aBlock - Open fileName in the required mode - answered by #append, #create, - #readWrite, #read or #write - and evaluate aBlock if the file - cannot be opened. Else answer a new FileStream. For mode anyway - you can use any The file will be automatically closed upon GC if - the object is not referenced anymore, but it is better to close it - as soon as you're finished with it anyway, using #close. To keep a - file open even when no references exist anymore, send it - #removeToBeFinalized - -on: fd - Open a FileDescriptor on the given file descriptor. Read-write - access is assumed. - -open: fileName - Open fileName in read-write mode - fail if the file cannot be - opened. Else answer a new FileStream. The file will be - automatically closed upon GC if the object is not referenced - anymore, but you should close it with #close anyway. To keep a - file open, send it #removeToBeFinalized - -open: fileName mode: fileMode - Open fileName in the required mode - answered by #append, #create, - #readWrite, #read or #write - and fail if the file cannot be - opened. Else answer a new FileStream. For mode anyway you can use - any standard C non-binary fopen mode. fileName can be a `virtual - filesystem' path, including URLs and '#' suffixes that are - inspected by the virtual filesystem layers and replaced with tasks - such as un-gzipping a file or extracting a file from an archive. - The file will be automatically closed upon GC if the object is not - referenced anymore, but it is better to close it as soon as you're - finished with it anyway, using #close. To keep a file open even - when no references exist anymore, send it #removeToBeFinalized - -open: fileName mode: fileMode ifFail: aBlock - Open fileName in the required mode - answered by #append, #create, - #readWrite, #read or #write - and evaluate aBlock if the file - cannot be opened. Else answer a new instance of the receiver. For - mode anyway you can use any standard C non-binary fopen mode. - fileName can be a `virtual filesystem' path, including URLs and - '#' suffixes that are inspected by the virtual filesystem layers - and replaced with tasks such as un-gzipping a file or extracting a - file from an archive. The file will be automatically closed upon - GC if the object is not referenced anymore, but it is better to - close it as soon as you're finished with it anyway, using #close. - To keep a file open even when no references exist anymore, send it - #removeToBeFinalized - -openTemporaryFile: baseName - Open for writing a file whose name starts with baseName, followed - by six random alphanumeric characters. The file is created with - mode read/write and permissions 0666 or 0600 on most recent - operating systems (beware, the former behavior might constitute a - security problem). The file is opened with the O_EXCL flag, - guaranteeing that when the method returns successfully we are the - only user. - -popen: commandName dir: direction - Open a pipe on the given command and fail if the file cannot be - opened. Else answer a new FileStream. The pipe will not be - automatically closed upon GC, even if the object is not referenced - anymore, because when you close a pipe you have to wait for the - associated process to terminate. To enforce automatic closing of - the pipe, send it #addToBeFinalized. direction is returned by - #read or #write ('r' or 'w') and is interpreted from the point of - view of Smalltalk: reading means Smalltalk reads the standard - output of the command, writing means Smalltalk writes the standard - input of the command. The other channel (stdin when reading, - stdout when writing) is the same as GST's, unless commandName - alters it. - -popen: commandName dir: direction ifFail: aBlock - Open a pipe on the given command and evaluate aBlock file cannot - be opened. Else answer a new FileStream. The pipe will not be - automatically closed upon GC, even if the object is not referenced - anymore, because when you close a pipe you have to wait for the - associated process to terminate. To enforce automatic closing of - the pipe, send it #addToBeFinalized. direction is interpreted - from the point of view of Smalltalk: reading means that Smalltalk - reads the standard output of the command, writing means that - Smalltalk writes the standard input of the command - -read - Open text file for reading. The stream is positioned at the - beginning of the file. - -readWrite - Open for reading and writing. The stream is positioned at the - beginning of the file. - -write - Truncate file to zero length or create text file for writing. The - stream is positioned at the beginning of the file. - - - -File: gst-base.info, Node: FileDescriptor-accessing, Next: FileDescriptor-basic, Prev: FileDescriptor class-instance creation, Up: FileDescriptor - -FileDescriptor: accessing -------------------------- - -canRead - Answer whether the file is open and we can read from it - -canWrite - Answer whether the file is open and we can write from it - -ensureReadable - If the file is open, wait until data can be read from it. The wait - allows other Processes to run. - -ensureWriteable - If the file is open, wait until we can write to it. The wait - allows other Processes to run. - -exceptionalCondition - Answer whether the file is open and an exceptional condition (such - as presence of out of band data) has occurred on it - -fd - Return the OS file descriptor of the file - -isOpen - Answer whether the file is still open - -isPipe - Answer whether the file is a pipe or an actual disk file - -name - Return the name of the file - -waitForException - If the file is open, wait until an exceptional condition (such as - presence of out of band data) has occurred on it. The wait allows - other Processes to run. - - - -File: gst-base.info, Node: FileDescriptor-basic, Next: FileDescriptor-built ins, Prev: FileDescriptor-accessing, Up: FileDescriptor - -FileDescriptor: basic ---------------------- - -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 - -size - Return the current size of the file, in bytes - -truncate - Truncate the file at the current position - - - -File: gst-base.info, Node: FileDescriptor-built ins, Next: FileDescriptor-class type methods, Prev: FileDescriptor-basic, Up: FileDescriptor - -FileDescriptor: built ins -------------------------- - -fileOp: ioFuncIndex - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -fileOp: ioFuncIndex with: arg1 - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex with: arg1 ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -fileOp: ioFuncIndex with: arg1 with: arg2 - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex with: arg1 with: arg2 ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - - - -File: gst-base.info, Node: FileDescriptor-class type methods, Next: FileDescriptor-initialize-release, Prev: FileDescriptor-built ins, Up: FileDescriptor - -FileDescriptor: class type methods ----------------------------------- - -isBinary - We answer characters, so answer false - -isExternalStream - We stream on an external entity (a file), so answer true - -isText - We answer characters, so answer true - - - -File: gst-base.info, Node: FileDescriptor-initialize-release, Next: FileDescriptor-low-level access, Prev: FileDescriptor-class type methods, Up: FileDescriptor - -FileDescriptor: initialize-release ----------------------------------- - -initialize - Initialize the receiver's instance variables - -newBuffer - Private - Answer a String to be used as the receiver's buffer - -nextHunk - Answer the next buffers worth of stuff in the Stream represented - by the receiver. Do at most one actual input operation. - - - -File: gst-base.info, Node: FileDescriptor-low-level access, Next: FileDescriptor-overriding inherited methods, Prev: FileDescriptor-initialize-release, Up: FileDescriptor - -FileDescriptor: low-level access --------------------------------- - -read: byteArray - Ignoring any buffering, try to fill byteArray with the contents of - the file - -read: byteArray from: position to: end - Ignoring any buffering, try to fill the given range of byteArray - with the contents of the file - -read: byteArray numBytes: anInteger - Ignoring any buffering, try to fill anInteger bytes of byteArray - 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 - -FileDescriptor: overriding inherited methods --------------------------------------------- - -isEmpty - Answer whether the receiver is empty - -next: anInteger - Return the next 'anInteger' characters from the stream, as a - String. - -nextByteArray: anInteger - Return the next 'anInteger' bytes from the stream, as a ByteArray. - -nextPutAll: aCollection - Put all the characters in aCollection in the file - -reverseContents - Return the contents of the file from the last byte to the first - -setToEnd - Reset the file pointer to the end of the file - -skip: anInteger - Skip anInteger bytes in the file - - - -File: gst-base.info, Node: FileDescriptor-printing, Next: FileDescriptor-testing, Prev: FileDescriptor-overriding inherited methods, Up: FileDescriptor - -FileDescriptor: printing ------------------------- - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-base.info, Node: FileDescriptor-testing, Prev: FileDescriptor-printing, Up: FileDescriptor - -FileDescriptor: testing ------------------------ - -atEnd - Answer whether data has come to an end - - - -File: gst-base.info, Node: FileSegment, Next: FileStream, Prev: FileDescriptor, Up: Base classes - -FileSegment -=========== - -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. - -* Menu: - -* FileSegment class-basic:: (class) -* FileSegment class-installing:: (class) -* FileSegment-basic:: (instance) -* FileSegment-equality:: (instance) - - -File: gst-base.info, Node: FileSegment class-basic, Next: FileSegment class-installing, Up: FileSegment - -FileSegment class: basic ------------------------- - -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 - - - -File: gst-base.info, Node: FileSegment class-installing, Next: FileSegment-basic, Prev: FileSegment class-basic, Up: FileSegment - -FileSegment class: installing ------------------------------ - -relocateFrom: startPath to: endPath - Remove startPath from all paths that start with it, and replace it - with endPath. Needed to support $(DESTDIR) when installing - - - -File: gst-base.info, Node: FileSegment-basic, Next: FileSegment-equality, Prev: FileSegment class-installing, Up: FileSegment - -FileSegment: basic ------------------- - -asString - Answer a String containing the required segment of the file - -fileName - Answer the name of the file containing the segment - -filePos - Answer the position in the file where the segment starts - -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. - -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: FileSegment-equality, Prev: FileSegment-basic, Up: FileSegment - -FileSegment: equality ---------------------- - -= aFileSegment - Answer whether the receiver and aFileSegment are equal. - -hash - Answer an hash value for the receiver. - - - -File: gst-base.info, Node: FileStream, Next: Float, Prev: FileSegment, Up: Base classes - -FileStream -========== - -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). - -* Menu: - -* FileStream class-file-in:: (class) -* FileStream class-standard streams:: (class) -* FileStream-basic:: (instance) -* FileStream-buffering:: (instance) -* FileStream-filing in:: (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 - -FileStream class: file-in -------------------------- - -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. - -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. - -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). - -generateMakefileOnto: aStream - Generate a make file for the file-ins since record was last set to - true. Store it on aStream - -initialize - Private - Initialize the receiver's class variables - -record: recordFlag - Set whether Smalltalk should record information aboutnested - 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: FileStream class-standard streams, Next: FileStream-basic, Prev: FileStream class-file-in, Up: FileStream - -FileStream class: standard streams ----------------------------------- - -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. - -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. - -stdout - Answer a FileStream that is attached the Smalltalk program's - standard output file handle; this is used for normal output from - the program. - - - -File: gst-base.info, Node: FileStream-basic, Next: FileStream-buffering, Prev: FileStream class-standard streams, Up: FileStream - -FileStream: basic ------------------ - -copyFrom: from to: to - Answer the contents of the file between the two given positions - -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 - 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 - -position: n - Set the file pointer to the zero-based position n - -size - Return the current size of the file, in bytes - -truncate - Truncate the file at the current position - - - -File: gst-base.info, Node: FileStream-buffering, Next: FileStream-filing in, Prev: FileStream-basic, Up: FileStream - -FileStream: buffering ---------------------- - -basicFlush - Private - Flush the output buffer, fail if it is empty - -bufferSize - Answer the file's current buffer - -bufferSize: bufSize - Flush the file and set the buffer's size to bufSize - -clean - Synchronize the file descriptor's state with the object's state. - -fill - Private - Fill the input buffer - -flush - Flush the output buffer - -newBuffer - Private - Answer a String to be used as the receiver's buffer - -nextHunk - Answer the next buffers worth of stuff in the Stream represented - by the receiver. Do at most one actual input operation. - -pendingWrite - Answer whether the output buffer is full - - - -File: gst-base.info, Node: FileStream-filing in, Next: FileStream-overriding inherited methods, Prev: FileStream-buffering, Up: FileStream - -FileStream: filing in ---------------------- - -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. - -fileInLine: lineNum fileName: aString at: charPosInt - Private - Much like a preprocessor #line directive; it is used by - the Emacs Smalltalk mode. - - - -File: gst-base.info, Node: FileStream-overriding inherited methods, Next: FileStream-testing, Prev: FileStream-filing in, Up: FileStream - -FileStream: overriding inherited methods ----------------------------------------- - -next: anInteger - Return the next 'anInteger' characters from the stream, as a - String. - -nextByteArray: anInteger - Return the next 'anInteger' bytes from the stream, as a ByteArray. - -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. - -nextPutAll: aCollection - Put all the characters in aCollection in the file - -nextPutAllFlush: aCollection - Put all the characters in aCollection in the file, then flush the - file buffers - - - -File: gst-base.info, Node: FileStream-testing, Prev: FileStream-overriding inherited methods, Up: FileStream - -FileStream: testing -------------------- - -atEnd - Answer whether data has come to an end - - - -File: gst-base.info, Node: Float, Next: FloatD, Prev: FileStream, Up: Base classes - -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-printing:: (instance) -* Float-storing:: (instance) -* Float-testing:: (instance) -* Float-testing functionality:: (instance) - - -File: gst-base.info, Node: Float class-byte-order dependancies, Next: Float class-characterization, Up: Float - -Float class: byte-order dependancies ------------------------------------- - -signByte - Answer the byte of the receiver that contains the exponent - - - -File: gst-base.info, Node: Float class-characterization, Next: Float-arithmetic, Prev: Float class-byte-order dependancies, Up: Float - -Float class: characterization ------------------------------ - -denormalized - Answer whether instances of the receiver can be in denormalized - form. - -e - Returns the value of e. Hope is that it is precise enough - -epsilon - Return the smallest Float x for which is 1 + x ~= 1 - -fmin - Return the smallest Float that is > 0. - -fminDenormalized - Return the smallest Float that is > 0 if denormalized values are - supported, else return 0. - -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 - -pi - Returns the value of pi. Hope is that it is precise enough - -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. - - - -File: gst-base.info, Node: Float-arithmetic, Next: Float-basic, Prev: Float class-characterization, Up: Float - -Float: arithmetic ------------------ - -integerPart - Return the receiver's integer part - -negated - Return the negation of the receiver. Unlike 0-self, this converts - correctly signed zeros. - - - -File: gst-base.info, Node: Float-basic, Next: Float-built ins, Prev: Float-arithmetic, Up: Float - -Float: basic ------------- - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: Float-built ins, Next: Float-coercing, Prev: Float-basic, Up: Float - -Float: built ins ----------------- - -arcCos - Answer the arc-cosine of the receiver - -arcSin - Answer the arc-sine of the receiver - -arcTan - Answer the arc-tangent of the receiver - -ceiling - Answer the integer part of the receiver, truncated towards - +infinity - -cos - Answer the cosine of the receiver - -exp - Answer 'e' (2.718281828459...) raised to the receiver - -floor - Answer the integer part of the receiver, truncated towards - -infinity - -ln - Answer the logarithm of the receiver in base 'e' - (2.718281828459...) - -primHash - Private - Answer an hash value for the receiver - -raisedTo: aNumber - Answer the receiver raised to its aNumber power - -sin - Answer the sine of the receiver - -sqrt - Answer the square root of the receiver - -tan - Answer the tangent of the receiver - - - -File: gst-base.info, Node: Float-coercing, Next: Float-printing, Prev: Float-built ins, Up: Float - -Float: coercing ---------------- - -asExactFraction - Convert the receiver into a fraction with optimal approximation, - but with usually huge terms. - -asFloat - Just defined for completeness. Return the receiver. - -asFraction - Convert the receiver into a fraction with a good (but undefined) - approximation - -estimatedLog - Answer an estimate of (self abs floorLog: 10) - -truncated - Convert the receiver to an Integer. Only used for LargeIntegers, - there are primitives for the other cases. - - - -File: gst-base.info, Node: Float-printing, Next: Float-storing, Prev: Float-coercing, Up: Float - -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 - -Float: storing --------------- - -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 - -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, Prev: Float-testing, Up: Float - -Float: testing functionality ----------------------------- - -isFloat - Answer `true'. - - - -File: gst-base.info, Node: FloatD, Next: FloatE, Prev: Float, Up: Base classes - -FloatD -====== - -Defined in namespace Smalltalk -Superclass: Float -Category: Language-Data types - My instances represent floating point numbers that have 64 bits of - precision (well, less than that in precision; they are precisely - the same as C's "double" datatype). Besides the standard - numerical operations, I provide transcendental operations too. - -* Menu: - -* FloatD class-byte-order dependancies:: (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 dependancies, Next: FloatD class-characterization, Up: FloatD - -FloatD class: byte-order dependancies -------------------------------------- - -signByte - Answer the byte of the receiver that contains the exponent - - - -File: gst-base.info, Node: FloatD class-characterization, Next: FloatD class-converting, Prev: FloatD class-byte-order dependancies, Up: FloatD - -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 - - - -File: gst-base.info, Node: FloatD class-converting, Next: FloatD-built ins, Prev: FloatD class-characterization, Up: FloatD - -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 - -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 - -<= 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 - -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 - 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: FloatD-coercing, Prev: FloatD-built ins, Up: FloatD - -FloatD: coercing ----------------- - -asFloatD - 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: FloatE, Next: FloatQ, Prev: FloatD, Up: Base classes - -FloatE -====== - -Defined in namespace Smalltalk -Superclass: Float -Category: Language-Data types - My instances represent floating point numbers that have 64 bits of - precision (well, less than that in precision; they are precisely - the same as C's "double" datatype). Besides the standard - numerical operations, I provide transcendental operations too. - -* Menu: - -* FloatE class-byte-order dependancies:: (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-characterization, Up: FloatE - -FloatE class: byte-order dependancies -------------------------------------- - -signByte - Answer the byte of the receiver that contains the exponent - - - -File: gst-base.info, Node: FloatE class-characterization, Next: FloatE class-converting, Prev: FloatE class-byte-order dependancies, Up: FloatE - -FloatE class: characterization ------------------------------- - -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. - -e - Returns the value of e. Hope is that it is precise enough - -emax - Return the maximum allowable exponent for a FloatE that is finite. - -emin - Return the maximum allowable exponent for a FloatE that is finite. - -fmax - Return the largest normalized FloatE that is not infinite. - -fminNormalized - Return the smallest normalized FloatE that is > 0 - -infinity - Return a FloatE 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 FloatE that represents a mathematically indeterminate - value (e.g. Inf - Inf, Inf / Inf). - -negativeInfinity - Return a FloatE 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: FloatE class-converting, Next: FloatE-built ins, Prev: FloatE class-characterization, Up: FloatE - -FloatE class: converting ------------------------- - -coerce: aNumber - Answer aNumber converted to a FloatE - - - -File: gst-base.info, Node: FloatE-built ins, Next: FloatE-coercing, Prev: FloatE class-converting, Up: FloatE - -FloatE: 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 FloatE - -< 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 - -asFloatQ - Answer the receiver converted to a FloatQ - -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: FloatE-coercing, Prev: FloatE-built ins, Up: FloatE - -FloatE: coercing ----------------- - -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 - -FloatQ -====== - -Defined in namespace Smalltalk -Superclass: Float -Category: Language-Data types - My instances represent floating point numbers that have 64 bits of - precision (well, less than that in precision; they are precisely - the same as C's "double" datatype). Besides the standard - numerical operations, I provide transcendental operations too. - -* Menu: - -* FloatQ class-byte-order dependancies:: (class) -* FloatQ class-characterization:: (class) -* FloatQ class-converting:: (class) -* FloatQ-built ins:: (instance) -* FloatQ-coercing:: (instance) - - -File: gst-base.info, Node: FloatQ class-byte-order dependancies, Next: FloatQ class-characterization, Up: FloatQ - -FloatQ class: byte-order dependancies -------------------------------------- - -signByte - Answer the byte of the receiver that contains the exponent - - - -File: gst-base.info, Node: FloatQ class-characterization, Next: FloatQ class-converting, Prev: FloatQ class-byte-order dependancies, Up: FloatQ - -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 - -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 - -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, Prev: FloatQ-built ins, Up: FloatQ - -FloatQ: coercing ----------------- - -asFloatQ - 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: Fraction, Next: Halt, Prev: FloatQ, Up: Base classes - -Fraction -======== - -Defined in namespace Smalltalk -Superclass: Number -Category: Language-Data types - I represent rational numbers in the form (p/q) where p and q are - integers. The arithmetic operations *, +, -, /, on fractions, - all return a reduced fraction. - -* Menu: - -* Fraction class-converting:: (class) -* Fraction class-instance creation:: (class) -* Fraction-accessing:: (instance) -* Fraction-arithmetic:: (instance) -* Fraction-coercing:: (instance) -* Fraction-comparing:: (instance) -* Fraction-converting:: (instance) -* Fraction-optimized cases:: (instance) -* Fraction-printing:: (instance) -* Fraction-testing:: (instance) - - -File: gst-base.info, Node: Fraction class-converting, Next: Fraction class-instance creation, Up: Fraction - -Fraction class: converting --------------------------- - -coerce: aNumber - Answer aNumber converted to a Fraction - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-7 smalltalk-2.1.7/doc/gst-base.info-7 --- smalltalk-2.1.6/doc/gst-base.info-7 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-7 1970-01-01 01:00:00.000000000 +0100 @@ -1,1877 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: Fraction class-instance creation, Next: Fraction-accessing, Prev: Fraction class-converting, Up: Fraction - -Fraction class: instance creation ---------------------------------- - -initialize - Initialize the receiver's class variables - -numerator: nInteger denominator: dInteger - Answer a new instance of fraction (nInteger/dInteger) - - - -File: gst-base.info, Node: Fraction-accessing, Next: Fraction-arithmetic, Prev: Fraction class-instance creation, Up: Fraction - -Fraction: accessing -------------------- - -denominator - Answer the receiver's denominator - -numerator - Answer the receiver's numerator - - - -File: gst-base.info, Node: Fraction-arithmetic, Next: Fraction-coercing, Prev: Fraction-accessing, Up: Fraction - -Fraction: arithmetic --------------------- - -* aNumber - Multiply two numbers and answer the result. - -+ aNumber - Sum two numbers and answer the result. - -- aNumber - Subtract aNumber from the receiver and answer the result. - -/ aNumber - Divide the receiver by aNumber and answer the result. - -// aNumber - Return the integer quotient of dividing the receiver by aNumber - with truncation towards negative infinity. - -\\ aNumber - Return the remainder from dividing the receiver by aNumber, (using - //). - -estimatedLog - Answer an estimate of (self abs floorLog: 10) - - - -File: gst-base.info, Node: Fraction-coercing, Next: Fraction-comparing, Prev: Fraction-arithmetic, Up: Fraction - -Fraction: coercing ------------------- - -ceiling - Truncate the receiver towards positive infinity and return the - truncated result - -coerce: aNumber - Coerce aNumber to the receiver's class - -floor - Truncate the receiver towards negative infinity and return the - truncated result - -generality - Return the receiver's generality - -truncated - Truncate the receiver and return the truncated result - -unity - Coerce 1 to the receiver's class - -zero - Coerce 0 to the receiver's class - - - -File: gst-base.info, Node: Fraction-comparing, Next: Fraction-converting, Prev: Fraction-coercing, Up: Fraction - -Fraction: comparing -------------------- - -< arg - Test if the receiver is less than arg. - -<= arg - Test if the receiver is less than or equal to arg. - -= arg - Test if the receiver equals arg. - -> arg - Test if the receiver is more than arg. - ->= arg - Test if the receiver is greater than or equal to arg. - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: Fraction-converting, Next: Fraction-optimized cases, Prev: Fraction-comparing, Up: Fraction - -Fraction: converting --------------------- - -asFloatD - Answer the receiver converted to a FloatD - -asFloatE - Answer the receiver converted to a FloatD - -asFloatQ - Answer the receiver converted to a FloatD - -asFraction - Answer the receiver, it is already a Fraction - -integerPart - Answer the integer part of the receiver, expressed as a Fraction - - - -File: gst-base.info, Node: Fraction-optimized cases, Next: Fraction-printing, Prev: Fraction-converting, Up: Fraction - -Fraction: optimized cases -------------------------- - -negated - Return the receiver, with its sign changed. - -raisedToInteger: anInteger - Return self raised to the anInteger-th power. - -reciprocal - Return the reciprocal of the receiver - -squared - Return the square of the receiver. - - - -File: gst-base.info, Node: Fraction-printing, Next: Fraction-testing, Prev: Fraction-optimized cases, Up: Fraction - -Fraction: printing ------------------- - -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: Fraction-testing, Prev: Fraction-printing, Up: Fraction - -Fraction: testing ------------------ - -isRational - Answer whether the receiver is rational - true - - - -File: gst-base.info, Node: Halt, Next: HashedCollection, Prev: Fraction, Up: Base classes - -Halt -==== - -Defined in namespace Smalltalk -Superclass: Error -Category: Language-Exceptions - Halt represents a resumable error, usually a bug. - -* Menu: - -* Halt-description:: (instance) - - -File: gst-base.info, Node: Halt-description, Up: Halt - -Halt: description ------------------ - -description - Answer a textual description of the exception. - -isResumable - Answer true. #halt exceptions are by default resumable. - - - -File: gst-base.info, Node: HashedCollection, Next: HomedAssociation, Prev: Halt, Up: Base classes - -HashedCollection -================ - -Defined in namespace Smalltalk -Superclass: Collection -Category: Collections-Unordered - I am an hashed collection that can store objects uniquely and give - fast responses on their presence in the collection. - -* Menu: - -* HashedCollection class-instance creation:: (class) -* HashedCollection-accessing:: (instance) -* HashedCollection-builtins:: (instance) -* HashedCollection-copying:: (instance) -* HashedCollection-enumerating the elements of a collection:: (instance) -* HashedCollection-rehashing:: (instance) -* HashedCollection-removing:: (instance) -* HashedCollection-saving and loading:: (instance) -* HashedCollection-storing:: (instance) -* HashedCollection-testing collections:: (instance) - - -File: gst-base.info, Node: HashedCollection class-instance creation, Next: HashedCollection-accessing, Up: HashedCollection - -HashedCollection class: instance creation ------------------------------------------ - -new - Answer a new instance of the receiver with a default size - -new: anInteger - Answer a new instance of the receiver with the given size - - - -File: gst-base.info, Node: HashedCollection-accessing, Next: HashedCollection-builtins, Prev: HashedCollection class-instance creation, Up: HashedCollection - -HashedCollection: accessing ---------------------------- - -add: newObject - Add newObject to the set, if and only if the set doesn't already - contain an occurrence of it. Don't fail if a duplicate is found. - Answer anObject - -at: index - This method should not be called for instances of this class. - -at: index put: value - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: HashedCollection-builtins, Next: HashedCollection-copying, Prev: HashedCollection-accessing, Up: HashedCollection - -HashedCollection: builtins --------------------------- - -primAt: anIndex - Private - Answer the anIndex-th item of the hash table for the - receiver. Using this instead of basicAt: allows for easier - changes in the representation - -primAt: anIndex put: value - Private - Store value in the anIndex-th item of the hash table for - the receiver. Using this instead of basicAt:put: allows for easier - changes in the representation - -primSize - Private - Answer the size of the hash table for the receiver. - Using this instead of basicSize allows for easier changes in the - representation - - - -File: gst-base.info, Node: HashedCollection-copying, Next: HashedCollection-enumerating the elements of a collection, Prev: HashedCollection-builtins, Up: HashedCollection - -HashedCollection: copying -------------------------- - -deepCopy - Returns a deep copy of the receiver (the instance variables are - copies of the receiver's instance variables) - -shallowCopy - Returns a shallow copy of the receiver (the instance variables are - not copied) - - - -File: gst-base.info, Node: HashedCollection-enumerating the elements of a collection, Next: HashedCollection-rehashing, Prev: HashedCollection-copying, Up: HashedCollection - -HashedCollection: enumerating the elements of a collection ----------------------------------------------------------- - -do: aBlock - Enumerate all the non-nil members of the set - - - -File: gst-base.info, Node: HashedCollection-rehashing, Next: HashedCollection-removing, Prev: HashedCollection-enumerating the elements of a collection, Up: HashedCollection - -HashedCollection: rehashing ---------------------------- - -rehash - Rehash the receiver - - - -File: gst-base.info, Node: HashedCollection-removing, Next: HashedCollection-saving and loading, Prev: HashedCollection-rehashing, Up: HashedCollection - -HashedCollection: removing --------------------------- - -remove: oldObject ifAbsent: anExceptionBlock - Remove oldObject to the set. If it is found, answer oldObject. - Otherwise, evaluate anExceptionBlock and return its value. - - - -File: gst-base.info, Node: HashedCollection-saving and loading, Next: HashedCollection-storing, Prev: HashedCollection-removing, Up: HashedCollection - -HashedCollection: saving and loading ------------------------------------- - -postLoad - Called after loading an object; rehash the collection because - identity objects will most likely mutate their hashes. - -postStore - Called after an object is dumped. Do nothing - necessary because - by default this calls #postLoad by default - - - -File: gst-base.info, Node: HashedCollection-storing, Next: HashedCollection-testing collections, Prev: HashedCollection-saving and loading, Up: HashedCollection - -HashedCollection: storing -------------------------- - -storeOn: aStream - Store on aStream some Smalltalk code which compiles to the receiver - - - -File: gst-base.info, Node: HashedCollection-testing collections, Prev: HashedCollection-storing, Up: HashedCollection - -HashedCollection: testing collections -------------------------------------- - -= aHashedCollection - Returns true if the two sets have the same membership, false if not - -capacity - Answer how many elements the receiver can hold before having to - grow. - -hash - Return the hash code for the members of the set. Since order is - unimportant, we use a commutative operator to compute the hash - value. - -includes: anObject - Answer whether the receiver contains an instance of anObject. - -isEmpty - Answer whether the receiver is empty. - -occurrencesOf: anObject - Return the number of occurrences of anObject. Since we're a set, - this is either 0 or 1. Nil is never directly in the set, so we - special case it (the result is always 1). - -size - Answer the receiver's size - - - -File: gst-base.info, Node: HomedAssociation, Next: IdentityDictionary, Prev: HashedCollection, Up: Base classes - -HomedAssociation -================ - -Defined in namespace Smalltalk -Superclass: Association -Category: Language-Data types - My instances represent know about their parent namespace, which is - of use when implementing weak collections and finalizations. - -* Menu: - -* HomedAssociation class-basic:: (class) -* HomedAssociation-accessing:: (instance) -* HomedAssociation-finalization:: (instance) -* HomedAssociation-storing:: (instance) - - -File: gst-base.info, Node: HomedAssociation class-basic, Next: HomedAssociation-accessing, Up: HomedAssociation - -HomedAssociation class: basic ------------------------------ - -key: aKey value: aValue environment: aNamespace - Answer a new association with the given key and value - - - -File: gst-base.info, Node: HomedAssociation-accessing, Next: HomedAssociation-finalization, Prev: HomedAssociation class-basic, Up: HomedAssociation - -HomedAssociation: accessing ---------------------------- - -environment - Answer the namespace in which I live. - -environment: aNamespace - Set the namespace in which I live to be aNamespace. - - - -File: gst-base.info, Node: HomedAssociation-finalization, Next: HomedAssociation-storing, Prev: HomedAssociation-accessing, Up: HomedAssociation - -HomedAssociation: finalization ------------------------------- - -mourn - This message is sent to the receiver when the object is made - ephemeron (which is common when HomedAssociations are used by a - WeakKeyDictionary or a WeakSet). The mourning of the object's key - is first of all demanded to the environment (which will likely - remove the object from itself), and then performed as usual by - clearing the key and value fields. - - - -File: gst-base.info, Node: HomedAssociation-storing, Prev: HomedAssociation-finalization, Up: HomedAssociation - -HomedAssociation: storing -------------------------- - -storeOn: aStream - Put on aStream some Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: IdentityDictionary, Next: IdentitySet, Prev: HomedAssociation, Up: Base classes - -IdentityDictionary -================== - -Defined in namespace Smalltalk -Superclass: LookupTable -Category: Collections-Keyed - I am similar to LookupTable, except that I use the object identity - comparision message == to determine equivalence of indices. - -* Menu: - - -File: gst-base.info, Node: IdentitySet, Next: Integer, Prev: IdentityDictionary, Up: Base classes - -IdentitySet -=========== - -Defined in namespace Smalltalk -Superclass: Set -Category: Collections-Unordered - I am the typical set object; I can store any objects uniquely. I - use the == operator to determine duplication of objects. - -* Menu: - -* IdentitySet-testing:: (instance) - - -File: gst-base.info, Node: IdentitySet-testing, Up: IdentitySet - -IdentitySet: testing --------------------- - -identityIncludes: anObject - Answer whether we include the anObject object; for IdentitySets - this is identical to #includes: - - - -File: gst-base.info, Node: Integer, Next: Interval, Prev: IdentitySet, Up: Base classes - -Integer -======= - -Defined in namespace Smalltalk -Superclass: Number -Category: Language-Data types - I am the abstract integer class of the GNU Smalltalk system. My - subclasses' instances can represent signed integers of various - sizes (a subclass is picked according to the size), with varying - efficiency. - -* Menu: - -* Integer class-converting:: (class) -* Integer-accessing:: (instance) -* Integer-basic:: (instance) -* Integer-bit operators:: (instance) -* Integer-converting:: (instance) -* Integer-extension:: (instance) -* Integer-iterators:: (instance) -* Integer-math methods:: (instance) -* Integer-printing:: (instance) -* Integer-storing:: (instance) -* Integer-testing functionality:: (instance) - - -File: gst-base.info, Node: Integer class-converting, Next: Integer-accessing, Up: Integer - -Integer class: converting -------------------------- - -coerce: aNumber - Answer aNumber converted to a kind of Integer - - - -File: gst-base.info, Node: Integer-accessing, Next: Integer-basic, Prev: Integer class-converting, Up: Integer - -Integer: accessing ------------------- - -denominator - Answer `1'. - -numerator - Answer the receiver. - - - -File: gst-base.info, Node: Integer-basic, Next: Integer-bit operators, Prev: Integer-accessing, Up: Integer - -Integer: basic --------------- - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: Integer-bit operators, Next: Integer-converting, Prev: Integer-basic, Up: Integer - -Integer: bit operators ----------------------- - -allMask: anInteger - True if all 1 bits in anInteger are 1 in the receiver - -anyMask: anInteger - True if any 1 bits in anInteger are 1 in the receiver - -bitAt: index - Answer the index-th bit of the receiver (the LSB has an index of 1) - -bitAt: index put: value - Answer an integer which is identical to the receiver, possibly - with the exception of the index-th bit of the receiver (the LSB - having an index of 1), which assumes a value equal to the - low-order bit of the second parameter. - -bitClear: aMask - Answer an Integer equal to the receiver, except that all the bits - that are set in aMask are cleared. - -bitInvert - Return the 1's complement of the bits of the receiver - -clearBit: index - Clear the index-th bit of the receiver and answer a new Integer - -highBit - Return the index of the highest order 1 bit of the receiver - -isBitSet: index - Answer whether the index-th bit of the receiver is set - -noMask: anInteger - True if no 1 bits in anInteger are 1 in the receiver - -setBit: index - Set the index-th bit of the receiver and answer a new Integer - - - -File: gst-base.info, Node: Integer-converting, Next: Integer-extension, Prev: Integer-bit operators, Up: Integer - -Integer: converting -------------------- - -asCharacter - Return self as an ascii character - -asFraction - Return the receiver converted to a fraction - -asScaledDecimal: n - Answer the receiver, converted to a ScaledDecimal object. The - scale is forced to be 0. - -ceiling - Return the receiver - it's already truncated - -coerce: aNumber - Coerce aNumber to the receiver's class - -floor - Return the receiver - it's already truncated - -rounded - Return the receiver - it's already truncated - -truncated - Return the receiver - it's already truncated - - - -File: gst-base.info, Node: Integer-extension, Next: Integer-iterators, Prev: Integer-converting, Up: Integer - -Integer: extension ------------------- - -alignTo: anInteger - Answer the receiver, truncated to the first higher or equal - multiple of anInteger (which must be a power of two) - - - -File: gst-base.info, Node: Integer-iterators, Next: Integer-math methods, Prev: Integer-extension, Up: Integer - -Integer: iterators ------------------- - -timesRepeat: aBlock - Evaluate aBlock a number of times equal to the receiver's value. - Compiled in-line for no argument aBlocks without temporaries, and - therefore not overridable. - - - -File: gst-base.info, Node: Integer-math methods, Next: Integer-printing, Prev: Integer-iterators, Up: Integer - -Integer: math methods ---------------------- - -binomial: anInteger - Compute the number of combinations of anInteger objects among a - number of objects given by the receiver. - -estimatedLog - Answer an estimate of (self abs floorLog: 10) - -even - Return whether the receiver is even - -factorial - Return the receiver's factorial. - -floorLog: radix - return (self log: radix) floor. Optimized to answer an integer. - -gcd: anInteger - Return the greatest common divisor (Euclid's algorithm) between the - receiver and anInteger - -lcm: anInteger - Return the least common multiple between the receiver and anInteger - -odd - Return whether the receiver is odd - - - -File: gst-base.info, Node: Integer-printing, Next: Integer-storing, Prev: Integer-math methods, Up: Integer - -Integer: printing ------------------ - -displayOn: aStream - Print on aStream the base 10 representation of the receiver - -displayString - Return the base 10 representation of the receiver - -printOn: aStream - Print on aStream the base 10 representation of the receiver - -printOn: aStream base: b - Print on aStream the base b representation of the receiver - -printString - Return the base 10 representation of the receiver - -printString: baseInteger - Return the base b representation of the receiver - -printStringRadix: baseInteger - Return the base b representation of the receiver, with BBr in - front of it - - instead - -radix: baseInteger - Return the base b representation of the receiver, with BBr in - front of it. This method is deprecated, use #printStringRadix: - instead. - -storeOn: aStream base: b - Print on aStream Smalltalk code compiling to the receiver, - represented in base b - - - -File: gst-base.info, Node: Integer-storing, Next: Integer-testing functionality, Prev: Integer-printing, Up: Integer - -Integer: storing ----------------- - -storeOn: aStream - Print on aStream the base 10 representation of the receiver - -storeString - Return the base 10 representation of the receiver - - - -File: gst-base.info, Node: Integer-testing functionality, Prev: Integer-storing, Up: Integer - -Integer: testing functionality ------------------------------- - -isInteger - Answer `true'. - -isRational - Answer whether the receiver is rational - true - - - -File: gst-base.info, Node: Interval, Next: LargeArray, Prev: Integer, Up: Base classes - -Interval -======== - -Defined in namespace Smalltalk -Superclass: ArrayedCollection -Category: Collections-Sequenceable - My instances represent ranges of objects, typically Number type - objects. I provide iteration/enumeration messages for producing - all the members that my instance represents. - -* Menu: - -* Interval class-instance creation:: (class) -* Interval-basic:: (instance) -* Interval-printing:: (instance) -* Interval-storing:: (instance) -* Interval-testing:: (instance) - - -File: gst-base.info, Node: Interval class-instance creation, Next: Interval-basic, Up: Interval - -Interval class: instance creation ---------------------------------- - -from: startInteger to: stopInteger - Answer an Interval going from startInteger to the stopInteger, - with a step of 1 - -from: startInteger to: stopInteger by: stepInteger - Answer an Interval going from startInteger to the stopInteger, - with a step of stepInteger - -withAll: aCollection - Answer an Interval containing the same elements as aCollection. - Fail if it is not possible to create one. - - - -File: gst-base.info, Node: Interval-basic, Next: Interval-printing, Prev: Interval class-instance creation, Up: Interval - -Interval: basic ---------------- - -at: index - Answer the index-th element of the receiver. - -at: index put: anObject - This method should not be called for instances of this class. - -collect: aBlock - Evaluate the receiver for each element in aBlock, collect in an - array the result of the evaluations. - -do: aBlock - Evaluate the receiver for each element in aBlock - -reverse - Answer a copy of the receiver with all of its items reversed - -size - Answer the number of elements in the receiver. - -species - Answer `Array'. - - - -File: gst-base.info, Node: Interval-printing, Next: Interval-storing, Prev: Interval-basic, Up: Interval - -Interval: printing ------------------- - -printOn: aStream - Print a representation for the receiver on aStream - - - -File: gst-base.info, Node: Interval-storing, Next: Interval-testing, Prev: Interval-printing, Up: Interval - -Interval: storing ------------------ - -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: Interval-testing, Prev: Interval-storing, Up: Interval - -Interval: testing ------------------ - -= anInterval - Answer whether anInterval is the same interval as the receiver - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: LargeArray, Next: LargeArrayedCollection, Prev: Interval, Up: Base classes - -LargeArray -========== - -Defined in namespace Smalltalk -Superclass: LargeArrayedCollection -Category: Collections-Sequenceable - I am similar to a plain array, but I'm specially designed to save - memory when lots of items are nil. - -* Menu: - -* LargeArray-overridden:: (instance) - - -File: gst-base.info, Node: LargeArray-overridden, Up: LargeArray - -LargeArray: overridden ----------------------- - -newCollection: size - Create an Array of the given size - - - -File: gst-base.info, Node: LargeArrayedCollection, Next: LargeArraySubpart, Prev: LargeArray, Up: Base classes - -LargeArrayedCollection -====================== - -Defined in namespace Smalltalk -Superclass: ArrayedCollection -Category: Collections-Sequenceable - I am an abstract class specially designed to save memory when lots - of items have the same value. - -* Menu: - -* LargeArrayedCollection class-instance creation:: (class) -* LargeArrayedCollection-accessing:: (instance) -* LargeArrayedCollection-basic:: (instance) - - -File: gst-base.info, Node: LargeArrayedCollection class-instance creation, Next: LargeArrayedCollection-accessing, Up: LargeArrayedCollection - -LargeArrayedCollection class: instance creation ------------------------------------------------ - -new: anInteger - Answer a new instance of the receiver, with room for anInteger - elements. - - - -File: gst-base.info, Node: LargeArrayedCollection-accessing, Next: LargeArrayedCollection-basic, Prev: LargeArrayedCollection class-instance creation, Up: LargeArrayedCollection - -LargeArrayedCollection: accessing ---------------------------------- - -at: anIndex - Answer the anIndex-th item of the receiver. - -at: anIndex put: anObject - Replace the anIndex-th item of the receiver with anObject. - -compress - Arrange the representation of the array for maximum memory saving. - - - -File: gst-base.info, Node: LargeArrayedCollection-basic, Prev: LargeArrayedCollection-accessing, Up: LargeArrayedCollection - -LargeArrayedCollection: basic ------------------------------ - -= aLargeArray - Answer whether the receiver and aLargeArray have the same contents - -hash - Answer an hash value for the receiver - -size - Answer the maximum valid index for the receiver - - - -File: gst-base.info, Node: LargeArraySubpart, Next: LargeByteArray, Prev: LargeArrayedCollection, Up: Base classes - -LargeArraySubpart -================= - -Defined in namespace Smalltalk -Superclass: Magnitude -Category: Collections-Sequenceable - This class is an auxiliary class used to store information about a - LargeArrayedCollection's contents. LargeArrayedCollections store - their items non-contiguously in a separate storage object, and use - a SortedCollection to map between indices in the array and indices - in the storage object; instances of this class represent a block of - indices that is stored contiguously in the storage object. - -* Menu: - -* LargeArraySubpart class-instance creation:: (class) -* LargeArraySubpart-accessing:: (instance) -* LargeArraySubpart-comparing:: (instance) -* LargeArraySubpart-modifying:: (instance) - - -File: gst-base.info, Node: LargeArraySubpart class-instance creation, Next: LargeArraySubpart-accessing, Up: LargeArraySubpart - -LargeArraySubpart class: instance creation ------------------------------------------- - -first: first last: last index: index - Answer a LargeArraySubpart which answers first, last, and index - when it is sent (respectively) #first, #last and #firstIndex. - - - -File: gst-base.info, Node: LargeArraySubpart-accessing, Next: LargeArraySubpart-comparing, Prev: LargeArraySubpart class-instance creation, Up: LargeArraySubpart - -LargeArraySubpart: accessing ----------------------------- - -first - Answer the index of the first item of the LargeArrayedCollection - that the receiver refers to. - -first: firstIndex last: lastIndex index: storagePosition - Set up the receiver so that it answers first, last, and index when - it is sent (respectively) #first, #last and #firstIndex. - -firstIndex - Answer the index in the collection's storage object of the first - item of the LargeArrayedCollection that the receiver refers to. - -last - Answer the index of the last item of the LargeArrayedCollection - that the receiver refers to. - -lastIndex - Answer the index in the collection's storage object of the last - item of the LargeArrayedCollection that the receiver refers to. - - - -File: gst-base.info, Node: LargeArraySubpart-comparing, Next: LargeArraySubpart-modifying, Prev: LargeArraySubpart-accessing, Up: LargeArraySubpart - -LargeArraySubpart: comparing ----------------------------- - -< anObject - Answer whether the receiver points to a part of the array that is - before anObject (this makes sense only if the receiver and - anObject are two LargeArraySubparts referring to the same - LargeArrayedCollection). - -<= anObject - Answer whether the receiver points to a part of the array that is - before anObject or starts at the same point (this makes sense only - if the receiver and anObject are two LargeArraySubparts referring - to the same LargeArrayedCollection). - -= anObject - Answer whether the receiver and anObject are equal (assuming that - the receiver and anObject are two LargeArraySubparts referring to - the same LargeArrayedCollection, which the receiver cannot check - for). - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: LargeArraySubpart-modifying, Prev: LargeArraySubpart-comparing, Up: LargeArraySubpart - -LargeArraySubpart: modifying ----------------------------- - -cutAt: position - Answer a new LargeArraySubpart whose lastIndex is position - 1, - and apply a #removeFirst: to the receiver so that the firstIndex - becomes position - -grow - Add one to last and lastIndex - -growBy: numberOfElements - Add numberOfElements to last and lastIndex - -relocateTo: position - Move the firstIndex to position, and the lastIndex accordingly. - -removeFirst: n - Sum n to first and firstIndex, but leave last/lastIndex untouched - -removeLast: n - Subtract n from last and lastIndex, but leave first/firstIndex - untouched - - - -File: gst-base.info, Node: LargeByteArray, Next: LargeInteger, Prev: LargeArraySubpart, Up: Base classes - -LargeByteArray -============== - -Defined in namespace Smalltalk -Superclass: LargeArrayedCollection -Category: Collections-Sequenceable - I am similar to a plain ByteArray, but I'm specially designed to - save memory when lots of items are zero. - -* Menu: - -* LargeByteArray-overridden:: (instance) - - -File: gst-base.info, Node: LargeByteArray-overridden, Up: LargeByteArray - -LargeByteArray: overridden --------------------------- - -costOfNewIndex - Answer the maximum number of consecutive items set to the - defaultElement that can be present in a compressed array. - -defaultElement - Answer the value which is hoped to be the most common in the array - -newCollection: size - Create a ByteArray of the given size - - - -File: gst-base.info, Node: LargeInteger, Next: LargeNegativeInteger, Prev: LargeByteArray, Up: Base classes - -LargeInteger -============ - -Defined in namespace Smalltalk -Superclass: Integer -Category: Language-Data types - I represent a large integer, which has to be stored as a long - sequence of bytes. I have methods to do arithmetics and - comparisons, but I need some help from my children, - LargePositiveInteger and LargeNegativeInteger, to speed them up a - bit. - -* Menu: - -* LargeInteger-arithmetic:: (instance) -* LargeInteger-bit operations:: (instance) -* LargeInteger-built-ins:: (instance) -* LargeInteger-coercion:: (instance) -* LargeInteger-disabled:: (instance) -* LargeInteger-primitive operations:: (instance) -* LargeInteger-testing:: (instance) - - -File: gst-base.info, Node: LargeInteger-arithmetic, Next: LargeInteger-bit operations, Up: LargeInteger - -LargeInteger: arithmetic ------------------------- - -* aNumber - Multiply aNumber and the receiver, answer the result - -+ aNumber - Sum the receiver and aNumber, answer the result - -- aNumber - Sum the receiver and aNumber, answer the result - -/ aNumber - Divide aNumber and the receiver, answer the result (an Integer or - Fraction) - -// aNumber - Divide aNumber and the receiver, answer the result truncated - towards -infinity - -\\ aNumber - Divide aNumber and the receiver, answer the remainder truncated - towards -infinity - -estimatedLog - Answer an estimate of (self abs floorLog: 10) - -negated - Answer the receiver's negated - -quo: aNumber - Divide aNumber and the receiver, answer the result truncated - towards 0 - -rem: aNumber - Divide aNumber and the receiver, answer the remainder truncated - towards 0 - - - -File: gst-base.info, Node: LargeInteger-bit operations, Next: LargeInteger-built-ins, Prev: LargeInteger-arithmetic, Up: LargeInteger - -LargeInteger: bit operations ----------------------------- - -bitAnd: aNumber - Answer the receiver ANDed with aNumber - -bitAt: aNumber - Answer the aNumber-th bit in the receiver, where the LSB is 1 - -bitInvert - Answer the receiver's 1's complement - -bitOr: aNumber - Answer the receiver ORed with aNumber - -bitShift: aNumber - Answer the receiver shifted by aNumber places - -bitXor: aNumber - Answer the receiver XORed with aNumber - - - -File: gst-base.info, Node: LargeInteger-built-ins, Next: LargeInteger-coercion, Prev: LargeInteger-bit operations, Up: LargeInteger - -LargeInteger: built-ins ------------------------ - -at: anIndex - Answer the anIndex-th byte in the receiver's representation - -at: anIndex put: aNumber - Set the anIndex-th byte in the receiver's representation - -digitAt: anIndex - Answer the anIndex-th base-256 digit in the receiver's - representation - -digitAt: anIndex put: aNumber - Set the anIndex-th base-256 digit in the receiver's representation - -digitLength - Answer the number of base-256 digits in the receiver - -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 - -size - Answer the number of indexed instance variable in the receiver - - - -File: gst-base.info, Node: LargeInteger-coercion, Next: LargeInteger-disabled, Prev: LargeInteger-built-ins, Up: LargeInteger - -LargeInteger: coercion ----------------------- - -coerce: aNumber - Truncate the number; if needed, convert it to LargeInteger - representation. - -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: LargeInteger-disabled, Next: LargeInteger-primitive operations, Prev: LargeInteger-coercion, Up: LargeInteger - -LargeInteger: disabled ----------------------- - -asObject - This method always fails. The number of OOPs is far less than the - minimum number represented with a LargeInteger. - -asObjectNoFail - Answer `nil'. - - - -File: gst-base.info, Node: LargeInteger-primitive operations, Next: LargeInteger-testing, Prev: LargeInteger-disabled, Up: LargeInteger - -LargeInteger: primitive operations ----------------------------------- - -basicLeftShift: totalShift - Private - Left shift the receiver by aNumber places - -basicRightShift: totalShift - Private - Right shift the receiver by 'shift' places - -largeNegated - Private - Same as negated, but always answer a LargeInteger - - - -File: gst-base.info, Node: LargeInteger-testing, Prev: LargeInteger-primitive operations, Up: LargeInteger - -LargeInteger: testing ---------------------- - -< aNumber - Answer whether the receiver is smaller than aNumber - -<= aNumber - Answer whether the receiver is smaller than aNumber or equal to it - -= aNumber - Answer whether the receiver and aNumber identify the same number - -> aNumber - Answer whether the receiver is greater than aNumber - ->= aNumber - Answer whether the receiver is greater than aNumber or equal to it - -~= aNumber - Answer whether the receiver and aNumber identify the same number - - - -File: gst-base.info, Node: LargeNegativeInteger, Next: LargePositiveInteger, Prev: LargeInteger, Up: Base classes - -LargeNegativeInteger -==================== - -Defined in namespace Smalltalk -Superclass: LargeInteger -Category: Language-Data types - Just like my brother LargePositiveInteger, I provide a few methods - that allow LargeInteger to determine the sign of a large integer - in a fast way during its calculations. For example, I know that I - am smaller than any LargePositiveInteger - -* Menu: - -* LargeNegativeInteger-converting:: (instance) -* LargeNegativeInteger-numeric testing:: (instance) -* LargeNegativeInteger-reverting to LargePositiveInteger:: (instance) - - -File: gst-base.info, Node: LargeNegativeInteger-converting, Next: LargeNegativeInteger-numeric testing, Up: LargeNegativeInteger - -LargeNegativeInteger: converting --------------------------------- - -asFloatD - Answer the receiver converted to a FloatD - -asFloatE - Answer the receiver converted to a FloatE - -asFloatQ - Answer the receiver converted to a FloatQ - - - -File: gst-base.info, Node: LargeNegativeInteger-numeric testing, Next: LargeNegativeInteger-reverting to LargePositiveInteger, Prev: LargeNegativeInteger-converting, Up: LargeNegativeInteger - -LargeNegativeInteger: numeric testing -------------------------------------- - -abs - Answer the receiver's absolute value. - -negative - Answer whether the receiver is < 0 - -positive - Answer whether the receiver is >= 0 - -sign - Answer the receiver's sign - -strictlyPositive - Answer whether the receiver is > 0 - - - -File: gst-base.info, Node: LargeNegativeInteger-reverting to LargePositiveInteger, Prev: LargeNegativeInteger-numeric testing, Up: LargeNegativeInteger - -LargeNegativeInteger: reverting to LargePositiveInteger -------------------------------------------------------- - -+ aNumber - Sum the receiver and aNumber, answer the result - -- aNumber - Sum the receiver and aNumber, answer the result - -gcd: anInteger - Return the greatest common divisor between the receiver and - anInteger - -highBit - Answer the receiver's highest bit's index - - - -File: gst-base.info, Node: LargePositiveInteger, Next: LargeWordArray, Prev: LargeNegativeInteger, Up: Base classes - -LargePositiveInteger -==================== - -Defined in namespace Smalltalk -Superclass: LargeInteger -Category: Language-Data types - Just like my brother LargeNegativeInteger, I provide a few methods - that allow LargeInteger to determine the sign of a large integer - in a fast way during its calculations. For example, I know that I - am larger than any LargeNegativeInteger. In addition I implement - the guts of arbitrary precision arithmetic. - -* Menu: - -* LargePositiveInteger-arithmetic:: (instance) -* LargePositiveInteger-converting:: (instance) -* LargePositiveInteger-helper byte-level methods:: (instance) -* LargePositiveInteger-numeric testing:: (instance) -* LargePositiveInteger-primitive operations:: (instance) - - -File: gst-base.info, Node: LargePositiveInteger-arithmetic, Next: LargePositiveInteger-converting, Up: LargePositiveInteger - -LargePositiveInteger: arithmetic --------------------------------- - -+ aNumber - Sum the receiver and aNumber, answer the result - -- aNumber - Subtract aNumber from the receiver, answer the result - -gcd: anInteger - Calculate the GCD between the receiver and anInteger - -highBit - Answer the receiver's highest bit's index - - - -File: gst-base.info, Node: LargePositiveInteger-converting, Next: LargePositiveInteger-helper byte-level methods, Prev: LargePositiveInteger-arithmetic, Up: LargePositiveInteger - -LargePositiveInteger: converting --------------------------------- - -asFloatD - Answer the receiver converted to a FloatD - -asFloatE - Answer the receiver converted to a FloatE - -asFloatQ - Answer the receiver converted to a FloatQ - -replace: string withStringBase: radix - Return in a String str the base radix representation of the - receiver. - - - -File: gst-base.info, Node: LargePositiveInteger-helper byte-level methods, Next: LargePositiveInteger-numeric testing, Prev: LargePositiveInteger-converting, Up: LargePositiveInteger - -LargePositiveInteger: helper byte-level methods ------------------------------------------------ - -bytes: byteArray1 from: j compare: byteArray2 - Private - Answer the sign of byteArray2 - byteArray1; the j-th - byte of byteArray1 is compared with the first of byteArray2, the - j+1-th with the second, and so on. - -bytes: byteArray1 from: j subtract: byteArray2 - Private - Sutract the bytes in byteArray2 from those in byteArray1 - -bytes: bytes multiply: anInteger - Private - Multiply the bytes in bytes by anInteger, which must be - < 255. Put the result back in bytes. - -bytesLeftShift: aByteArray - Private - Left shift by 1 place the bytes in aByteArray - -bytesLeftShift: aByteArray big: totalShift - Private - Left shift the bytes in aByteArray by totalShift places - -bytesLeftShift: aByteArray n: shift - Private - Left shift by shift places the bytes in aByteArray - (shift <= 7) - -bytesRightShift: aByteArray big: totalShift - Private - Right shift the bytes in aByteArray by totalShift places - -bytesRightShift: bytes n: aNumber - Private - Right shift the bytes in `bytes' by 'aNumber' places - (shift <= 7) - -bytesTrailingZeros: bytes - Private - Answer the number of trailing zero bits in the receiver - -primDivide: rhs - Private - Implements Knuth's divide and correct algorithm from - `Seminumerical Algorithms' 3rd Edition, section 4.3.1 (which is - basically an enhanced version of the divide `algorithm' for - two-digit divisors which is taught in primary school!!!) - - - -File: gst-base.info, Node: LargePositiveInteger-numeric testing, Next: LargePositiveInteger-primitive operations, Prev: LargePositiveInteger-helper byte-level methods, Up: LargePositiveInteger - -LargePositiveInteger: numeric testing -------------------------------------- - -abs - Answer the receiver's absolute value - -negative - Answer whether the receiver is < 0 - -positive - Answer whether the receiver is >= 0 - -sign - Answer the receiver's sign - -strictlyPositive - Answer whether the receiver is > 0 - - - -File: gst-base.info, Node: LargePositiveInteger-primitive operations, Prev: LargePositiveInteger-numeric testing, Up: LargePositiveInteger - -LargePositiveInteger: primitive operations ------------------------------------------- - -divide: aNumber using: aBlock - Private - Divide the receiver by aNumber (unsigned division). - Evaluate aBlock passing the result ByteArray, the remainder - ByteArray, and whether the division had a remainder - -isSmall - Private - Answer whether the receiver is small enough to employ - simple scalar algorithms for division and multiplication - -multiply: aNumber - Private - Multiply the receiver by aNumber (unsigned multiply) - - - -File: gst-base.info, Node: LargeWordArray, Next: LargeZeroInteger, Prev: LargePositiveInteger, Up: Base classes - -LargeWordArray -============== - -Defined in namespace Smalltalk -Superclass: LargeArrayedCollection -Category: Collections-Sequenceable - I am similar to a plain WordArray, but I'm specially designed to - save memory when lots of items are zero. - -* Menu: - -* LargeWordArray-overridden:: (instance) - - -File: gst-base.info, Node: LargeWordArray-overridden, Up: LargeWordArray - -LargeWordArray: overridden --------------------------- - -defaultElement - Answer the value which is hoped to be the most common in the array - -newCollection: size - Create a WordArray of the given size - - - -File: gst-base.info, Node: LargeZeroInteger, Next: Link, Prev: LargeWordArray, Up: Base classes - -LargeZeroInteger -================ - -Defined in namespace Smalltalk -Superclass: LargePositiveInteger -Category: Language-Data types - I am quite a strange class. Indeed, the concept of a "large - integer" that is zero is a weird one. Actually my only instance is - zero but is represented like LargeIntegers, has the same - generality as LargeIntegers, and so on. That only instance is - stored in the class variable Zero, and is used in arithmetical - methods, when we have to coerce a parameter that is zero. - -* Menu: - -* LargeZeroInteger-accessing:: (instance) -* LargeZeroInteger-arithmetic:: (instance) -* LargeZeroInteger-numeric testing:: (instance) -* LargeZeroInteger-printing:: (instance) - - -File: gst-base.info, Node: LargeZeroInteger-accessing, Next: LargeZeroInteger-arithmetic, Up: LargeZeroInteger - -LargeZeroInteger: accessing ---------------------------- - -at: anIndex - Answer `0'. - -hash - Answer `0'. - -size - Answer `0'. - - - -File: gst-base.info, Node: LargeZeroInteger-arithmetic, Next: LargeZeroInteger-numeric testing, Prev: LargeZeroInteger-accessing, Up: LargeZeroInteger - -LargeZeroInteger: arithmetic ----------------------------- - -* aNumber - Multiply aNumber and the receiver, answer the result - -+ aNumber - Sum the receiver and aNumber, answer the result - -- aNumber - Subtract aNumber from the receiver, answer the result - -/ aNumber - Divide aNumber and the receiver, answer the result (an Integer or - Fraction) - -// aNumber - Divide aNumber and the receiver, answer the result truncated - towards -infinity - -\\ aNumber - Divide aNumber and the receiver, answer the remainder truncated - towards -infinity - -quo: aNumber - Divide aNumber and the receiver, answer the result truncated - towards 0 - -rem: aNumber - Divide aNumber and the receiver, answer the remainder truncated - towards 0 - - - -File: gst-base.info, Node: LargeZeroInteger-numeric testing, Next: LargeZeroInteger-printing, Prev: LargeZeroInteger-arithmetic, Up: LargeZeroInteger - -LargeZeroInteger: numeric testing ---------------------------------- - -sign - Answer the receiver's sign - -strictlyPositive - Answer whether the receiver is > 0 - - - -File: gst-base.info, Node: LargeZeroInteger-printing, Prev: LargeZeroInteger-numeric testing, Up: LargeZeroInteger - -LargeZeroInteger: printing --------------------------- - -replace: str withStringBase: radix - Return in a string the base radix representation of the receiver. - - - -File: gst-base.info, Node: Link, Next: LinkedList, Prev: LargeZeroInteger, Up: Base classes - -Link -==== - -Defined in namespace Smalltalk -Superclass: Object -Category: Collections-Sequenceable - I represent simple linked lists. Generally, I am not used by - myself, but rather a subclass adds other instance variables that - hold the information for each node, and I hold the glue that keeps - them together. - -* Menu: - -* Link class-instance creation:: (class) -* Link-basic:: (instance) -* Link-iteration:: (instance) - - -File: gst-base.info, Node: Link class-instance creation, Next: Link-basic, Up: Link - -Link class: instance creation ------------------------------ - -nextLink: aLink - Create an instance with the given next link - - - -File: gst-base.info, Node: Link-basic, Next: Link-iteration, Prev: Link class-instance creation, Up: Link - -Link: basic ------------ - -nextLink - Answer the next item in the list - -nextLink: aLink - Set the next item in the list - - - -File: gst-base.info, Node: Link-iteration, Prev: Link-basic, Up: Link - -Link: iteration ---------------- - -at: index - Retrieve a node (instance of Link) that is at a distance of `index' - after the receiver. - -at: index put: object - This method should not be called for instances of this class. - -do: aBlock - Evaluate aBlock for each element in the list - -size - Answer the number of elements in the list. Warning: this is O(n) - - - -File: gst-base.info, Node: LinkedList, Next: LookupKey, Prev: Link, Up: Base classes - -LinkedList -========== - -Defined in namespace Smalltalk -Superclass: SequenceableCollection -Category: Collections-Sequenceable - I provide methods that access and manipulate linked lists. I - assume that the elements of the linked list are subclasses of - Link, because I use the methods that class Link supplies to - implement my methods. - -* Menu: - -* LinkedList-accessing:: (instance) -* LinkedList-adding:: (instance) -* LinkedList-enumerating:: (instance) -* LinkedList-testing:: (instance) - - -File: gst-base.info, Node: LinkedList-accessing, Next: LinkedList-adding, Up: LinkedList - -LinkedList: accessing ---------------------- - -at: index - Return the element that is index into the linked list. - -at: index put: object - This method should not be called for instances of this class. - - - -File: gst-base.info, Node: LinkedList-adding, Next: LinkedList-enumerating, Prev: LinkedList-accessing, Up: LinkedList - -LinkedList: adding ------------------- - -add: aLink - Add aLink at the end of the list; return aLink. - -addFirst: aLink - Add aLink at the head of the list; return aLink. - -addLast: aLink - Add aLink at then end of the list; return aLink. - -remove: aLink ifAbsent: aBlock - Remove aLink from the list and return it, or invoke aBlock if it's - not found in the list. - -removeFirst - Remove the first element from the list and return it, or error if - the list is empty. - -removeLast - Remove the final element from the list and return it, or error if - the list is empty. - - - -File: gst-base.info, Node: LinkedList-enumerating, Next: LinkedList-testing, Prev: LinkedList-adding, Up: LinkedList - -LinkedList: enumerating ------------------------ - -do: aBlock - Enumerate each object in the list, passing it to aBlock (actual - behavior might depend on the subclass of Link that is being used). - - - -File: gst-base.info, Node: LinkedList-testing, Prev: LinkedList-enumerating, Up: LinkedList - -LinkedList: testing -------------------- - -isEmpty - Returns true if the list contains no members - -notEmpty - Returns true if the list contains at least a member - -size - Answer the number of elements in the list. Warning: this is O(n) - - - -File: gst-base.info, Node: LookupKey, Next: LookupTable, Prev: LinkedList, Up: Base classes - -LookupKey -========= - -Defined in namespace Smalltalk -Superclass: Magnitude -Category: Language-Data types - I represent a key for looking up entries in a data structure. - Subclasses of me, such as Association, typically represent - dictionary entries. - -* Menu: - -* LookupKey class-basic:: (class) -* LookupKey-accessing:: (instance) -* LookupKey-printing:: (instance) -* LookupKey-storing:: (instance) -* LookupKey-testing:: (instance) - - -File: gst-base.info, Node: LookupKey class-basic, Next: LookupKey-accessing, Up: LookupKey - -LookupKey class: basic ----------------------- - -key: aKey - Answer a new instance of the receiver with the given key and value - - - -File: gst-base.info, Node: LookupKey-accessing, Next: LookupKey-printing, Prev: LookupKey class-basic, Up: LookupKey - -LookupKey: accessing --------------------- - -key - Answer the receiver's key - -key: aKey - Set the receiver's key to aKey - - - -File: gst-base.info, Node: LookupKey-printing, Next: LookupKey-storing, Prev: LookupKey-accessing, Up: LookupKey - -LookupKey: printing -------------------- - -printOn: aStream - Put on aStream a representation of the receiver - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-8 smalltalk-2.1.7/doc/gst-base.info-8 --- smalltalk-2.1.6/doc/gst-base.info-8 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-8 1970-01-01 01:00:00.000000000 +0100 @@ -1,1810 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: LookupKey-storing, Next: LookupKey-testing, Prev: LookupKey-printing, Up: LookupKey - -LookupKey: storing ------------------- - -storeOn: aStream - Put on aStream some Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: LookupKey-testing, Prev: LookupKey-storing, Up: LookupKey - -LookupKey: testing ------------------- - -< aLookupKey - Answer whether the receiver's key is less than aLookupKey's - -= aLookupKey - Answer whether the receiver's key and value are the same as - aLookupKey's, or false if aLookupKey is not an instance of the - receiver - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: LookupTable, Next: Magnitude, Prev: LookupKey, Up: Base classes - -LookupTable -=========== - -Defined in namespace Smalltalk -Superclass: Dictionary -Category: Collections-Keyed - I am similar to Dictionary, except that my representation is - different (more efficient, but not useful to store a variable - binding). I use the object equality comparison message #= to - determine equivalence of indices. - -* Menu: - -* LookupTable class-instance creation:: (class) -* LookupTable-accessing:: (instance) -* LookupTable-copying:: (instance) -* LookupTable-enumerating:: (instance) -* LookupTable-hashing:: (instance) -* LookupTable-rehashing:: (instance) -* LookupTable-removing:: (instance) -* LookupTable-storing:: (instance) - - -File: gst-base.info, Node: LookupTable class-instance creation, Next: LookupTable-accessing, Up: LookupTable - -LookupTable class: instance creation ------------------------------------- - -new - Create a new LookupTable with a default size - - - -File: gst-base.info, Node: LookupTable-accessing, Next: LookupTable-copying, Prev: LookupTable class-instance creation, Up: LookupTable - -LookupTable: accessing ----------------------- - -add: anAssociation - Add the anAssociation key to the receiver - -associationAt: key ifAbsent: aBlock - Answer the key/value Association for the given key. Evaluate aBlock - (answering the result) if the key is not found - -at: key ifAbsent: aBlock - Answer the value associated to the given key, or the result of - evaluating aBlock if the key is not found - -at: aKey ifPresent: aBlock - If aKey is absent, answer nil. Else, evaluate aBlock passing the - associated value and answer the result of the invocation - -at: key put: value - Store value as associated to the given key - - - -File: gst-base.info, Node: LookupTable-copying, Next: LookupTable-enumerating, Prev: LookupTable-accessing, Up: LookupTable - -LookupTable: copying --------------------- - -deepCopy - Returns a deep copy of the receiver (the instance variables are - copies of the receiver's instance variables) - - - -File: gst-base.info, Node: LookupTable-enumerating, Next: LookupTable-hashing, Prev: LookupTable-copying, Up: LookupTable - -LookupTable: enumerating ------------------------- - -associationsDo: aBlock - Pass each association in the LookupTable to aBlock - -keysAndValuesDo: aBlock - Pass each key/value pair in the LookupTable as two distinct - parameters to aBlock - - - -File: gst-base.info, Node: LookupTable-hashing, Next: LookupTable-rehashing, Prev: LookupTable-enumerating, Up: LookupTable - -LookupTable: hashing --------------------- - -hash - Answer the hash value for the receiver - - - -File: gst-base.info, Node: LookupTable-rehashing, Next: LookupTable-removing, Prev: LookupTable-hashing, Up: LookupTable - -LookupTable: rehashing ----------------------- - -rehash - Rehash the receiver - - - -File: gst-base.info, Node: LookupTable-removing, Next: LookupTable-storing, Prev: LookupTable-rehashing, Up: LookupTable - -LookupTable: removing ---------------------- - -remove: anAssociation - Remove anAssociation's key from the dictionary - -remove: anAssociation ifAbsent: aBlock - Remove anAssociation's key from the dictionary - -removeKey: key ifAbsent: aBlock - Remove the passed key from the LookupTable, answer the result of - evaluating aBlock if it is not found - - - -File: gst-base.info, Node: LookupTable-storing, Prev: LookupTable-removing, Up: LookupTable - -LookupTable: storing --------------------- - -storeOn: aStream - Print Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: Magnitude, Next: MappedCollection, Prev: LookupTable, Up: Base classes - -Magnitude -========= - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Data types - I am an abstract class. My objects represent things that are - discrete and map to a number line. My instances can be compared - with < and >. - -* Menu: - -* Magnitude-basic:: (instance) -* Magnitude-misc methods:: (instance) - - -File: gst-base.info, Node: Magnitude-basic, Next: Magnitude-misc methods, Up: Magnitude - -Magnitude: basic ----------------- - -< aMagnitude - Answer whether the receiver is less than aMagnitude - -<= aMagnitude - Answer whether the receiver is less than or equal to aMagnitude - -= aMagnitude - Answer whether the receiver is equal to aMagnitude - -> aMagnitude - Answer whether the receiver is greater than aMagnitude - ->= aMagnitude - Answer whether the receiver is greater than or equal to aMagnitude - - - -File: gst-base.info, Node: Magnitude-misc methods, Prev: Magnitude-basic, Up: Magnitude - -Magnitude: misc methods ------------------------ - -between: min and: max - Returns true if object is inclusively between min and max. - -max: aMagnitude - Returns the greatest object between the receiver and aMagnitude - -min: aMagnitude - Returns the least object between the receiver and aMagnitude - - - -File: gst-base.info, Node: MappedCollection, Next: Memory, Prev: Magnitude, Up: Base classes - -MappedCollection -================ - -Defined in namespace Smalltalk -Superclass: Collection -Category: Collections-Keyed - I represent collections of objects that are indirectly indexed by - names. There are really two collections involved: domain and a - map. The map maps between external names and indices into domain, - which contains the real association. In order to work properly, - the domain must be an instance of a subclass of - SequenceableCollection, and the map must be an instance of - Dictionary, or of a subclass of SequenceableCollection. - - As an example of using me, consider implenting a Dictionary whose - elements are indexed. The domain would be a SequenceableCollection - with n elements, the map a Dictionary associating each key to an - index in the domain. To access by key, to perform enumeration, - etc. you would ask an instance of me; to access by index, you - would access the domain directly. - - Another idea could be to implement row access or column access to - a matrix implemented as a single n*m Array: the Array would be the - domain, while the map would be an Interval. - - -* Menu: - -* MappedCollection class-instance creation:: (class) -* MappedCollection-basic:: (instance) - - -File: gst-base.info, Node: MappedCollection class-instance creation, Next: MappedCollection-basic, Up: MappedCollection - -MappedCollection class: instance creation ------------------------------------------ - -collection: aCollection map: aMap - Answer a new MappedCollection using the given domain (aCollection) - and map - -new - This method should not be used; instead, use #collection:map: to - create MappedCollection. - - - -File: gst-base.info, Node: MappedCollection-basic, Prev: MappedCollection class-instance creation, Up: MappedCollection - -MappedCollection: basic ------------------------ - -add: anObject - This method should not be called for instances of this class. - -at: key - Answer the object at the given key - -at: key put: value - Store value at the given key - -collect: aBlock - Answer a MappedCollection with a copy of the receiver's map and a - domain obtained by passing each object through aBlock - -contents - Answer a bag with the receiver's values - -do: aBlock - Evaluate aBlock for each object - -domain - Answer the domain - -map - Answer the map - -reject: aBlock - Answer the objects in the domain for which aBlock returns false - -select: aBlock - Answer the objects in the domain for which aBlock returns true - -size - Answer the receiver's size - - - -File: gst-base.info, Node: Memory, Next: Message, Prev: MappedCollection, Up: Base classes - -Memory -====== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - I provide access to actual machine addresses of OOPs and objects. - I have no instances; you send messages to my class to map between - an object and the address of its OOP or object. In addition I - provide direct memory access with different C types (ints, chars, - OOPs, floats,...). - -* Menu: - -* Memory class-accessing:: (class) - - -File: gst-base.info, Node: Memory class-accessing, Up: Memory - -Memory class: accessing ------------------------ - -at: anAddress - Access the Smalltalk object (OOP) at the given address. - -at: anAddress put: aValue - Store a pointer (OOP) to the Smalltalk object identified by `value' - at the given address. - -bigEndian - Answer whether we're running on a big- or little-endian system. - -charAt: anAddress - Access the C char at the given address. The value is returned as a - Smalltalk Character. - -charAt: anAddress put: aValue - Store as a C char the Smalltalk Character or Integer object - identified by `value', at the given address, using sizeof(char) - bytes - i.e. 1 byte. - -deref: anAddress - Access the C int pointed by the given address - -doubleAt: anAddress - Access the C double at the given address. - -doubleAt: anAddress put: aValue - Store the Smalltalk Float object identified by `value', at the - given address, writing it like a C double. - -floatAt: anAddress - Access the C float at the given address. - -floatAt: anAddress put: aValue - Store the Smalltalk Float object identified by `value', at the - given address, writing it like a C float. - -intAt: anAddress - Access the C int at the given address. - -intAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(int) bytes. - -longAt: anAddress - Access the C long int at the given address. - -longAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(long) bytes. - -shortAt: anAddress - Access the C short int at the given address. - -shortAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(short) bytes. - -stringAt: anAddress - Access the string pointed by the C `char *' at the given given - address. - -stringAt: anAddress put: aValue - Store the Smalltalk String object identified by `value', at the - given address in memory, writing it like a *FRESHLY ALLOCATED* C - string. It is the caller's responsibility to free it if necessary. - -ucharAt: anAddress put: aValue - Store as a C char the Smalltalk Character or Integer object - identified by `value', at the given address, using sizeof(char) - bytes - i.e. 1 byte. - -uintAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(int) bytes. - -ulongAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(long) bytes. - -unsignedCharAt: anAddress - Access the C unsigned char at the given address. The value is - returned as a Smalltalk Character. - -unsignedCharAt: anAddress put: aValue - Store as a C char the Smalltalk Character or Integer object - identified by `value', at the given address, using sizeof(char) - bytes - i.e. 1 byte. - -unsignedIntAt: anAddress - Access the C unsigned int at the given address. - -unsignedIntAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(int) bytes. - -unsignedLongAt: anAddress - Access the C unsigned long int at the given address. - -unsignedLongAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(long) bytes. - -unsignedShortAt: anAddress - Access the C unsigned short int at the given address. - -unsignedShortAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(short) bytes. - -ushortAt: anAddress put: aValue - Store the Smalltalk Integer object identified by `value', at the - given address, using sizeof(short) bytes. - - - -File: gst-base.info, Node: Message, Next: MessageNotUnderstood, Prev: Memory, Up: Base classes - -Message -======= - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - I am a virtually existent class. By that I mean that logically - instances of my class are created whenever a message is sent to an - object, but in reality my instances are only created to hold a - message that has failed, so that error reporting methods can - examine the sender and arguments. - -* Menu: - -* Message class-creating instances:: (class) -* Message-accessing:: (instance) -* Message-basic:: (instance) - - -File: gst-base.info, Node: Message class-creating instances, Next: Message-accessing, Up: Message - -Message class: creating instances ---------------------------------- - -selector: aSymbol arguments: anArray - Create a new Message with the given selector and arguments - - - -File: gst-base.info, Node: Message-accessing, Next: Message-basic, Prev: Message class-creating instances, Up: Message - -Message: accessing ------------------- - -argument - Answer the first of the receiver's arguments - -arguments - Answer the receiver's arguments - -arguments: anArray - Set the receiver's arguments - -selector - Answer the receiver's selector - -selector: aSymbol - Set the receiver's selector - - - -File: gst-base.info, Node: Message-basic, Prev: Message-accessing, Up: Message - -Message: basic --------------- - -printOn: aStream - Print a representation of the receiver on aStream - -reinvokeFor: aReceiver - Resend to aReceiver - present for compatibility - -sendTo: aReceiver - Resend to aReceiver - - - -File: gst-base.info, Node: MessageNotUnderstood, Next: Metaclass, Prev: Message, Up: Base classes - -MessageNotUnderstood -==================== - -Defined in namespace Smalltalk -Superclass: Halt -Category: Language-Exceptions - MessageNotUnderstood represents an error during message lookup. - Signaling it is the default action of the #doesNotUnderstand: - handler - -* Menu: - -* MessageNotUnderstood-accessing:: (instance) -* MessageNotUnderstood-description:: (instance) - - -File: gst-base.info, Node: MessageNotUnderstood-accessing, Next: MessageNotUnderstood-description, Up: MessageNotUnderstood - -MessageNotUnderstood: accessing -------------------------------- - -message - Answer the message that wasn't understood - -receiver - Answer the object to whom the message send was directed - - - -File: gst-base.info, Node: MessageNotUnderstood-description, Prev: MessageNotUnderstood-accessing, Up: MessageNotUnderstood - -MessageNotUnderstood: description ---------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-base.info, Node: Metaclass, Next: MethodContext, Prev: MessageNotUnderstood, Up: Base classes - -Metaclass -========= - -Defined in namespace Smalltalk -Superclass: ClassDescription -Category: Language-Implementation - I am the root of the class hierarchy. My instances are - metaclasses, one for each real class. My instances have a single - instance, which they hold onto, which is the class that they are - the metaclass of. I provide methods for creation of actual class - objects from metaclass object, and the creation of metaclass - objects, which are my instances. If this is confusing to you, it - should be...the Smalltalk metaclass system is strange and complex. - -* Menu: - -* Metaclass class-instance creation:: (class) -* Metaclass-accessing:: (instance) -* Metaclass-basic:: (instance) -* Metaclass-delegation:: (instance) -* Metaclass-filing:: (instance) -* Metaclass-printing:: (instance) -* Metaclass-testing functionality:: (instance) - - -File: gst-base.info, Node: Metaclass class-instance creation, Next: Metaclass-accessing, Up: Metaclass - -Metaclass class: instance creation ----------------------------------- - -subclassOf: superMeta - Answer a new metaclass representing a subclass of superMeta - - - -File: gst-base.info, Node: Metaclass-accessing, Next: Metaclass-basic, Prev: Metaclass class-instance creation, Up: Metaclass - -Metaclass: accessing --------------------- - -instanceClass - Answer the only instance of the metaclass - -primaryInstance - Answer the only instance of the metaclass - present for - compatibility - -soleInstance - Answer the only instance of the metaclass - present for - compatibility - - - -File: gst-base.info, Node: Metaclass-basic, Next: Metaclass-delegation, Prev: Metaclass-accessing, Up: Metaclass - -Metaclass: basic ----------------- - -instanceVariableNames: classInstVarNames - Set the class-instance variables for the receiver to be those in - classInstVarNames - -name: newName - environment: aNamespace subclassOf: superclass - instanceVariableNames: stringOfInstVarNames variable: - variableBoolean words: wordBoolean pointers: pointerBoolean - classVariableNames: stringOfClassVarNames - poolDictionaries: stringOfPoolNames category: categoryName - Private - create a full featured class and install it, or change an - existing one - -newMeta: className - environment: aNamespace subclassOf: superclass - instanceVariableNames: stringOfInstVarNames variable: - variableBoolean words: wordBoolean pointers: pointerBoolean - classVariableNames: stringOfClassVarNames - poolDictionaries: stringOfPoolNames category: categoryName - Private - create a full featured class and install it - - - -File: gst-base.info, Node: Metaclass-delegation, Next: Metaclass-filing, Prev: Metaclass-basic, Up: Metaclass - -Metaclass: delegation ---------------------- - -addClassVarName: aString - Add a class variable with the given name to the class pool - dictionary - -addSharedPool: aDictionary - Add the given shared pool to the list of the class' pool - dictionaries - -allClassVarNames - Answer the names of the variables in the receiver's class pool - dictionary and in each of the superclasses' class pool dictionaries - -allSharedPools - Return the names of the shared pools defined by the class and any - of its superclasses - -category - Answer the class category - -classPool - Answer the class pool dictionary - -classVarNames - Answer the names of the variables in the class pool dictionary - -comment - Answer the class comment - -debuggerClass - Answer the debugger class that was set in the instance class - -environment - Answer the namespace in which the receiver is implemented - -name - Answer the class name - it has none, actually - -removeClassVarName: aString - Removes the class variable from the class, error if not present, or - still in use. - -removeSharedPool: aDictionary - Remove the given dictionary to the list of the class' pool - dictionaries - -sharedPools - Return the names of the shared pools defined by the class - - - -File: gst-base.info, Node: Metaclass-filing, Next: Metaclass-printing, Prev: Metaclass-delegation, Up: Metaclass - -Metaclass: filing ------------------ - -fileOutOn: aFileStream - File out complete class description: class definition, class and - instance methods - - - -File: gst-base.info, Node: Metaclass-printing, Next: Metaclass-testing functionality, Prev: Metaclass-filing, Up: Metaclass - -Metaclass: printing -------------------- - -nameIn: aNamespace - Answer the class name when the class is referenced from aNamespace. - -printOn: aStream - Print a represention of the receiver on aStream - -printOn: aStream in: aNamespace - Print on aStream the class name when the class is referenced from - aNamespace. - -storeOn: aStream - Store Smalltalk code compiling to the receiver on aStream - - - -File: gst-base.info, Node: Metaclass-testing functionality, Prev: Metaclass-printing, Up: Metaclass - -Metaclass: testing functionality --------------------------------- - -asClass - Answer `instanceClass'. - -isMetaclass - Answer `true'. - - - -File: gst-base.info, Node: MethodContext, Next: MethodDictionary, Prev: Metaclass, Up: Base classes - -MethodContext -============= - -Defined in namespace Smalltalk -Superclass: ContextPart -Category: Language-Implementation - My instances represent an actively executing method. They record - various bits of information about the execution environment, and - contain the execution stack. - -* Menu: - -* MethodContext-accessing:: (instance) -* MethodContext-printing:: (instance) - - -File: gst-base.info, Node: MethodContext-accessing, Next: MethodContext-printing, Up: MethodContext - -MethodContext: accessing ------------------------- - -home - Answer the MethodContext to which the receiver refers (i.e. the - receiver itself) - -isBlock - Answer whether the receiver is a block context - - block - -isDisabled - Answers whether the receiver has actually ended execution and will - be skipped when doing a return. BlockContexts are removed from the - chain whenever a non-local return is done, but MethodContexts need - to stay there in case there is a non-local return from the #ensure: - block. - -isEnvironment - To create a valid execution environment for the interpreter even - before it starts, GST creates a fake context whose selector is nil - and which can be used as a marker for the current execution - environment. Answer whether the receiver is that kind of context. - -isUnwind - Answers whether the context must continue execution even after a - non-local return (a return from the enclosing method of a block, or - a call to the #continue: method of ContextPart). Such contexts are - created only by #ensure:. - -sender - Return the context from which the receiver was sent - - - -File: gst-base.info, Node: MethodContext-printing, Prev: MethodContext-accessing, Up: MethodContext - -MethodContext: printing ------------------------ - -printOn: aStream - Print a representation for the receiver on aStream - - - -File: gst-base.info, Node: MethodDictionary, Next: MethodInfo, Prev: MethodContext, Up: Base classes - -MethodDictionary -================ - -Defined in namespace Smalltalk -Superclass: LookupTable -Category: Language-Implementation - I am similar to an IdentityDictionary, except that removal and - rehashing operations inside my instances look atomic to the - interpreter. - -* Menu: - -* MethodDictionary-adding:: (instance) -* MethodDictionary-rehashing:: (instance) -* MethodDictionary-removing:: (instance) - - -File: gst-base.info, Node: MethodDictionary-adding, Next: MethodDictionary-rehashing, Up: MethodDictionary - -MethodDictionary: adding ------------------------- - -at: key put: value - Store value as associated to the given key - - - -File: gst-base.info, Node: MethodDictionary-rehashing, Next: MethodDictionary-removing, Prev: MethodDictionary-adding, Up: MethodDictionary - -MethodDictionary: rehashing ---------------------------- - -rehash - Rehash the receiver - - - -File: gst-base.info, Node: MethodDictionary-removing, Prev: MethodDictionary-rehashing, Up: MethodDictionary - -MethodDictionary: removing --------------------------- - -remove: anAssociation - Remove anAssociation's key from the dictionary - -removeKey: anElement ifAbsent: aBlock - Remove the passed key from the dictionary, answer the result of - evaluating aBlock if it is not found - - - -File: gst-base.info, Node: MethodInfo, Next: Namespace, Prev: MethodDictionary, Up: Base classes - -MethodInfo -========== - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - I provide information about particular methods. I can produce the - category that a method was filed under, and can be used to access - the source code of the method. - -* Menu: - -* MethodInfo-accessing:: (instance) -* MethodInfo-equality:: (instance) - - -File: gst-base.info, Node: MethodInfo-accessing, Next: MethodInfo-equality, Up: MethodInfo - -MethodInfo: accessing ---------------------- - -category - Answer the method category - -category: aCategory - Set the method category - -methodClass - Answer the class in which the method is defined - -methodClass: aClass - Set the class in which the method is defined - -selector - Answer the selector through which the method is called - -selector: aSymbol - Set the selector through which the method is called - -sourceCode - Answer a FileSegment or String or nil containing the method source - code - -sourceFile - Answer the name of the file where the method source code is - -sourcePos - Answer the starting position of the method source code in the - sourceFile - -sourceString - Answer a String containing the method source code - -stripSourceCode - Remove the reference to the source code for the method - - - -File: gst-base.info, Node: MethodInfo-equality, Prev: MethodInfo-accessing, Up: MethodInfo - -MethodInfo: equality --------------------- - -= aMethodInfo - Compare the receiver and aMethodInfo, answer whether they're equal - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: Namespace, Next: NetClients.URIResolver, Prev: MethodInfo, Up: Base classes - -Namespace -========= - -Defined in namespace Smalltalk -Superclass: AbstractNamespace -Category: Language-Implementation - I am a Namespace that has a super-namespace. - -* Menu: - -* Namespace class-accessing:: (class) -* Namespace class-disabling instance creation:: (class) -* Namespace class-initialization:: (class) -* Namespace-accessing:: (instance) -* Namespace-namespace hierarchy:: (instance) -* Namespace-overrides for superspaces:: (instance) -* Namespace-printing:: (instance) -* Namespace-testing:: (instance) - - -File: gst-base.info, Node: Namespace class-accessing, Next: Namespace class-disabling instance creation, Up: Namespace - -Namespace class: accessing --------------------------- - -current - Answer the current namespace - -current: aNamespaceOrClass - Set the current namespace to be aNamespace or, if it is a class, - its class pool (the Dictionary that holds class variables). - - - -File: gst-base.info, Node: Namespace class-disabling instance creation, Next: Namespace class-initialization, Prev: Namespace class-accessing, Up: Namespace - -Namespace class: disabling instance creation --------------------------------------------- - -new - Disabled - use #addSubspace: to create instances - -new: size - Disabled - use #addSubspace: to create instances - - - -File: gst-base.info, Node: Namespace class-initialization, Next: Namespace-accessing, Prev: Namespace class-disabling instance creation, Up: Namespace - -Namespace class: initialization -------------------------------- - -initialize - This actually is not needed, the job could be done in dict.c - (function namespace_new). But I'm lazy and I prefer to rely on - the Smalltalk implementation of IdentitySet. - - - -File: gst-base.info, Node: Namespace-accessing, Next: Namespace-namespace hierarchy, Prev: Namespace class-initialization, Up: Namespace - -Namespace: accessing --------------------- - -inheritedKeys - Answer a Set of all the keys in the receiver and its superspaces - - - -File: gst-base.info, Node: Namespace-namespace hierarchy, Next: Namespace-overrides for superspaces, Prev: Namespace-accessing, Up: Namespace - -Namespace: namespace hierarchy ------------------------------- - -siblings - Answer all the other namespaces that inherit from the receiver's - superspace. - -siblingsDo: aBlock - Evaluate aBlock once for each of the other namespaces that inherit - from the receiver's superspace, passing the namespace as a - parameter. - - - -File: gst-base.info, Node: Namespace-overrides for superspaces, Next: Namespace-printing, Prev: Namespace-namespace hierarchy, Up: Namespace - -Namespace: overrides for superspaces ------------------------------------- - -associationAt: key ifAbsent: aBlock - Return the key/value pair associated to the variable named as - specified by `key'. If the key is not found search will be brought - on in superspaces, finally evaluating aBlock if the variable - cannot be found in any of the superspaces. - -associationsDo: aBlock - Pass each association in the namespace to aBlock - -at: key ifAbsent: aBlock - Return the value associated to the variable named as specified by - `key'. If the key is not found search will be brought on in - superspaces, finally evaluating aBlock if the variable cannot be - found in any of the superspaces. - -at: key ifPresent: aBlock - If aKey is absent from the receiver and all its superspaces, - answer nil. Else, evaluate aBlock passing the associated value and - answer the result of the invocation - -do: aBlock - Pass each value in the namespace to aBlock - -includesKey: key - Answer whether the receiver or any of its superspaces contain the - given key - -keysAndValuesDo: aBlock - Pass to aBlock each of the receiver's keys and values, in two - separate parameters - -keysDo: aBlock - Pass to aBlock each of the receiver's keys - -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. - -size - Answer the number of keys in the receiver and each of its - superspaces - - - -File: gst-base.info, Node: Namespace-printing, Next: Namespace-testing, Prev: Namespace-overrides for superspaces, Up: Namespace - -Namespace: printing -------------------- - -nameIn: aNamespace - Answer Smalltalk code compiling to the receiver when the current - namespace is aNamespace - -printOn: aStream in: aNamespace - Print on aStream some Smalltalk code compiling to the receiver - when the current namespace is aNamespace - -storeOn: aStream - Store Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: Namespace-testing, Prev: Namespace-printing, Up: Namespace - -Namespace: testing ------------------- - -isSmalltalk - Answer `true'. - - - -File: gst-base.info, Node: NetClients.URIResolver, Next: NetClients.URL, Prev: Namespace, Up: Base classes - -NetClients.URIResolver -====================== - -Defined in namespace Smalltalk.NetClients -Superclass: Object -Category: NetClients-URIResolver - This class publishes methods to download files from the Internet. - -* Menu: - -* NetClients.URIResolver class-api:: (class) -* NetClients.URIResolver class-instance creation:: (class) - - -File: gst-base.info, Node: NetClients.URIResolver class-api, Next: NetClients.URIResolver class-instance creation, Up: NetClients.URIResolver - -NetClients.URIResolver class: api ---------------------------------- - -openOn: aURI - Always raise an error, as this method is not supported without - loading the additional NetClients package. - -openOn: aURI ifFail: aBlock - Always evaluate aBlock and answer the result if the additional - NetClients package is not loaded. If it is, instead, return a - WebEntity with the contents of the resource specified by anURI, - and only evaluate the block if loading the resource fails. - -openStreamOn: aURI - Check if aURI can be fetched from the Internet or from the local - system, and if so return a Stream with its contents. If this is - not possible, raise an exception. - -openStreamOn: aURI ifFail: aBlock - Check if aURI can be fetched from the Internet or from the local - system, and if so return a Stream with its contents. If this is - not possible, instead, evaluate the zero-argument block aBlock and - answer the result of the evaluation. - - - -File: gst-base.info, Node: NetClients.URIResolver class-instance creation, Prev: NetClients.URIResolver class-api, Up: NetClients.URIResolver - -NetClients.URIResolver class: instance creation ------------------------------------------------ - -on: anURL - Answer a new URIResolver that will do its best to fetch the data - for anURL from the Internet. - - - -File: gst-base.info, Node: NetClients.URL, Next: Notification, Prev: NetClients.URIResolver, Up: Base classes - -NetClients.URL -============== - -Defined in namespace Smalltalk.NetClients -Superclass: Object -Category: NetClients-URIResolver - Copyright (c) Kazuki Yasumatsu, 1995. All rights reserved. - - -* Menu: - -* NetClients.URL class-encoding URLs:: (class) -* NetClients.URL class-instance creation:: (class) -* NetClients.URL-accessing:: (instance) -* NetClients.URL-comparing:: (instance) -* NetClients.URL-copying:: (instance) -* NetClients.URL-initialize-release:: (instance) -* NetClients.URL-printing:: (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 - -NetClients.URL class: encoding URLs ------------------------------------ - -decode: aString - Decode a text/x-www-form-urlencoded String into a text/plain - String. - -encode: anURL - Encode a text/plain into a text/x-www-form-urlencoded String (those - things with lots of % in them). - -initialize - Initialize the receiver's class variables. - - - -File: gst-base.info, Node: NetClients.URL class-instance creation, Next: NetClients.URL-accessing, Prev: NetClients.URL class-encoding URLs, Up: NetClients.URL - -NetClients.URL class: instance creation ---------------------------------------- - -fromString: aString - Parse the given URL and answer an URL object based on it. - -new - Answer a 'blank' URL. - -scheme: schemeString host: hostString port: portNumber path: pathString - Answer an URL object made from all the parts passed as arguments. - -scheme: schemeString path: pathString - Answer an URL object made from all the parts passed as arguments. - -scheme: schemeString username: userString password: passwordString host: hostString port: portNumber path: pathString - Answer an URL object made from all the parts passed as arguments. - - - -File: gst-base.info, Node: NetClients.URL-accessing, Next: NetClients.URL-comparing, Prev: NetClients.URL class-instance creation, Up: NetClients.URL - -NetClients.URL: accessing -------------------------- - -decodedFields - Convert the form fields to a Dictionary, answer nil if no question - mark is found in the URL. - -decodedFile - Answer the file part of the URL, decoding it from - x-www-form-urlencoded format. - -decodedFragment - Answer the fragment part of the URL, decoding it from - x-www-form-urlencoded format. - -fragment - Answer the fragment part of the URL, leaving it in - x-www-form-urlencoded format. - -fragment: aString - Set the fragment part of the URL, which should be in - x-www-form-urlencoded format. - -fullRequestString - Answer the full request string corresponding to the URL. This is - how the URL would be printed in the address bar of a web browser, - except that the query data is printed even if it is to be sent - through a POST request. - -hasPostData - Answer whether the URL has a query part but is actually for an - HTTP POST request and not really part of the URL (as it would be - for the HTTP GET request). - -hasPostData: aBoolean - Set whether the query part of the URL is actually the data for an - HTTP POST request and not really part of the URL (as it would be - for the HTTP GET request). - -host - Answer the host part of the URL. - -host: aString - Set the host part of the URL to aString. - -newsGroup - If the receiver is an nntp url, return the news group. - -password - Answer the password part of the URL. - -password: aString - Set the password part of the URL to aString. - -path - Answer the path part of the URL. - -path: aString - Set the path part of the URL to aString. - -port - Answer the port number part of the URL. - -port: anInteger - Set the port number part of the URL to anInteger. - -postData - Answer whether the URL has a query part and it is meant for an - HTTP POST request, answer it. Else answer nil. - -postData: aString - Associate to the URL some data that is meant to be sent through an - HTTP POST request, answer it. - -query - Answer the query data associated to the URL. - -query: aString - Set the query data associated to the URL to aString. - -requestString - Answer the URL as it would be sent in an HTTP stream (that is, the - path and the query data, the latter only if it is to be sent with - an HTTP POST request). - -scheme - Answer the URL's scheme. - -scheme: aString - Set the URL's scheme to be aString. - -username - Answer the username part of the URL. - -username: aString - Set the username part of the URL to aString. - - - -File: gst-base.info, Node: NetClients.URL-comparing, Next: NetClients.URL-copying, Prev: NetClients.URL-accessing, Up: NetClients.URL - -NetClients.URL: comparing -------------------------- - -= anURL - Answer whether the two URLs are equal. The file and anchor are - converted to full 8-bit ASCII (contrast with urlencoded) and the - comparison is case-sensitive; on the other hand, the protocol and - host are compared without regard to case. - -hash - Answer an hash value for the receiver - - - -File: gst-base.info, Node: NetClients.URL-copying, Next: NetClients.URL-initialize-release, Prev: NetClients.URL-comparing, Up: NetClients.URL - -NetClients.URL: copying ------------------------ - -copyWithoutAuxiliaryParts - Answer a copy of the receiver where the fragment and query parts - of the URL have been cleared. - -copyWithoutFragment - Answer a copy of the receiver where the fragment parts of the URL - has been cleared. - -postCopy - All the variables are copied when an URL object is copied. - - - -File: gst-base.info, Node: NetClients.URL-initialize-release, Next: NetClients.URL-printing, Prev: NetClients.URL-copying, Up: NetClients.URL - -NetClients.URL: initialize-release ----------------------------------- - -initialize - Initialize the object to a consistent state. - - - -File: gst-base.info, Node: NetClients.URL-printing, Next: NetClients.URL-testing, Prev: NetClients.URL-initialize-release, Up: NetClients.URL - -NetClients.URL: printing ------------------------- - -printOn: stream - Print a representation of the URL on the given stream. - - - -File: gst-base.info, Node: NetClients.URL-testing, Next: NetClients.URL-utilities, Prev: NetClients.URL-printing, Up: NetClients.URL - -NetClients.URL: testing ------------------------ - -canCache - Answer whether the URL is cacheable. The current implementation - considers file URLs not to be cacheable, and everything else to be. - -hasFragment - Answer whether the URL points to a particular fragment (anchor) of - the resource. - -hasQuery - Answer whether the URL includes query arguments to be submitted - when retrieving the resource. - -isFileScheme - Answer whether the URL is a file URL. - -isFragmentOnly - Answer whether the URL only includes the name of a particular - fragment (anchor) of the resource to which it refers. - - - -File: gst-base.info, Node: NetClients.URL-utilities, Prev: NetClients.URL-testing, Up: NetClients.URL - -NetClients.URL: utilities -------------------------- - -construct: anURL - Construct an absolute URL based on the relative URL anURL and the - base path represented by the receiver - - - -File: gst-base.info, Node: Notification, Next: NullProxy, Prev: NetClients.URL, Up: Base classes - -Notification -============ - -Defined in namespace Smalltalk -Superclass: Exception -Category: Language-Exceptions - Notification represents a resumable, exceptional yet non-erroneous, - situation. Signaling a notification in absence of an handler - simply returns nil. - -* Menu: - -* Notification-exception description:: (instance) - - -File: gst-base.info, Node: Notification-exception description, Up: Notification - -Notification: exception description ------------------------------------ - -defaultAction - Do the default action for notifications, which is to resume - execution of the context which signaled the exception. - -description - Answer a textual description of the exception. - -isResumable - Answer true. Notification exceptions are by default resumable. - - - -File: gst-base.info, Node: NullProxy, Next: NullValueHolder, Prev: Notification, Up: Base classes - -NullProxy -========= - -Defined in namespace Smalltalk -Superclass: AlternativeObjectProxy -Category: Streams-Files - I am a proxy that does no special processing on the object to be - saved. I can be used to disable proxies for particular subclasses. - My subclasses add to the stored information, but share the fact - that the format is about the same as that of #dump: without a - proxy. - -* Menu: - -* NullProxy class-instance creation:: (class) -* NullProxy-accessing:: (instance) - - -File: gst-base.info, Node: NullProxy class-instance creation, Next: NullProxy-accessing, Up: NullProxy - -NullProxy class: instance creation ----------------------------------- - -loadFrom: anObjectDumper - Reload the object stored in anObjectDumper - - - -File: gst-base.info, Node: NullProxy-accessing, Prev: NullProxy class-instance creation, Up: NullProxy - -NullProxy: accessing --------------------- - -dumpTo: anObjectDumper - Dump the object stored in the proxy to anObjectDumper - - - -File: gst-base.info, Node: NullValueHolder, Next: Number, Prev: NullProxy, Up: Base classes - -NullValueHolder -=============== - -Defined in namespace Smalltalk -Superclass: ValueAdaptor -Category: Language-Data types - I pretend to store my value in a variable, but I don't actually. - You can use the only instance of my class (returned by - `ValueHolder null') if you're not interested in a value that is - returned as described in ValueHolder's comment. - -* Menu: - -* NullValueHolder class-creating instances:: (class) -* NullValueHolder-accessing:: (instance) - - -File: gst-base.info, Node: NullValueHolder class-creating instances, Next: NullValueHolder-accessing, Up: NullValueHolder - -NullValueHolder class: creating instances ------------------------------------------ - -new - Not used - use `ValueHolder null' instead - - - -File: gst-base.info, Node: NullValueHolder-accessing, Prev: NullValueHolder class-creating instances, Up: NullValueHolder - -NullValueHolder: accessing --------------------------- - -value - Retrive the value of the receiver. Always answer nil - -value: anObject - Set the value of the receiver. Do nothing, discard the value - - - -File: gst-base.info, Node: Number, Next: Object, Prev: NullValueHolder, Up: Base classes - -Number -====== - -Defined in namespace Smalltalk -Superclass: Magnitude -Category: Language-Data types - I am an abstract class that provides operations on numbers, both - floating point and integer. I provide some generic predicates, - and supply the implicit type coercing code for binary operations. - -* Menu: - -* Number class-converting:: (class) -* Number class-testing:: (class) -* Number-arithmetic:: (instance) -* Number-comparing:: (instance) -* Number-converting:: (instance) -* Number-copying:: (instance) -* Number-error raising:: (instance) -* Number-misc math:: (instance) -* Number-point creation:: (instance) -* Number-retrying:: (instance) -* Number-shortcuts and iterators:: (instance) -* Number-testing:: (instance) -* Number-truncation and round off:: (instance) - - -File: gst-base.info, Node: Number class-converting, Next: Number class-testing, Up: Number - -Number class: converting ------------------------- - -coerce: aNumber - Answer aNumber - whatever class it belongs to, it is good - -readFrom: aStream - Answer the number read from the rest of aStream, converted to an - instance of the receiver. If the receiver is number, the class of - the result is undefined - but the result is good. - - - -File: gst-base.info, Node: Number class-testing, Next: Number-arithmetic, Prev: Number class-converting, Up: Number - -Number class: testing ---------------------- - -isImmediate - Answer whether, if x is an instance of the receiver, x copy == x - - - -File: gst-base.info, Node: Number-arithmetic, Next: Number-comparing, Prev: Number class-testing, Up: Number - -Number: arithmetic ------------------- - -* aNumber - Subtract the receiver and aNumber, answer the result - -+ aNumber - Sum the receiver and aNumber, answer the result - -- aNumber - Subtract aNumber from the receiver, answer the result - -/ aNumber - Divide the receiver by aNumber, answer the result (no loss of - precision). Raise a ZeroDivide exception or return a valid - (possibly infinite) continuation value if aNumber is zero. - -// aNumber - Return the integer quotient of dividing the receiver by aNumber - with truncation towards negative infinity. Raise a ZeroDivide - exception if aNumber is zero - -\\ aNumber - Return the remainder of dividing the receiver by aNumber with - truncation towards negative infinity. Raise a ZeroDivide - exception if aNumber is zero - -quo: aNumber - Return the integer quotient of dividing the receiver by aNumber - with truncation towards zero. Raise a ZeroDivide exception if - aNumber is zero - -reciprocal - Return the reciprocal of the receiver - -rem: aNumber - Return the remainder of dividing the receiver by aNumber with - truncation towards zero. Raise a ZeroDivide exception if aNumber - is zero - - - -File: gst-base.info, Node: Number-comparing, Next: Number-converting, Prev: Number-arithmetic, Up: Number - -Number: comparing ------------------ - -max: aNumber - Redefined to ensure that a NaN is never answered. Answer the - maximum between the receiver and aNumber. - -min: aNumber - Redefined to ensure that a NaN is never answered. Answer the - minimum between the receiver and aNumber. - - - -File: gst-base.info, Node: Number-converting, Next: Number-copying, Prev: Number-comparing, Up: Number - -Number: converting ------------------- - -asFloat - Convert the receiver to an arbitrary subclass of Float - -asFloatD - This method's functionality should be implemented by subclasses of - Number - -asFloatE - This method's functionality should be implemented by subclasses of - Number - -asFloatQ - This method's functionality should be implemented by subclasses of - Number - -asRectangle - Answer an empty rectangle whose origin is (self asPoint) - -asScaledDecimal: n - Answer the receiver, converted to a ScaledDecimal object. - -asScaledDecimal: denDigits scale: n - Answer the receiver, divided by 10^denDigits and converted to a - ScaledDecimal object. - -coerce: aNumber - Answer aNumber - whatever class it belongs to, it is good - -degreesToRadians - Convert the receiver to radians - -generality - Answer the receiver's generality - -radiansToDegrees - Convert the receiver from radians to degrees - -unity - Coerce 1 to the receiver's class. The default implementation works, - but is inefficient - -zero - Coerce 0 to the receiver's class. The default implementation works, - but is inefficient - - - -File: gst-base.info, Node: Number-copying, Next: Number-error raising, Prev: Number-converting, Up: Number - -Number: copying ---------------- - -deepCopy - Return the receiver - it's an immediate (immutable) object - -shallowCopy - Return the receiver - it's an immediate (immutable) object - - - -File: gst-base.info, Node: Number-error raising, Next: Number-misc math, Prev: Number-copying, Up: Number - -Number: error raising ---------------------- - -arithmeticError: msg - Raise an ArithmeticError exception having msg as its message text. - -zeroDivide - Raise a division-by-zero (ZeroDivide) exception whose dividend is - the receiver. - - - -File: gst-base.info, Node: Number-misc math, Next: Number-point creation, Prev: Number-error raising, Up: Number - -Number: misc math ------------------ - -abs - Answer the absolute value of the receiver - -arcCos - return the arc cosine of the receiver - -arcSin - return the arc sine of the receiver - -arcTan - return the arc tangent of the receiver - -cos - return the cosine of the receiver - -estimatedLog - Answer an estimate of (self abs floorLog: 10). This method should - be overridden by subclasses, but Number's implementation does not - raise errors - simply, it gives a correct result, so it is slow. - -exp - return e raised to the receiver - -floorLog: radix - return (self log: radix) floor. Optimized to answer an integer. - -ln - return log base e of the receiver - -log - return log base aNumber of the receiver - -log: aNumber - return log base aNumber of the receiver - -negated - Answer the negated of the receiver - -positiveDifference: aNumber - Answer the positive difference of the receiver and aNumber, that - is self - aNumber if it is positive, 0 otherwise. - -raisedTo: aNumber - Return self raised to aNumber power - -raisedToInteger: anInteger - Return self raised to the anInteger-th power - -sin - return the sine of the receiver - -sqrt - return the square root of the receiver - -squared - Answer the square of the receiver - -tan - return the tangent of the receiver - -withSignOf: aNumber - Answer the receiver, with its sign possibly changed to match that - of aNumber. - - diff -rNU3 smalltalk-2.1.6/doc/gst-base.info-9 smalltalk-2.1.7/doc/gst-base.info-9 --- smalltalk-2.1.6/doc/gst-base.info-9 2003-12-13 10:44:46.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-base.info-9 1970-01-01 01:00:00.000000000 +0100 @@ -1,1576 +0,0 @@ -This is gst-base.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-base-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Base classes: (gst-base). The GNU Smalltalk base classes. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-base.info, Node: Number-point creation, Next: Number-retrying, Prev: Number-misc math, Up: Number - -Number: point creation ----------------------- - -@ y - Answer a new point whose x is the receiver and whose y is y - -asPoint - Answer a new point, self @ self - - - -File: gst-base.info, Node: Number-retrying, Next: Number-shortcuts and iterators, Prev: Number-point creation, Up: Number - -Number: retrying ----------------- - -retry: aSymbol coercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling - aSymbol. aSymbol is supposed not to be #= or #~= (since those - don't fail if aNumber is not a Number). - -retryDifferenceCoercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling #-. - -retryDivisionCoercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling #/. - -retryEqualityCoercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling #=. - -retryError - Raise an error--a retrying method was called with two arguments - having the same generality. - -retryInequalityCoercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling #~=. - -retryMultiplicationCoercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling #*. - -retryRelationalOp: aSymbol coercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling - aSymbol (<, <=, >, >=). - -retrySumCoercing: aNumber - Coerce to the other number's class the one number between the - receiver and aNumber which has the lowest, and retry calling #+. - - - -File: gst-base.info, Node: Number-shortcuts and iterators, Next: Number-testing, Prev: Number-retrying, Up: Number - -Number: shortcuts and iterators -------------------------------- - -to: stop - Return an interval going from the receiver to stop by 1 - -to: stop by: step - Return an interval going from the receiver to stop with the given - step - -to: stop by: step do: aBlock - Evaluate aBlock for each value in the interval going from the - receiver to stop with the given step. Compiled in-line for integer - literal steps, and for one-argument aBlocks without temporaries, - and therefore not overridable. - -to: stop do: aBlock - Evaluate aBlock for each value in the interval going from the - receiver to stop by 1. Compiled in-line for one-argument aBlocks - without temporaries, and therefore not overridable. - - - -File: gst-base.info, Node: Number-testing, Next: Number-truncation and round off, Prev: Number-shortcuts and iterators, Up: Number - -Number: testing ---------------- - -closeTo: num - Answer whether the receiver can be considered sufficiently close - to num (this is done by checking equality if num is not a number, - and by checking with 0.01% tolerance if num is a number). - -even - Returns true if self is divisible by 2 - -isFinite - Answer whether the receiver represents a finite quantity. Most - numeric classes are for finite quantities, so the default is to - answer true rather than calling #subclassResponsibility. - -isInfinite - Answer whether the receiver represents an infinite quantity. Most - numeric classes are for finite quantities, so the default is to - answer false rather than calling #subclassResponsibility. - -isNaN - Answer whether the receiver is a Not-A-Number. Most numeric - classes don't handle nans, so the default is to answer false - rather than calling #subclassResponsibility. - -isNumber - Answer `true'. - -isRational - Answer whether the receiver is rational - false by default - -negative - Answer whether the receiver is < 0 - -odd - Returns true if self is not divisible by 2 - -positive - Answer whether the receiver is >= 0 - -sign - Returns the sign of the receiver. - -strictlyPositive - Answer whether the receiver is > 0 - - - -File: gst-base.info, Node: Number-truncation and round off, Prev: Number-testing, Up: Number - -Number: truncation and round off --------------------------------- - -asInteger - Answer the receiver, rounded to the nearest integer - -floor - Return the integer nearest the receiver toward negative infinity. - -fractionPart - Answer a number which, summed to the #integerPart of the receiver, - gives the receiver itself. - -integerPart - Answer the receiver, truncated towards zero - -rounded - Returns the integer nearest the receiver - -roundTo: aNumber - Answer the receiver, truncated to the nearest multiple of aNumber - -truncated - Answer the receiver, truncated towards zero - -truncateTo: aNumber - Answer the receiver, truncated towards zero to a multiple of - aNumber - - - -File: gst-base.info, Node: Object, Next: ObjectDumper, Prev: Number, Up: Base classes - -Object -====== - -Defined in namespace Smalltalk -Superclass: none -Category: Language-Implementation - I am the root of the Smalltalk class system. All classes in the - system are subclasses of me. - -* Menu: - -* Object class-initialization:: (class) -* Object-built ins:: (instance) -* Object-change and update:: (instance) -* Object-class type methods:: (instance) -* Object-conversion:: (instance) -* Object-copying:: (instance) -* Object-debugging:: (instance) -* Object-dependents access:: (instance) -* Object-error raising:: (instance) -* Object-exception handling:: (instance) -* Object-finalization:: (instance) -* Object-printing:: (instance) -* Object-relational operators:: (instance) -* Object-saving and loading:: (instance) -* Object-storing:: (instance) -* Object-syntax shortcuts:: (instance) -* Object-testing functionality:: (instance) - - -File: gst-base.info, Node: Object class-initialization, Next: Object-built ins, Up: Object - -Object class: initialization ----------------------------- - -dependencies - Answer a dictionary that associates an object with its dependents. - -dependencies: anObject - Use anObject as the dictionary that associates an object with its - dependents. - -finalizableObjects - Answer a set of finalizable objects. - -initialize - Initialize the Dependencies dictionary to be an - IdentityDictionary. In a later phase of the bootstrap process - this is changed to be a WeakKeyIdentityDictionary. - -update: aspect - Do any global tasks for the ObjectMemory events. - - - -File: gst-base.info, Node: Object-built ins, Next: Object-change and update, Prev: Object class-initialization, Up: Object - -Object: built ins ------------------ - -= 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 - -== arg - Answer whether the receiver is the same object as arg. This is a - very fast test and is called 'identity' - -allOwners - Return an Array of Objects that point to the receiver. - -asOop - Answer the object index associated to the receiver. The object - index doesn't change when garbage collection is performed. - -at: anIndex - Answer the index-th indexed instance variable of the receiver - -at: anIndex put: value - Store value in the index-th indexed instance variable of the - receiver - -basicAt: anIndex - Answer the index-th indexed instance variable of the receiver. - This method must not be overridden, override at: instead - -basicAt: anIndex put: value - Store value in the index-th indexed instance variable of the - receiver This method must not be overridden, override at:put: - instead - -basicPrint - Print a basic representation of the receiver - -basicSize - Answer the number of indexed instance variable in the receiver - -become: otherObject - Change all references to the receiver into references to - otherObject. Depending on the implementation, references to - otherObject might or might not be transformed into the receiver - (respectively, 'two-way become' and 'one-way become'). - Implementations doing one-way become answer the receiver (so that - it is not lost). Most implementations doing two-way become answer - otherObject, but this is not assured - so do answer the receiver - for consistency. GNU Smalltalk does two-way become and answers - otherObject, but this might change in future versions: programs - should not rely on the behavior and results of #become: . - -changeClassTo: aBehavior - Mutate the class of the receiver to be aBehavior. Note: Tacitly - assumes that the structure is the same for the original and new - class!! - -checkIndexableBounds: index - Private - Check the reason why an access to the given indexed - instance variable failed - -checkIndexableBounds: index put: object - Private - Check the reason why a store to the given indexed - instance variable failed - -class - Answer the class to which the receiver belongs - -halt - Called to enter the debugger - -hash - Answer an hash value for the receiver. This hash value is ok for - objects that do not redefine ==. - -identityHash - Answer an hash value for the receiver. This method must not be - overridden - -instVarAt: index - Answer the index-th instance variable of the receiver. This - method must not be overridden. - -instVarAt: index put: value - Store value in the index-th instance variable of the receiver. - This method must not be overridden. - -isReadOnly - Answer whether the object's indexed instance variables can be - written - -makeEphemeron - Make the object an 'ephemeron'. An ephemeron is marked after all - other objects, and if no references are found to the key except - from the object itself, it is sent the #mourn message. - -makeFixed - Avoid that the receiver moves in memory across garbage collections. - -makeReadOnly: aBoolean - Set whether the object's indexed instance variables can be written - -makeWeak - Make the object a 'weak' one. When an object is only referenced by - weak objects, it is collected and the slots in the weak objects - are changed to nils by the VM; the weak object is then sent the - #mourn message. - -mark: aSymbol - Private - use this method to mark code which needs to be reworked, - removed, etc. You can then find all senders of #mark: to find all - marked methods or you can look for all senders of the symbol that - you sent to #mark: to find a category of marked methods. - -nextInstance - Private - answer another instance of the receiver's class, or nil - if the entire object table has been walked - -notYetImplemented - Called when a method defined by a class is not yet implemented, - but is going to be - -perform: selectorOrMessageOrMethod - Send the unary message named selectorOrMessageOrMethod (if a - Symbol) to the receiver, or the message and arguments it - identifies (if a Message or DirectedMessage), or finally execute - the method within the receiver (if a CompiledMethod). In the last - case, the method need not reside on the hierarchy from the - receiver's class to Object - it need not reside at all in a - MethodDictionary, in fact - but doing bad things will compromise - stability of the Smalltalk virtual machine (and don't blame - anybody but yourself). This method should not be overridden - -perform: selectorOrMethod with: arg1 - Send the message named selectorOrMethod (if a Symbol) to the - receiver, passing arg1 to it, or execute the method within the - receiver (if a CompiledMethod). In the latter case, the method - need not reside on the hierarchy from the receiver's class to - Object - it need not reside at all in a MethodDictionary, in fact - - but doing bad things will compromise stability of the Smalltalk - virtual machine (and don't blame anybody but yourself). This - method should not be overridden - -perform: selectorOrMethod with: arg1 with: arg2 - Send the message named selectorOrMethod (if a Symbol) to the - receiver, passing arg1 and arg2 to it, or execute the method - within the receiver (if a CompiledMethod). In the latter case, - the method need not reside on the hierarchy from the receiver's - class to Object - it need not reside at all in a MethodDictionary, - in fact - but doing bad things will compromise stability of the - Smalltalk virtual machine (and don't blame anybody but yourself). - This method should not be overridden - -perform: selectorOrMethod with: arg1 with: arg2 with: arg3 - Send the message named selectorOrMethod (if a Symbol) to the - receiver, passing the other arguments to it, or execute the method - within the receiver (if a CompiledMethod). In the latter case, - the method need not reside on the hierarchy from the receiver's - class to Object - it need not reside at all in a MethodDictionary, - in fact - but doing bad things will compromise stability of the - Smalltalk virtual machine (and don't blame anybody but yourself). - This method should not be overridden - -perform: selectorOrMethod withArguments: argumentsArray - Send the message named selectorOrMethod (if a Symbol) to the - receiver, passing the elements of argumentsArray as parameters, or - execute the method within the receiver (if a CompiledMethod). In - the latter case, the method need not reside on the hierarchy from - the receiver's class to Object - it need not reside at all in a - MethodDictionary, in fact - but doing bad things will compromise - stability of the Smalltalk virtual machine (and don't blame - anybody but yourself). This method should not be overridden - -primError: message - This might start the debugger... Note that we use #basicPrint - 'cause #printOn: might invoke an error. - -primitiveFailed - Called when a VM primitive fails - -shallowCopy - Returns a shallow copy of the receiver (the instance variables are - not copied) - -shouldNotImplement - Called when objects belonging to a class should not answer a - selector defined by a superclass - -size - Answer the number of indexed instance variable in the receiver - -subclassResponsibility - Called when a method defined by a class should be overridden in a - subclass - -tenure - Move the object to oldspace. - - - -File: gst-base.info, Node: Object-change and update, Next: Object-class type methods, Prev: Object-built ins, Up: Object - -Object: change and update -------------------------- - -broadcast: aSymbol - Send the unary message aSymbol to each of the receiver's dependents - -broadcast: aSymbol with: anObject - Send the message aSymbol to each of the receiver's dependents, - passing anObject - -broadcast: aSymbol with: arg1 with: arg2 - Send the message aSymbol to each of the receiver's dependents, - passing arg1 and arg2 as parameters - -broadcast: aSymbol withArguments: anArray - Send the message aSymbol to each of the receiver's dependents, - passing the parameters in anArray - -broadcast: aSymbol withBlock: aBlock - Send the message aSymbol to each of the receiver's dependents, - passing the result of evaluating aBlock with each dependent as the - parameter - -changed - Send update: for each of the receiver's dependents, passing them - the receiver - -changed: aParameter - Send update: for each of the receiver's dependents, passing them - aParameter - -update: aParameter - Default behavior is to do nothing. Called by #changed and #changed: - - - -File: gst-base.info, Node: Object-class type methods, Next: Object-conversion, Prev: Object-change and update, Up: Object - -Object: class type methods --------------------------- - -species - This method has no unique definition. Generally speaking, methods - which always return the same type usually don't use #class, but - #species. For example, a PositionableStream's species is the - class of the collection on which it is streaming (used by upTo:, - upToAll:, upToEnd). Stream uses species for obtaining the class of - next:'s return value, Collection uses it in its #copyEmpty: - message, which in turn is used by all collection-re- turning - methods. An Interval's species is Array (used by collect:, select:, - reject:, etc.). - -yourself - Answer the receiver - - - -File: gst-base.info, Node: Object-conversion, Next: Object-copying, Prev: Object-class type methods, Up: Object - -Object: conversion ------------------- - -asValue - Answer a ValueHolder whose initial value is the receiver. - - - -File: gst-base.info, Node: Object-copying, Next: Object-debugging, Prev: Object-conversion, Up: Object - -Object: copying ---------------- - -copy - Returns a shallow copy of the receiver (the instance variables are - not copied). The shallow copy receives the message postCopy and the - result of postCopy is passed back. - -deepCopy - Returns a deep copy of the receiver (the instance variables are - copies of the receiver's instance variables) - -postCopy - Performs any changes required to do on a copied object. This is the - place where one could, for example, put code to replace objects - with copies of the objects - - - -File: gst-base.info, Node: Object-debugging, Next: Object-dependents access, Prev: Object-copying, Up: Object - -Object: debugging ------------------ - -breakpoint: context return: return - Called back by the system. Must return the value passed through the - second parameter - -inspect - Print all the instance variables of the receiver on the Transcript - -validSize - Answer how many elements in the receiver should be inspected - - - -File: gst-base.info, Node: Object-dependents access, Next: Object-error raising, Prev: Object-debugging, Up: Object - -Object: dependents access -------------------------- - -addDependent: anObject - Add anObject to the set of the receiver's dependents. Important: - if an object has dependents, it won't be garbage collected. - -dependents - Answer a collection of the receiver's dependents. - -release - Remove all of the receiver's dependents from the set and allow the - receiver to be garbage collected. - -removeDependent: anObject - Remove anObject to the set of the receiver's dependents. No problem - if anObject is not in the set of the receiver's dependents. - - - -File: gst-base.info, Node: Object-error raising, Next: Object-exception handling, Prev: Object-dependents access, Up: Object - -Object: error raising ---------------------- - -doesNotUnderstand: aMessage - Called by the system when a selector was not found. message is a - Message containing information on the receiver - -error: message - Display a walkback for the receiver, with the given error message. - Signal an `Error' exception (you can trap it the old way too, with - `ExError' - -halt: message - Display a walkback for the receiver, with the given error message. - Signal an `Halt' exception (you can trap it the old way too, with - `ExHalt') - - - -File: gst-base.info, Node: Object-exception handling, Next: Object-finalization, Prev: Object-error raising, Up: Object - -Object: exception handling --------------------------- - -badReturnError - Called back when a block performs a bad return. - -mustBeBoolean - Called by the system when ifTrue:*, ifFalse:*, and: or or: are - sent to anything but a boolean - -noRunnableProcess - Called back when all processes are suspended - -userInterrupt - Called back when the user presses Ctrl-Break - - - -File: gst-base.info, Node: Object-finalization, Next: Object-printing, Prev: Object-exception handling, Up: Object - -Object: finalization --------------------- - -addToBeFinalized - Arrange things so that #finalize is sent to the object when the - garbage collector finds out there are only weak references to it. - -finalize - Do nothing by default - -mourn - This method is sent by the VM to weak and ephemeron objects when - one of their fields is found out to be garbage collectable (this - means, for weak objects, that there are no references to it from - non-weak objects, and for ephemeron objects, that the only paths - to the first instance variable pass through other instance - variables of the same ephemeron). The default behavior is to do - nothing. - -removeToBeFinalized - Unregister the object, so that #finalize is no longer sent to the - object when the garbage collector finds out there are only weak - references to it. - - - -File: gst-base.info, Node: Object-printing, Next: Object-relational operators, Prev: Object-finalization, Up: Object - -Object: printing ----------------- - -basicPrintNl - Print a basic representation of the receiver, followed by a new - line. - -basicPrintOn: aStream - Print a represention of the receiver on aStream - - representation - -display - Print a represention of the receiver on the Transcript (stdout the - GUI is not active). For most objects this is simply its #print - representation, but for strings and characters, superfluous dollars - or extra pair of quotes are stripped. - -displayNl - Print a represention of the receiver, then put a new line on the - Transcript (stdout the GUI is not active). For most objects this - is simply its #printNl representation, but for strings and - characters, superfluous dollars or extra pair of quotes are - stripped. - -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 pair of quotes are - stripped. - -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. - -print - Print a represention of the receiver on the Transcript (stdout the - GUI is not active) - -printNl - Print a represention of the receiver on stdout, put a new line the - Transcript (stdout the GUI is not active) - -printOn: aStream - Print a represention of the receiver on aStream - -printString - Answer a String representing the receiver - - - -File: gst-base.info, Node: Object-relational operators, Next: Object-saving and loading, Prev: Object-printing, Up: Object - -Object: relational operators ----------------------------- - -~= anObject - Answer whether the receiver and anObject are not equal - -~~ anObject - Answer whether the receiver and anObject are not the same object - - - -File: gst-base.info, Node: Object-saving and loading, Next: Object-storing, Prev: Object-relational operators, Up: Object - -Object: saving and loading --------------------------- - -binaryRepresentationObject - This method must be implemented if PluggableProxies are used with - the receiver's class. The default implementation raises an - exception. - -postLoad - Called after loading an object; must restore it to the state before - `preStore' was called. Do nothing by default - -postStore - Called after an object is dumped; must restore it to the state - before `preStore' was called. Call #postLoad by default - -preStore - Called before dumping an object; it must *change* it (it must not - answer a new object) if necessary. Do nothing by default - -reconstructOriginalObject - Used if an instance of the receiver's class is returned as the - #binaryRepresentationObject of another object. The default - implementation raises an exception. - - - -File: gst-base.info, Node: Object-storing, Next: Object-syntax shortcuts, Prev: Object-saving and loading, Up: Object - -Object: storing ---------------- - -store - Put a String of Smalltalk code compiling to the receiver on the - Transcript (stdout the GUI is not active) - -storeNl - Put a String of Smalltalk code compiling to the receiver, followed - by a new line, on the Transcript (stdout the GUI is not active) - -storeOn: aStream - Put Smalltalk code compiling to the receiver on aStream - -storeString - Answer a String of Smalltalk code compiling to the receiver - - - -File: gst-base.info, Node: Object-syntax shortcuts, Next: Object-testing functionality, Prev: Object-storing, Up: Object - -Object: syntax shortcuts ------------------------- - --> anObject - Creates a new instance of Association with the receiver being the - key and the argument becoming the value - - - -File: gst-base.info, Node: Object-testing functionality, Prev: Object-syntax shortcuts, Up: Object - -Object: testing functionality ------------------------------ - -ifNil: nilBlock - Evaluate nilBlock if the receiver is nil, else answer self - -ifNil: nilBlock ifNotNil: notNilBlock - Evaluate nilBlock if the receiver is nil, else evaluate - notNilBlock, passing the receiver. - -ifNotNil: notNilBlock - Evaluate notNiilBlock if the receiver is not nil, passing the - receiver. Else answer nil. - -ifNotNil: notNilBlock ifNil: nilBlock - Evaluate nilBlock if the receiver is nil, else evaluate - notNilBlock, passing the receiver. - -isArray - Answer `false'. - -isBehavior - Answer `false'. - -isCharacter - Answer `false'. - -isCharacterArray - Answer `false'. - -isClass - Answer `false'. - -isFloat - Answer `false'. - -isInteger - Answer `false'. - -isKindOf: aClass - Answer whether the receiver's class is aClass or a subclass of - aClass - -isMemberOf: aClass - Returns true if the receiver is an instance of the class 'aClass' - -isMeta - Same as isMetaclass - -isMetaclass - Answer `false'. - -isMetaClass - Same as isMetaclass - -isNamespace - Answer `false'. - -isNil - Answer whether the receiver is nil - -isNumber - Answer `false'. - -isSmallInteger - Answer `false'. - -isString - Answer `false'. - -isSymbol - Answer `false'. - -notNil - Answer whether the receiver is not nil - -respondsTo: aSymbol - Returns true if the receiver understands the given selector - - - -File: gst-base.info, Node: ObjectDumper, Next: ObjectMemory, Prev: Object, Up: Base classes - -ObjectDumper -============ - -Defined in namespace Smalltalk -Superclass: Stream -Category: Streams-Files - I'm not part of a normal Smalltalk system, but most Smalltalks - provide a similar feature: that is, support for storing objects in - a binary format; there are many advantages in using me instead of - #storeOn: and the Smalltalk compiler. - - The data is stored in a very compact format, which has the side - effect of making loading much faster when compared with compiling - the Smalltalk code prepared by #storeOn:. In addition, my - instances support circular references between objects, while - #storeOn: supports it only if you know of such references at - design time and you override #storeOn: to deal with them - -* Menu: - -* ObjectDumper class-establishing proxy classes:: (class) -* ObjectDumper class-instance creation:: (class) -* ObjectDumper class-shortcuts:: (class) -* ObjectDumper class-testing:: (class) -* ObjectDumper-accessing:: (instance) -* ObjectDumper-loading/dumping objects:: (instance) -* ObjectDumper-stream interface:: (instance) - - -File: gst-base.info, Node: ObjectDumper class-establishing proxy classes, Next: ObjectDumper class-instance creation, Up: ObjectDumper - -ObjectDumper class: establishing proxy classes ----------------------------------------------- - -disableProxyFor: aClass - Disable proxies for instances of aClass and its descendants - -hasProxyFor: aClass - Answer whether a proxy class has been registered for instances of - aClass. - -proxyClassFor: anObject - Answer the class of a valid proxy for an object, or nil if none - could be found - -proxyFor: anObject - Answer a valid proxy for an object, or the object itself if none - could be found - -registerProxyClass: aProxyClass for: aClass - Register the proxy class aProxyClass - descendent of DumperProxy - - to be used for instances of aClass and its descendants - - - -File: gst-base.info, Node: ObjectDumper class-instance creation, Next: ObjectDumper class-shortcuts, Prev: ObjectDumper class-establishing proxy classes, Up: ObjectDumper - -ObjectDumper class: instance creation -------------------------------------- - -new - This method should not be called for instances of this class. - -on: aFileStream - Answer an ObjectDumper working on aFileStream. - - - -File: gst-base.info, Node: ObjectDumper class-shortcuts, Next: ObjectDumper class-testing, Prev: ObjectDumper class-instance creation, Up: ObjectDumper - -ObjectDumper class: shortcuts ------------------------------ - -dump: anObject to: aFileStream - Dump anObject to aFileStream. Answer anObject - -loadFrom: aFileStream - Load an object from aFileStream and answer it - - - -File: gst-base.info, Node: ObjectDumper class-testing, Next: ObjectDumper-accessing, Prev: ObjectDumper class-shortcuts, Up: ObjectDumper - -ObjectDumper class: testing ---------------------------- - -example - This is a real torture test: it outputs recursive objects, - identical objects multiple times, classes, metaclasses, integers, - characters and proxies (which is also a test of more complex - objects)! - - - -File: gst-base.info, Node: ObjectDumper-accessing, Next: ObjectDumper-loading/dumping objects, Prev: ObjectDumper class-testing, Up: ObjectDumper - -ObjectDumper: accessing ------------------------ - -flush - `Forget' any information on previously stored objects. - -stream - Answer the ByteStream to which the ObjectDumper will write and - from which it will read. - -stream: aByteStream - Set the ByteStream to which the ObjectDumper will write and from - which it will read. - - - -File: gst-base.info, Node: ObjectDumper-loading/dumping objects, Next: ObjectDumper-stream interface, Prev: ObjectDumper-accessing, Up: ObjectDumper - -ObjectDumper: loading/dumping objects -------------------------------------- - -dump: anObject - Dump anObject on the stream associated with the receiver. Answer - anObject - -load - Load an object from the stream associated with the receiver and - answer it - - - -File: gst-base.info, Node: ObjectDumper-stream interface, Prev: ObjectDumper-loading/dumping objects, Up: ObjectDumper - -ObjectDumper: stream interface ------------------------------- - -atEnd - Answer whether the underlying stream is at EOF - -next - Load an object from the underlying stream - -nextPut: anObject - Store an object on the underlying stream - - - -File: gst-base.info, Node: ObjectMemory, Next: OrderedCollection, Prev: ObjectDumper, Up: Base classes - -ObjectMemory -============ - -Defined in namespace Smalltalk -Superclass: Object -Category: Language-Implementation - I provide a few methods that enable one to tune the virtual - machine's usage of memory. In addition, I can signal to my - dependants some `events' that can happen during the virtual - machine's life. - - ObjectMemory has both class-side and instance-side methods. In - general, class-side methods provide means to tune the parameters - of the memory manager, while instance-side methods are used - together with the #current class-side method to take a look at - statistics on the memory manager's state. - -* Menu: - -* ObjectMemory class-accessing:: (class) -* ObjectMemory class-builtins:: (class) -* ObjectMemory class-initialization:: (class) -* ObjectMemory class-saving the image:: (class) -* ObjectMemory-accessing:: (instance) -* ObjectMemory-builtins:: (instance) -* ObjectMemory-derived information:: (instance) - - -File: gst-base.info, Node: ObjectMemory class-accessing, Next: ObjectMemory class-builtins, Up: ObjectMemory - -ObjectMemory class: accessing ------------------------------ - -current - Return a snapshot of the VM's memory management statistics. - - - -File: gst-base.info, Node: ObjectMemory class-builtins, Next: ObjectMemory class-initialization, Prev: ObjectMemory class-accessing, Up: ObjectMemory - -ObjectMemory class: builtins ----------------------------- - -abort - Quit the Smalltalk environment, dumping core. - -addressOf: anObject - Returns the address of the actual object that anObject references. - Note that, with the exception of fixed objects this address is - only valid until the next garbage collection; thus it's pretty - risky to count on the address returned by this method for very - long. - -addressOfOOP: anObject - Returns the address of the OOP (object table slot) for anObject. - The address is an Integer and will not change over time (i.e. is - immune from garbage collector action) except if the virtual machine - is stopped and restarted. - -bigObjectThreshold - Answer the smallest size for objects that are allocated outside - the main heap in the hope of providing more locality of reference - between small objects. - -bigObjectThreshold: bytes - Set the smallest size for objects that are allocated outside the - main heap in the hope of providing more locality of reference - between small objects. bytes must be a positive SmallInteger. - -compact - Force a full garbage collection, including compaction of oldspace - -finishIncrementalGC - Do a step in the incremental garbage collection. - -gcMessage - Answer whether messages indicating that garbage collection is - taking place are printed on stdout - -gcMessage: aBoolean - Set whether messages indicating that garbage collection is taking - place are printed on stdout - -globalGarbageCollect - Force a full garbage collection - -growThresholdPercent - Answer the percentage of the amount of memory used by the system - grows which has to be full for the system to allocate more memory - -growThresholdPercent: growPercent - Set the percentage of the amount of memory used by the system grows - which has to be full for the system to allocate more memory - -growTo: numBytes - Grow the amount of memory used by the system grows to numBytes. - -incrementalGCStep - Do a step in the incremental garbage collection. - -quit - Quit the Smalltalk environment. Whether files are closed and other - similar cleanup occurs depends on the platform - -quit: exitStatus - Quit the Smalltalk environment, passing the exitStatus integer to - the OS. Files are closed and other similar cleanups occur. - -scavenge - Force a minor garbage collection - -smoothingFactor - Answer the factor (between 0 and 1) used to smooth the statistics - provided by the virtual machine about memory handling. 0 disables - updating the averages, 1 disables the smoothing (the statistics - return the last value). - -smoothingFactor: rate - Set the factor (between 0 and 1) used to smooth the statistics - provided by the virtual machine about memory handling. 0 disables - 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 - -spaceGrowRate: rate - Set the rate with which the amount of memory used by the system - grows - - - -File: gst-base.info, Node: ObjectMemory class-initialization, Next: ObjectMemory class-saving the image, Prev: ObjectMemory class-builtins, Up: ObjectMemory - -ObjectMemory class: initialization ----------------------------------- - -initialize - Initialize the globals - - - -File: gst-base.info, Node: ObjectMemory class-saving the image, Next: ObjectMemory-accessing, Prev: ObjectMemory class-initialization, Up: ObjectMemory - -ObjectMemory class: saving the image ------------------------------------- - -snapshot - Save a snapshot on the image file that was loaded on startup. - - - -File: gst-base.info, Node: ObjectMemory-accessing, Next: ObjectMemory-builtins, Prev: ObjectMemory class-saving the image, Up: ObjectMemory - -ObjectMemory: accessing ------------------------ - -allocFailures - Answer the number of times that the old-space allocator found no - block that was at least as big as requested, and had to ask the - operating system for more memory. - -allocMatches - Answer the number of times that the old-space allocator found a - block that was exactly as big as requested. - -allocProbes - Answer the number of free blocks that the old-space allocator had - to examine so far to allocate all the objects that are in old-space - -allocSplits - Answer the number of times that the old-space allocator could not - find a block that was exactly as big as requested, and had to split - a larger free block in two parts. - -bytesPerOOP - Answer the number of bytes that is taken by an ordinary object - pointer (in practice, a field such as a named instance variable). - -bytesPerOTE - Answer the number of bytes that is taken by an object table entry - (in practice, the overhead incurred by every object in the system, - with the sole exception of SmallIntegers). - -edenSize - Answer the number of bytes in the `eden' area of the young - generation (in practice, the number of allocated bytes between two - scavenges). - -edenUsedBytes - Answer the number of bytes that are currently filled in the `eden' - area of the young generation. - -fixedSpaceSize - Answer the number of bytes in the special heap devoted to objects - that the garbage collector cannot move around in memory. - -fixedSpaceUsedBytes - Answer the number of bytes that are currently filled in the - special heap devoted to objects that the garbage collector cannot - move around in memory. - -numCompactions - Answer the number of oldspace compactions that happened since the - VM was started. - -numFixedOOPs - Answer the number of objects that the garbage collector cannot - move around in memory. - -numFreeOTEs - Answer the number of entries that are currently free in the object - table. - -numGlobalGCs - Answer the number of global garbage collections (collection of the - entire heap) that happened since the VM was started. - -numGrowths - Answer the number of times that oldspace was grown since the VM - was started. - -numOldOOPs - Answer the number of objects that reside in the old generation. - -numOTEs - Answer the number of entries that are currently allocated for the - object table. - -numScavenges - Answer the number of scavenges (fast collections of the young - generation) that happened since the VM was started. - -numWeakOOPs - Answer the number of weak objects that the garbage collector is - currently tracking. - -oldSpaceSize - Answer the number of bytes in the old generation. - -oldSpaceUsedBytes - Answer the number of bytes that are currently filled in the old - generation. - -reclaimedBytesPerGlobalGC - Answer the average number of bytes that are found to be garbage - during a global garbage collections. - -reclaimedBytesPerScavenge - Answer the average number of bytes that are found to be garbage - during a scavenge. - -reclaimedPercentPerScavenge - Answer the average percentage of allocated bytes that are found to - be garbage during a scavenge. If this number falls below 60-70 - you should definitely increment the size of the eden, because you - risk that scavenging is eating a considerable fraction of your - execution time; do the measurement on a restarted image, so that - the extra tenuring incurred when creating long-lived objects such - as classes or methods is not considered. - -survSpaceSize - Answer the number of bytes in the `survivor' area of the young - generation (the area to which young objects are relocated during - scavenges). - -survSpaceUsedBytes - Answer the number of bytes that are currently filled in the - `survivor' area of the young generation. - -tenuredBytesPerScavenge - Answer the average number of bytes that are promoted to oldspace - during a scavenge. - -timeBetweenGlobalGCs - Answer the average number of milliseconds between two global - garbage collections. - -timeBetweenGrowths - Answer the average number of milliseconds between decisions to - grow the heap. - -timeBetweenScavenges - Answer the average number of milliseconds between two scavenges - (fast collections of the young generation). - -timeToCollect - Answer the average number of milliseconds that a global garbage - collection takes. - -timeToCompact - Answer the average number of milliseconds that compacting the heap - takes. This the same time that is taken by growing the heap. - -timeToScavenge - Answer the average number of milliseconds that a scavenge takes - (fast collections of the young generation). - - - -File: gst-base.info, Node: ObjectMemory-builtins, Next: ObjectMemory-derived information, Prev: ObjectMemory-accessing, Up: ObjectMemory - -ObjectMemory: builtins ----------------------- - -update - Update the values in the object to the current state of the VM. - - - -File: gst-base.info, Node: ObjectMemory-derived information, Prev: ObjectMemory-builtins, Up: ObjectMemory - -ObjectMemory: derived information ---------------------------------- - -scavengesBeforeTenuring - Answer the number of scavenges that an object must on average - survive before being promoted to oldspace; this is however only an - estimate because objects that are reachable from oldspace have a - higher probability to be tenured soon, while objects that are only - reachable from thisContext have a lower probability to be tenured. - Anyway, if this number falls below 2-3 you should definitely - increment the size of eden and/or of survivor space, because you - are tenuring too often and relying too much on global garbage - collection to keep your heap clean; do the measurement on a - restarted image, so that the extra tenuring incurred when creating - long-lived objects such as classes or methods is not considered. - - - -File: gst-base.info, Node: OrderedCollection, Next: Package, Prev: ObjectMemory, Up: Base classes - -OrderedCollection -================= - -Defined in namespace Smalltalk -Superclass: SequenceableCollection -Category: Collections-Sequenceable - My instances represent ordered collections of arbitrary typed - objects which are not directly accessible by an index. They can - be accessed indirectly through an index, and can be manipulated by - adding to the end or based on content (such as add:after:) - -* Menu: - -* OrderedCollection class-instance creation:: (class) -* OrderedCollection-accessing:: (instance) -* OrderedCollection-adding:: (instance) -* OrderedCollection-removing:: (instance) - - -File: gst-base.info, Node: OrderedCollection class-instance creation, Next: OrderedCollection-accessing, Up: OrderedCollection - -OrderedCollection class: instance creation ------------------------------------------- - -new - Answer an OrderedCollection of default size - -new: anInteger - Answer an OrderedCollection of size anInteger - - - -File: gst-base.info, Node: OrderedCollection-accessing, Next: OrderedCollection-adding, Prev: OrderedCollection class-instance creation, Up: OrderedCollection - -OrderedCollection: accessing ----------------------------- - -at: anIndex - Answer the anIndex-th item of the receiver - -at: anIndex put: anObject - Store anObject at the anIndex-th item of the receiver, answer - anObject - -size - Return the number of objects in the receiver - - - -File: gst-base.info, Node: OrderedCollection-adding, Next: OrderedCollection-removing, Prev: OrderedCollection-accessing, Up: OrderedCollection - -OrderedCollection: adding -------------------------- - -add: anObject - Add anObject in the receiver, answer it - -add: newObject after: oldObject - Add newObject in the receiver just after oldObject, answer it. - Fail if oldObject can't be found - -add: newObject afterIndex: i - Add newObject in the receiver just after the i-th, answer it. - Fail if i < 0 or i > self size - -add: newObject before: oldObject - Add newObject in the receiver just before oldObject, answer it. - Fail if oldObject can't be found - -add: newObject beforeIndex: i - 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 - -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 - -Package -======= - -Defined in namespace Smalltalk -Superclass: Object -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-accessing:: (instance) - - -File: gst-base.info, Node: Package-accessing, Up: Package - -Package: accessing ------------------- - -allFiles - Answer an OrderedCollection of all the files, both built and - distributed, that are part of the package. - -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. - -directory: dir forBaseDir: baseDir - Set the base directory from which to load the package to dir. If - dir is a relative directory, store an absolute path composed from - the (already absolute) baseDir and from dir. - -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. - -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. - -name - Answer the name of the package. - -name: aString - Set to aString the name of the package. - -prerequisites - Answer a (modifiable) Set of prerequisites. - -printOn: aStream - Print a representation of the receiver on aStream (it happens to - be XML. - -printXmlOn: aStream collection: aCollection tag: aString - Private - Print aCollection on aStream as a sequence of aString - tags. - - - -File: gst-base.info, Node: PackageLoader, Next: PluggableAdaptor, Prev: Package, Up: Base classes - -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) - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info smalltalk-2.1.7/doc/gst-libs.info --- smalltalk-2.1.6/doc/gst-libs.info 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info 2003-12-17 14:58:54.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. +This is gst-libs.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-libs-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Libraries: (gst-libs). The GNU Smalltalk class libraries. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -25,370 +25,362 @@ with its equivalent in the printed manual, constitutes the Title Page.  Indirect: -gst-libs.info-1: 998 -gst-libs.info-2: 49199 -gst-libs.info-3: 96854 -gst-libs.info-4: 144836 -gst-libs.info-5: 181195 -gst-libs.info-6: 230775 -gst-libs.info-7: 280628 -gst-libs.info-8: 326754 -gst-libs.info-9: 346794 -gst-libs.info-10: 428927 +gst-libs.info-1: 1004 +gst-libs.info-2: 293564  Tag Table: (Indirect) -Node: Top998 -Node: BLOX2305 -Node: BLOX.BArc4847 -Node: BLOX.BArc-accessing5152 -Node: BLOX.BBalloon6686 -Node: BLOX.BBalloon class-accessing7150 -Node: BLOX.BBalloon-accessing7566 -Node: BLOX.BBalloon-initializing7950 -Node: BLOX.BBoundingBox8188 -Node: BLOX.BBoundingBox-accessing8651 -Node: BLOX.BButton11380 -Node: BLOX.BButton class-instance creation11847 -Node: BLOX.BButton-accessing12183 -Node: BLOX.BButtonLike16356 -Node: BLOX.BButtonLike-accessing16695 -Node: BLOX.BCanvas17484 -Node: BLOX.BCanvas-accessing18242 -Node: BLOX.BCanvas-geometry management19086 -Node: BLOX.BCanvas-widget protocol20793 -Node: BLOX.BCanvasObject22006 -Node: BLOX.BCanvasObject class-instance creation22540 -Node: BLOX.BCanvasObject-accessing22945 -Node: BLOX.BCanvasObject-widget protocol24883 -Node: BLOX.BCheckMenuItem26156 -Node: BLOX.BCheckMenuItem class-instance creation26595 -Node: BLOX.BCheckMenuItem-accessing26906 -Node: BLOX.BColorButton27356 -Node: BLOX.BColorButton-accessing27777 -Node: BLOX.BContainer28232 -Node: BLOX.BContainer-accessing28669 -Node: BLOX.BDialog29322 -Node: BLOX.BDialog class-instance creation29935 -Node: BLOX.BDialog class-prompters30838 -Node: BLOX.BDialog-accessing34361 -Node: BLOX.BDialog-widget protocol35555 -Node: BLOX.BDropDown36443 -Node: BLOX.BDropDown-accessing37365 -Node: BLOX.BDropDown-callbacks42615 -Node: BLOX.BDropDown-flexibility43227 -Node: BLOX.BDropDown-list box accessing44708 -Node: BLOX.BDropDown-widget protocol47744 -Node: BLOX.BDropDownEdit48673 -Node: BLOX.BDropDownEdit-accessing49199 -Node: BLOX.BDropDownEdit-accessing-overrides51349 -Node: BLOX.BDropDownEdit-text accessing51652 -Node: BLOX.BDropDownList53048 -Node: BLOX.BDropDownList-accessing53587 -Node: BLOX.BDropDownList-callbacks56260 -Node: BLOX.BDropDownList-list box accessing56946 -Node: BLOX.BEdit57372 -Node: BLOX.BEdit class-instance creation57779 -Node: BLOX.BEdit-accessing58103 -Node: BLOX.BEdit-widget protocol62452 -Node: BLOX.BEmbeddedImage64416 -Node: BLOX.BEmbeddedImage-accessing64757 -Node: BLOX.BEmbeddedText65692 -Node: BLOX.BEmbeddedText-accessing66044 -Node: BLOX.BEventSet68975 -Node: BLOX.BEventSet class-initializing69663 -Node: BLOX.BEventSet-accessing70117 -Node: BLOX.BEventSet-initializing70392 -Node: BLOX.BEventTarget70761 -Node: BLOX.BEventTarget-intercepting events71122 -Node: BLOX.BExtended77204 -Node: BLOX.BExtended-accessing78012 -Node: BLOX.BExtended-customization78262 -Node: BLOX.BForm79262 -Node: BLOX.BForm-accessing79625 -Node: BLOX.BImage81058 -Node: BLOX.BImage class-arrows81633 -Node: BLOX.BImage class-GNU82121 -Node: BLOX.BImage class-icons82361 -Node: BLOX.BImage class-instance creation82860 -Node: BLOX.BImage class-small icons83604 -Node: BLOX.BImage-accessing83972 -Node: BLOX.BImage-image management87086 -Node: BLOX.BImage-widget protocol89598 -Node: BLOX.BLabel89893 -Node: BLOX.BLabel class-initialization90275 -Node: BLOX.BLabel class-instance creation90541 -Node: BLOX.BLabel-accessing90912 -Node: BLOX.BLine95597 -Node: BLOX.BLine-accessing95933 -Node: BLOX.BList96489 -Node: BLOX.BList-accessing96854 -Node: BLOX.BList-widget protocol108736 -Node: BLOX.Blox110105 -Node: BLOX.Blox class-event dispatching111183 -Node: BLOX.Blox class-instance creation112460 -Node: BLOX.Blox class-utility112896 -Node: BLOX.Blox-accessing116019 -Node: BLOX.Blox-basic117359 -Node: BLOX.Blox-creating children117942 -Node: BLOX.Blox-customization118949 -Node: BLOX.Blox-widget protocol119732 -Node: BLOX.BMenu121979 -Node: BLOX.BMenu class-instance creation122367 -Node: BLOX.BMenu-accessing122770 -Node: BLOX.BMenu-callback registration123605 -Node: BLOX.BMenuBar124689 -Node: BLOX.BMenuBar-accessing125014 -Node: BLOX.BMenuItem125235 -Node: BLOX.BMenuItem class-instance creation125715 -Node: BLOX.BMenuItem-accessing126105 -Node: BLOX.BMenuObject126919 -Node: BLOX.BMenuObject-accessing127308 -Node: BLOX.BMenuObject-callback129633 -Node: BLOX.BOval130575 -Node: BLOX.BPolyline130889 -Node: BLOX.BPolyline-accessing131218 -Node: BLOX.BPopupMenu133541 -Node: BLOX.BPopupMenu-widget protocol133948 -Node: BLOX.BPopupWindow134151 -Node: BLOX.BPopupWindow-geometry management134744 -Node: BLOX.BPrimitive136798 -Node: BLOX.BPrimitive-accessing137179 -Node: BLOX.BProgress137396 -Node: BLOX.BProgress-accessing137718 -Node: BLOX.BRadioButton138950 -Node: BLOX.BRadioButton-accessing139289 -Node: BLOX.BRadioGroup140163 -Node: BLOX.BRadioGroup-accessing140786 -Node: BLOX.BRadioGroup-widget protocol141247 -Node: BLOX.BRectangle141563 -Node: BLOX.BRectangle-accessing141901 -Node: BLOX.BScrolledCanvas142375 -Node: BLOX.BSpline142794 -Node: BLOX.BSpline-accessing143121 -Node: BLOX.BText143538 -Node: BLOX.BText class-accessing144153 -Node: BLOX.BText class-instance creation144482 -Node: BLOX.BText-accessing144836 -Node: BLOX.BText-attributes150669 -Node: BLOX.BText-geometry management151926 -Node: BLOX.BText-images153491 -Node: BLOX.BText-inserting text155159 -Node: BLOX.BText-position & lines157161 -Node: BLOX.BTextAttributes158954 -Node: BLOX.BTextAttributes class-instance-creation shortcuts159410 -Node: BLOX.BTextAttributes-colors162255 -Node: BLOX.BTextAttributes-setting attributes163330 -Node: BLOX.BTextBindings167470 -Node: BLOX.BTextBindings class-instance creation168004 -Node: BLOX.BTextTags168242 -Node: BLOX.BToggle168601 -Node: BLOX.BToggle-accessing168980 -Node: BLOX.BTransientWindow169864 -Node: BLOX.BTransientWindow class-instance creation170373 -Node: BLOX.BTransientWindow-widget protocol170978 -Node: BLOX.BViewport171556 -Node: BLOX.BViewport-accessing171987 -Node: BLOX.BViewport-scrollbars172233 -Node: BLOX.BWidget173179 -Node: BLOX.BWidget class-popups173738 -Node: BLOX.BWidget-accessing174979 -Node: BLOX.BWidget-customization179580 -Node: BLOX.BWidget-geometry management181195 -Node: BLOX.BWidget-widget protocol197687 -Node: BLOX.BWindow199713 -Node: BLOX.BWindow class-instance creation200156 -Node: BLOX.BWindow-accessing200579 -Node: BLOX.BWindow-widget protocol203287 -Node: BLOX.Gui207983 -Node: BLOX.Gui-accessing208373 -Node: TCP208620 -Node: TCP.AbstractSocket209960 -Node: TCP.AbstractSocket class-defaults210566 -Node: TCP.AbstractSocket class-instance creation211440 -Node: TCP.AbstractSocket class-timed-out operations212023 -Node: TCP.AbstractSocket-accessing213002 -Node: TCP.AbstractSocket-printing214135 -Node: TCP.AbstractSocket-socket options214431 -Node: TCP.AbstractSocket-stream protocol215352 -Node: TCP.AbstractSocket-testing215913 -Node: TCP.AbstractSocketImpl216177 -Node: TCP.AbstractSocketImpl class-abstract216759 -Node: TCP.AbstractSocketImpl class-socket creation217205 -Node: TCP.AbstractSocketImpl-accessing217535 -Node: TCP.AbstractSocketImpl-asynchronous operations218684 -Node: TCP.AbstractSocketImpl-socket operations219414 -Node: TCP.AbstractSocketImpl-socket options221368 -Node: TCP.Datagram223330 -Node: TCP.Datagram class-instance creation223641 -Node: TCP.Datagram-accessing224940 -Node: TCP.DatagramSocket225961 -Node: TCP.DatagramSocket class-accessing226460 -Node: TCP.DatagramSocket class-initialization227097 -Node: TCP.DatagramSocket class-instance creation227447 -Node: TCP.DatagramSocket-accessing228450 -Node: TCP.DatagramSocket-direct operations229341 -Node: TCP.DatagramSocketImpl229644 -Node: TCP.DatagramSocketImpl class-parameters230067 -Node: TCP.DatagramSocketImpl-accessing230356 -Node: TCP.DatagramSocketImpl-socket operations230775 -Node: TCP.ICMPSocketImpl231915 -Node: TCP.ICMPSocketImpl class-implementation232214 -Node: TCP.IPAddress232498 -Node: TCP.IPAddress class-constants232952 -Node: TCP.IPAddress class-initialization233263 -Node: TCP.IPAddress class-instance creation233964 -Node: TCP.IPAddress-accessing237827 -Node: TCP.IPAddress-printing238953 -Node: TCP.MulticastSocket239168 -Node: TCP.MulticastSocket-instance creation239471 -Node: TCP.MulticastSocketImpl240290 -Node: TCP.MulticastSocketImpl-multicasting240610 -Node: TCP.OOBSocketImpl241385 -Node: TCP.OOBSocketImpl class-implementation241739 -Node: TCP.OOBSocketImpl-implementation242059 -Node: TCP.RawSocketImpl242454 -Node: TCP.RawSocketImpl class-parameters242746 -Node: TCP.ReadBuffer242974 -Node: TCP.ReadBuffer class-instance creation243436 -Node: TCP.ReadBuffer-buffer handling243893 -Node: TCP.ServerSocket244848 -Node: TCP.ServerSocket class-instance creation245219 -Node: TCP.ServerSocket-accessing246681 -Node: TCP.ServerSocket-initializing247592 -Node: TCP.Socket247973 -Node: TCP.Socket class-accessing248523 -Node: TCP.Socket class-instance creation249314 -Node: TCP.Socket class-tests250144 -Node: TCP.Socket class-well known ports251691 -Node: TCP.Socket-accessing253767 -Node: TCP.Socket-out-of-band data254066 -Node: TCP.Socket-printing254364 -Node: TCP.Socket-stream protocol254620 -Node: TCP.SocketAddress256701 -Node: TCP.SocketAddress class-abstract257165 -Node: TCP.SocketAddress class-accessing257595 -Node: TCP.SocketAddress class-host name lookup259589 -Node: TCP.SocketAddress class-initialization260381 -Node: TCP.SocketAddress-accessing261577 -Node: TCP.SocketImpl262570 -Node: TCP.SocketImpl class-parameters262942 -Node: TCP.SocketImpl-abstract263190 -Node: TCP.SocketImpl-socket operations263509 -Node: TCP.TCPSocketImpl263937 -Node: TCP.TCPSocketImpl class-implementation264274 -Node: TCP.TCPSocketImpl-implementation264594 -Node: TCP.UDPSocketImpl264909 -Node: TCP.UDPSocketImpl class-implementation265254 -Node: TCP.UDPSocketImpl-multicasting265572 -Node: TCP.WriteBuffer266466 -Node: TCP.WriteBuffer-buffer handling266870 -Node: I18N267310 -Node: I18N.BigEndianFileStream269871 -Node: I18N.EncodedStream270219 -Node: I18N.EncodedStream class-initializing270747 -Node: I18N.EncodedStream class-instance creation271618 -Node: I18N.Encoder272528 -Node: I18N.Encoder class-instance creation273080 -Node: I18N.Encoder-stream operations273504 -Node: I18N.Encoders.ComposeUCS4BE274560 -Node: I18N.Encoders.ComposeUCS4BE-stream operation275085 -Node: I18N.Encoders.ComposeUCS4LE275422 -Node: I18N.Encoders.ComposeUCS4LE-stream operation275960 -Node: I18N.Encoders.FromUCS4276300 -Node: I18N.Encoders.FromUCS4-stream operation276807 -Node: I18N.Encoders.FromUTF7277080 -Node: I18N.Encoders.FromUTF7 class-initialization277462 -Node: I18N.Encoders.FromUTF7-converting277774 -Node: I18N.Encoders.Iconv278446 -Node: I18N.Encoders.Iconv-stream operation279120 -Node: I18N.Encoders.SplitUCS4BE279517 -Node: I18N.Encoders.SplitUCS4BE-stream operation280057 -Node: I18N.Encoders.SplitUCS4LE280628 -Node: I18N.Encoders.SplitUCS4LE-stream operation281172 -Node: I18N.Encoders.ToUCS4281743 -Node: I18N.Encoders.ToUCS4-stream operation282275 -Node: I18N.Encoders.ToUTF7282551 -Node: I18N.Encoders.ToUTF7 class-initialization283060 -Node: I18N.Encoders.ToUTF7-conversion283362 -Node: I18N.FileStreamSegment283798 -Node: I18N.FileStreamSegment-basic284224 -Node: I18N.IncompleteSequenceError284530 -Node: I18N.IncompleteSequenceError-accessing285083 -Node: I18N.InvalidCharsetError285335 -Node: I18N.InvalidCharsetError-accessing285768 -Node: I18N.InvalidSequenceError286004 -Node: I18N.InvalidSequenceError-accessing286425 -Node: I18N.LcMessages286665 -Node: I18N.LcMessages class-accessing287111 -Node: I18N.LcMessages-accessing287484 -Node: I18N.LcMessages-opening MO files288209 -Node: I18N.LcMessagesCatalog288993 -Node: I18N.LcMessagesDomain289358 -Node: I18N.LcMessagesDomain class-opening MO files290458 -Node: I18N.LcMessagesDomain-handling the cache290835 -Node: I18N.LcMessagesDomain-querying291360 -Node: I18N.LcMessagesDummyDomain292469 -Node: I18N.LcMessagesMoFileVersion0292878 -Node: I18N.LcMessagesMoFileVersion0 class-documentation293561 -Node: I18N.LcMessagesMoFileVersion0 class-plurals301508 -Node: I18N.LcMessagesMoFileVersion0-flushing the cache302144 -Node: I18N.LcMessagesTerritoryDomain302571 -Node: I18N.LcMessagesTerritoryDomain class-instance creation303035 -Node: I18N.LcMonetary303401 -Node: I18N.LcMonetary class-accessing303925 -Node: I18N.LcMonetary-printing304297 -Node: I18N.LcMonetaryISO305082 -Node: I18N.LcMonetaryISO class-accessing305366 -Node: I18N.LcNumeric305628 -Node: I18N.LcNumeric class-accessing306093 -Node: I18N.LcNumeric-printing306460 -Node: I18N.LcPrintFormats306950 -Node: I18N.LcPrintFormats-printing307503 -Node: I18N.LcTime307999 -Node: I18N.LcTime class-accessing308487 -Node: I18N.LcTime-printing308839 -Node: I18N.LcTime-tests311125 -Node: I18N.Locale311345 -Node: I18N.Locale class-initialization312000 -Node: I18N.Locale class-instance creation312374 -Node: I18N.Locale-subobjects313013 -Node: I18N.LocaleConventions313640 -Node: I18N.LocaleConventions class-accessing314076 -Node: I18N.LocaleConventions-accessing314786 -Node: I18N.LocaleData315103 -Node: I18N.LocaleData class-accessing315605 -Node: I18N.LocaleData class-database316662 -Node: I18N.LocaleData-accessing317119 -Node: I18N.LocaleData-initialization318278 -Node: I18N.RTEAlternativeNode318664 -Node: I18N.RTEAlternativeNode class-compiling319029 -Node: I18N.RTEAlternativeNode-computing319435 -Node: I18N.RTEBinaryNode319997 -Node: I18N.RTEBinaryNode class-compiling320391 -Node: I18N.RTEBinaryNode-compiling320745 -Node: I18N.RTEBinaryNode-computing321042 -Node: I18N.RTELiteralNode321570 -Node: I18N.RTELiteralNode class-initializing321923 -Node: I18N.RTELiteralNode-computing322222 -Node: I18N.RTENegationNode322638 -Node: I18N.RTENegationNode class-initializing322998 -Node: I18N.RTENegationNode-computing323299 -Node: I18N.RTEParameterNode323742 -Node: I18N.RTEParameterNode-computing324055 -Node: I18N.RunTimeExpression324358 -Node: I18N.RunTimeExpression class-compiling324796 -Node: I18N.RunTimeExpression class-initializing325406 -Node: I18N.RunTimeExpression class-instance creation325767 -Node: I18N.RunTimeExpression-computing326128 -Node: XML326539 +Node: Top1004 +Node: BLOX2308 +Node: BLOX.BArc4850 +Node: BLOX.BArc-accessing5155 +Node: BLOX.BBalloon6689 +Node: BLOX.BBalloon class-accessing7153 +Node: BLOX.BBalloon-accessing7569 +Node: BLOX.BBalloon-initializing7953 +Node: BLOX.BBoundingBox8191 +Node: BLOX.BBoundingBox-accessing8654 +Node: BLOX.BButton11383 +Node: BLOX.BButton class-instance creation11850 +Node: BLOX.BButton-accessing12186 +Node: BLOX.BButtonLike16359 +Node: BLOX.BButtonLike-accessing16698 +Node: BLOX.BCanvas17487 +Node: BLOX.BCanvas-accessing18245 +Node: BLOX.BCanvas-geometry management19089 +Node: BLOX.BCanvas-widget protocol20796 +Node: BLOX.BCanvasObject22009 +Node: BLOX.BCanvasObject class-instance creation22543 +Node: BLOX.BCanvasObject-accessing22948 +Node: BLOX.BCanvasObject-widget protocol24886 +Node: BLOX.BCheckMenuItem26159 +Node: BLOX.BCheckMenuItem class-instance creation26598 +Node: BLOX.BCheckMenuItem-accessing26909 +Node: BLOX.BColorButton27359 +Node: BLOX.BColorButton-accessing27780 +Node: BLOX.BContainer28235 +Node: BLOX.BContainer-accessing28672 +Node: BLOX.BDialog29325 +Node: BLOX.BDialog class-instance creation29938 +Node: BLOX.BDialog class-prompters30841 +Node: BLOX.BDialog-accessing34364 +Node: BLOX.BDialog-widget protocol35558 +Node: BLOX.BDropDown36446 +Node: BLOX.BDropDown-accessing37368 +Node: BLOX.BDropDown-callbacks42618 +Node: BLOX.BDropDown-flexibility43230 +Node: BLOX.BDropDown-list box accessing44711 +Node: BLOX.BDropDown-widget protocol47747 +Node: BLOX.BDropDownEdit48676 +Node: BLOX.BDropDownEdit-accessing49202 +Node: BLOX.BDropDownEdit-accessing-overrides51352 +Node: BLOX.BDropDownEdit-text accessing51655 +Node: BLOX.BDropDownList53051 +Node: BLOX.BDropDownList-accessing53590 +Node: BLOX.BDropDownList-callbacks56263 +Node: BLOX.BDropDownList-list box accessing56949 +Node: BLOX.BEdit57375 +Node: BLOX.BEdit class-instance creation57782 +Node: BLOX.BEdit-accessing58106 +Node: BLOX.BEdit-widget protocol62455 +Node: BLOX.BEmbeddedImage64419 +Node: BLOX.BEmbeddedImage-accessing64760 +Node: BLOX.BEmbeddedText65695 +Node: BLOX.BEmbeddedText-accessing66047 +Node: BLOX.BEventSet68978 +Node: BLOX.BEventSet class-initializing69666 +Node: BLOX.BEventSet-accessing70120 +Node: BLOX.BEventSet-initializing70395 +Node: BLOX.BEventTarget70764 +Node: BLOX.BEventTarget-intercepting events71125 +Node: BLOX.BExtended77207 +Node: BLOX.BExtended-accessing78015 +Node: BLOX.BExtended-customization78265 +Node: BLOX.BForm79265 +Node: BLOX.BForm-accessing79628 +Node: BLOX.BImage81061 +Node: BLOX.BImage class-arrows81636 +Node: BLOX.BImage class-GNU82124 +Node: BLOX.BImage class-icons82364 +Node: BLOX.BImage class-instance creation82863 +Node: BLOX.BImage class-small icons83607 +Node: BLOX.BImage-accessing83975 +Node: BLOX.BImage-image management87089 +Node: BLOX.BImage-widget protocol89601 +Node: BLOX.BLabel89896 +Node: BLOX.BLabel class-initialization90278 +Node: BLOX.BLabel class-instance creation90544 +Node: BLOX.BLabel-accessing90915 +Node: BLOX.BLine95600 +Node: BLOX.BLine-accessing95936 +Node: BLOX.BList96492 +Node: BLOX.BList-accessing96857 +Node: BLOX.BList-widget protocol108739 +Node: BLOX.Blox110108 +Node: BLOX.Blox class-event dispatching111186 +Node: BLOX.Blox class-instance creation112463 +Node: BLOX.Blox class-utility112899 +Node: BLOX.Blox-accessing116022 +Node: BLOX.Blox-basic117362 +Node: BLOX.Blox-creating children117945 +Node: BLOX.Blox-customization118952 +Node: BLOX.Blox-widget protocol119735 +Node: BLOX.BMenu121982 +Node: BLOX.BMenu class-instance creation122370 +Node: BLOX.BMenu-accessing122773 +Node: BLOX.BMenu-callback registration123608 +Node: BLOX.BMenuBar124692 +Node: BLOX.BMenuBar-accessing125017 +Node: BLOX.BMenuItem125238 +Node: BLOX.BMenuItem class-instance creation125718 +Node: BLOX.BMenuItem-accessing126108 +Node: BLOX.BMenuObject126922 +Node: BLOX.BMenuObject-accessing127311 +Node: BLOX.BMenuObject-callback129636 +Node: BLOX.BOval130578 +Node: BLOX.BPolyline130892 +Node: BLOX.BPolyline-accessing131221 +Node: BLOX.BPopupMenu133544 +Node: BLOX.BPopupMenu-widget protocol133951 +Node: BLOX.BPopupWindow134154 +Node: BLOX.BPopupWindow-geometry management134747 +Node: BLOX.BPrimitive136801 +Node: BLOX.BPrimitive-accessing137182 +Node: BLOX.BProgress137399 +Node: BLOX.BProgress-accessing137721 +Node: BLOX.BRadioButton138953 +Node: BLOX.BRadioButton-accessing139292 +Node: BLOX.BRadioGroup140166 +Node: BLOX.BRadioGroup-accessing140789 +Node: BLOX.BRadioGroup-widget protocol141250 +Node: BLOX.BRectangle141566 +Node: BLOX.BRectangle-accessing141904 +Node: BLOX.BScrolledCanvas142378 +Node: BLOX.BSpline142797 +Node: BLOX.BSpline-accessing143124 +Node: BLOX.BText143541 +Node: BLOX.BText class-accessing144156 +Node: BLOX.BText class-instance creation144485 +Node: BLOX.BText-accessing144839 +Node: BLOX.BText-attributes150672 +Node: BLOX.BText-geometry management151929 +Node: BLOX.BText-images153494 +Node: BLOX.BText-inserting text155162 +Node: BLOX.BText-position & lines157164 +Node: BLOX.BTextAttributes158957 +Node: BLOX.BTextAttributes class-instance-creation shortcuts159413 +Node: BLOX.BTextAttributes-colors162258 +Node: BLOX.BTextAttributes-setting attributes163333 +Node: BLOX.BTextBindings167473 +Node: BLOX.BTextBindings class-instance creation168007 +Node: BLOX.BTextTags168245 +Node: BLOX.BToggle168604 +Node: BLOX.BToggle-accessing168983 +Node: BLOX.BTransientWindow169867 +Node: BLOX.BTransientWindow class-instance creation170376 +Node: BLOX.BTransientWindow-widget protocol170981 +Node: BLOX.BViewport171559 +Node: BLOX.BViewport-accessing171990 +Node: BLOX.BViewport-scrollbars172236 +Node: BLOX.BWidget173182 +Node: BLOX.BWidget class-popups173741 +Node: BLOX.BWidget-accessing174982 +Node: BLOX.BWidget-customization179583 +Node: BLOX.BWidget-geometry management181198 +Node: BLOX.BWidget-widget protocol197690 +Node: BLOX.BWindow199716 +Node: BLOX.BWindow class-instance creation200159 +Node: BLOX.BWindow-accessing200582 +Node: BLOX.BWindow-widget protocol203290 +Node: BLOX.Gui207986 +Node: BLOX.Gui-accessing208376 +Node: TCP208623 +Node: TCP.AbstractSocket209963 +Node: TCP.AbstractSocket class-defaults210569 +Node: TCP.AbstractSocket class-instance creation211443 +Node: TCP.AbstractSocket class-timed-out operations212026 +Node: TCP.AbstractSocket-accessing213005 +Node: TCP.AbstractSocket-printing214138 +Node: TCP.AbstractSocket-socket options214434 +Node: TCP.AbstractSocket-stream protocol215355 +Node: TCP.AbstractSocket-testing215916 +Node: TCP.AbstractSocketImpl216180 +Node: TCP.AbstractSocketImpl class-abstract216762 +Node: TCP.AbstractSocketImpl class-socket creation217208 +Node: TCP.AbstractSocketImpl-accessing217538 +Node: TCP.AbstractSocketImpl-asynchronous operations218687 +Node: TCP.AbstractSocketImpl-socket operations219417 +Node: TCP.AbstractSocketImpl-socket options221371 +Node: TCP.Datagram223333 +Node: TCP.Datagram class-instance creation223644 +Node: TCP.Datagram-accessing224943 +Node: TCP.DatagramSocket225964 +Node: TCP.DatagramSocket class-accessing226463 +Node: TCP.DatagramSocket class-initialization227100 +Node: TCP.DatagramSocket class-instance creation227450 +Node: TCP.DatagramSocket-accessing228453 +Node: TCP.DatagramSocket-direct operations229344 +Node: TCP.DatagramSocketImpl229647 +Node: TCP.DatagramSocketImpl class-parameters230070 +Node: TCP.DatagramSocketImpl-accessing230359 +Node: TCP.DatagramSocketImpl-socket operations230778 +Node: TCP.ICMPSocketImpl231918 +Node: TCP.ICMPSocketImpl class-implementation232217 +Node: TCP.IPAddress232501 +Node: TCP.IPAddress class-constants232955 +Node: TCP.IPAddress class-initialization233266 +Node: TCP.IPAddress class-instance creation233967 +Node: TCP.IPAddress-accessing237830 +Node: TCP.IPAddress-printing238956 +Node: TCP.MulticastSocket239171 +Node: TCP.MulticastSocket-instance creation239474 +Node: TCP.MulticastSocketImpl240293 +Node: TCP.MulticastSocketImpl-multicasting240613 +Node: TCP.OOBSocketImpl241388 +Node: TCP.OOBSocketImpl class-implementation241742 +Node: TCP.OOBSocketImpl-implementation242062 +Node: TCP.RawSocketImpl242457 +Node: TCP.RawSocketImpl class-parameters242749 +Node: TCP.ReadBuffer242977 +Node: TCP.ReadBuffer class-instance creation243439 +Node: TCP.ReadBuffer-buffer handling243896 +Node: TCP.ServerSocket244851 +Node: TCP.ServerSocket class-instance creation245222 +Node: TCP.ServerSocket-accessing246684 +Node: TCP.ServerSocket-initializing247595 +Node: TCP.Socket247976 +Node: TCP.Socket class-accessing248526 +Node: TCP.Socket class-instance creation249317 +Node: TCP.Socket class-tests250147 +Node: TCP.Socket class-well known ports251694 +Node: TCP.Socket-accessing253770 +Node: TCP.Socket-out-of-band data254069 +Node: TCP.Socket-printing254367 +Node: TCP.Socket-stream protocol254623 +Node: TCP.SocketAddress256704 +Node: TCP.SocketAddress class-abstract257168 +Node: TCP.SocketAddress class-accessing257598 +Node: TCP.SocketAddress class-host name lookup259592 +Node: TCP.SocketAddress class-initialization260384 +Node: TCP.SocketAddress-accessing261580 +Node: TCP.SocketImpl262573 +Node: TCP.SocketImpl class-parameters262945 +Node: TCP.SocketImpl-abstract263193 +Node: TCP.SocketImpl-socket operations263512 +Node: TCP.TCPSocketImpl263940 +Node: TCP.TCPSocketImpl class-implementation264277 +Node: TCP.TCPSocketImpl-implementation264597 +Node: TCP.UDPSocketImpl264912 +Node: TCP.UDPSocketImpl class-implementation265257 +Node: TCP.UDPSocketImpl-multicasting265575 +Node: TCP.WriteBuffer266469 +Node: TCP.WriteBuffer-buffer handling266873 +Node: I18N267313 +Node: I18N.BigEndianFileStream269874 +Node: I18N.EncodedStream270222 +Node: I18N.EncodedStream class-initializing270750 +Node: I18N.EncodedStream class-instance creation271621 +Node: I18N.Encoder272531 +Node: I18N.Encoder class-instance creation273083 +Node: I18N.Encoder-stream operations273507 +Node: I18N.Encoders.ComposeUCS4BE274563 +Node: I18N.Encoders.ComposeUCS4BE-stream operation275088 +Node: I18N.Encoders.ComposeUCS4LE275425 +Node: I18N.Encoders.ComposeUCS4LE-stream operation275963 +Node: I18N.Encoders.FromUCS4276303 +Node: I18N.Encoders.FromUCS4-stream operation276810 +Node: I18N.Encoders.FromUTF7277083 +Node: I18N.Encoders.FromUTF7 class-initialization277465 +Node: I18N.Encoders.FromUTF7-converting277777 +Node: I18N.Encoders.Iconv278449 +Node: I18N.Encoders.Iconv-stream operation279123 +Node: I18N.Encoders.SplitUCS4BE279520 +Node: I18N.Encoders.SplitUCS4BE-stream operation280060 +Node: I18N.Encoders.SplitUCS4LE280631 +Node: I18N.Encoders.SplitUCS4LE-stream operation281175 +Node: I18N.Encoders.ToUCS4281746 +Node: I18N.Encoders.ToUCS4-stream operation282278 +Node: I18N.Encoders.ToUTF7282554 +Node: I18N.Encoders.ToUTF7 class-initialization283063 +Node: I18N.Encoders.ToUTF7-conversion283365 +Node: I18N.FileStreamSegment283801 +Node: I18N.FileStreamSegment-basic284227 +Node: I18N.IncompleteSequenceError284533 +Node: I18N.IncompleteSequenceError-accessing285086 +Node: I18N.InvalidCharsetError285338 +Node: I18N.InvalidCharsetError-accessing285771 +Node: I18N.InvalidSequenceError286007 +Node: I18N.InvalidSequenceError-accessing286428 +Node: I18N.LcMessages286668 +Node: I18N.LcMessages class-accessing287114 +Node: I18N.LcMessages-accessing287487 +Node: I18N.LcMessages-opening MO files288212 +Node: I18N.LcMessagesCatalog288996 +Node: I18N.LcMessagesDomain289361 +Node: I18N.LcMessagesDomain class-opening MO files290461 +Node: I18N.LcMessagesDomain-handling the cache290838 +Node: I18N.LcMessagesDomain-querying291363 +Node: I18N.LcMessagesDummyDomain292472 +Node: I18N.LcMessagesMoFileVersion0292881 +Node: I18N.LcMessagesMoFileVersion0 class-documentation293564 +Node: I18N.LcMessagesMoFileVersion0 class-plurals301511 +Node: I18N.LcMessagesMoFileVersion0-flushing the cache302147 +Node: I18N.LcMessagesTerritoryDomain302574 +Node: I18N.LcMessagesTerritoryDomain class-instance creation303038 +Node: I18N.LcMonetary303404 +Node: I18N.LcMonetary class-accessing303928 +Node: I18N.LcMonetary-printing304300 +Node: I18N.LcMonetaryISO305085 +Node: I18N.LcMonetaryISO class-accessing305369 +Node: I18N.LcNumeric305631 +Node: I18N.LcNumeric class-accessing306096 +Node: I18N.LcNumeric-printing306463 +Node: I18N.LcPrintFormats306953 +Node: I18N.LcPrintFormats-printing307506 +Node: I18N.LcTime308002 +Node: I18N.LcTime class-accessing308490 +Node: I18N.LcTime-printing308842 +Node: I18N.LcTime-tests311128 +Node: I18N.Locale311348 +Node: I18N.Locale class-initialization312003 +Node: I18N.Locale class-instance creation312377 +Node: I18N.Locale-subobjects313016 +Node: I18N.LocaleConventions313643 +Node: I18N.LocaleConventions class-accessing314079 +Node: I18N.LocaleConventions-accessing314789 +Node: I18N.LocaleData315106 +Node: I18N.LocaleData class-accessing315608 +Node: I18N.LocaleData class-database316665 +Node: I18N.LocaleData-accessing317122 +Node: I18N.LocaleData-initialization318281 +Node: I18N.RTEAlternativeNode318667 +Node: I18N.RTEAlternativeNode class-compiling319032 +Node: I18N.RTEAlternativeNode-computing319438 +Node: I18N.RTEBinaryNode320000 +Node: I18N.RTEBinaryNode class-compiling320394 +Node: I18N.RTEBinaryNode-compiling320748 +Node: I18N.RTEBinaryNode-computing321045 +Node: I18N.RTELiteralNode321573 +Node: I18N.RTELiteralNode class-initializing321926 +Node: I18N.RTELiteralNode-computing322225 +Node: I18N.RTENegationNode322641 +Node: I18N.RTENegationNode class-initializing323001 +Node: I18N.RTENegationNode-computing323302 +Node: I18N.RTEParameterNode323745 +Node: I18N.RTEParameterNode-computing324058 +Node: I18N.RunTimeExpression324361 +Node: I18N.RunTimeExpression class-compiling324799 +Node: I18N.RunTimeExpression class-initializing325409 +Node: I18N.RunTimeExpression class-instance creation325770 +Node: I18N.RunTimeExpression-computing326131 +Node: XML326542 Node: Building a DOM from XML326754 -Node: Building XML332137 -Node: Using DTDs335305 -Node: XSL Processing338559 -Node: Attributions339984 -Node: Class index340323 -Node: Method index346794 -Node: Cross-reference428927 +Node: Building XML332135 +Node: Using DTDs335300 +Node: XSL Processing338551 +Node: Attributions339973 +Node: Class index340309 +Node: Method index346780 +Node: Cross-reference428913  End Tag Table diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-1 smalltalk-2.1.7/doc/gst-libs.info-1 --- smalltalk-2.1.6/doc/gst-libs.info-1 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-1 2003-12-17 14:58:54.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. +This is gst-libs.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-libs-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Libraries: (gst-libs). The GNU Smalltalk class libraries. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -28,10 +28,10 @@ - This document describes the class libraries that are distributed +This document describes the class libraries that are distributed together with the GNU Smalltalk programming language. -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -1421,3 +1421,7032 @@ * BLOX.BDropDownEdit-accessing-overrides:: (instance) * BLOX.BDropDownEdit-text accessing:: (instance) + +File: gst-libs.info, Node: BLOX.BDropDownEdit-accessing, Next: BLOX.BDropDownEdit-accessing-overrides, Up: BLOX.BDropDownEdit + +BLOX.BDropDownEdit: accessing +----------------------------- + +backgroundColor: aColor + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +font: aString + Set the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor: aColor + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +highlightBackground: aColor + Set the value of the highlightBackground option for the widget. + Specifies the background color to use when displaying selected + items in the list widget and the selection in the text widget. + +highlightForeground: aColor + Set the value of the highlightBackground option for the widget. + Specifies the background color to use when displaying selected + items in the list widget and the selection in the text widget. + + + +File: gst-libs.info, Node: BLOX.BDropDownEdit-accessing-overrides, Next: BLOX.BDropDownEdit-text accessing, Prev: BLOX.BDropDownEdit-accessing, Up: BLOX.BDropDownEdit + +BLOX.BDropDownEdit: accessing-overrides +--------------------------------------- + +text + Answer the text shown in the widget + + + +File: gst-libs.info, Node: BLOX.BDropDownEdit-text accessing, Prev: BLOX.BDropDownEdit-accessing-overrides, Up: BLOX.BDropDownEdit + +BLOX.BDropDownEdit: text accessing +---------------------------------- + +insertAtEnd: aString + Clear the selection and append aString at the end of the text + widget. + +replaceSelection: aString + Insert aString in the text widget at the current insertion point, + replacing the currently selected text (if any), and leaving the + text selected. + +selectAll + Select the whole contents of the text widget + +selectFrom: first to: last + Sets the selection of the text widget to include the characters + starting with the one indexed by first (the very first character in + the widget having index 1) and ending with the one just before + last. If last refers to the same character as first or an earlier + one, then the text widget's selection is cleared. + +selection + Answer an empty string if the text widget has no selection, else + answer the currently selected text + +selectionRange + Answer nil if the text widget has no selection, else answer an + Interval object whose first item is the index of the first + character in the selection, and whose last item is the index of + the character just after the last one in the selection. + +text: aString + Set the contents of the text widget and select them. + + + +File: gst-libs.info, Node: BLOX.BDropDownList, Next: BLOX.BEdit, Prev: BLOX.BDropDownEdit, Up: BLOX + +BLOX.BDropDownList +================== + +Defined in namespace BLOX +Superclass: BLOX.BDropDown +Category: Graphics-Examples + This class resembles a list box widget, but its actual list shows + up only when you click the arrow button beside the currently + selected item. + +* Menu: + +* BLOX.BDropDownList-accessing:: (instance) +* BLOX.BDropDownList-callbacks:: (instance) +* BLOX.BDropDownList-list box accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BDropDownList-accessing, Next: BLOX.BDropDownList-callbacks, Up: BLOX.BDropDownList + +BLOX.BDropDownList: accessing +----------------------------- + +backgroundColor: aColor + Set the value of the backgroundColor for the widget, which in this + class is set for the list widget and, when the focus is outside + the control, for the text widget as well. Specifies the normal + background color to use when displaying the widget. + +font: aString + Set the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor: aColor + Set the value of the foregroundColor for the widget, which in this + class is set for the list widget and, when the focus is outside + the control, for the text widget as well. Specifies the normal + foreground color to use when displaying the widget. + +highlightBackground: aColor + Answer the value of the highlightBackground option for the widget. + Specifies the background color to use when displaying selected + items in the list widget and, when the focus is inside the + control, for the text widget as well. + +highlightForeground: aColor + Answer the value of the highlightForeground option for the widget. + Specifies the foreground color to use when displaying selected + items in the list widget and, when the focus is inside the + control, for the text widget as well. + +text + Answer the text that the user has picked from the widget and/or + typed in the control (the exact way the text is entered will be + established by subclasses, since this is an abstract method). + + + +File: gst-libs.info, Node: BLOX.BDropDownList-callbacks, Next: BLOX.BDropDownList-list box accessing, Prev: BLOX.BDropDownList-accessing, Up: BLOX.BDropDownList + +BLOX.BDropDownList: callbacks +----------------------------- + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a selector with at most two arguemtnts) when the active item in + the receiver changegs. If the method accepts two arguments, the + receiver is passed as the first parameter. If the method accepts + one or two arguments, the selected index is passed as the last + parameter. + +invokeCallback + Generate a synthetic callback. + + + +File: gst-libs.info, Node: BLOX.BDropDownList-list box accessing, Prev: BLOX.BDropDownList-callbacks, Up: BLOX.BDropDownList + +BLOX.BDropDownList: list box accessing +-------------------------------------- + +index + Answer the value of the index option for the widget. Since it is + not possible to modify an item once it has been picked from the + list widget, this is always defined for BDropDownList widgets. + + + +File: gst-libs.info, Node: BLOX.BEdit, Next: BLOX.BEmbeddedImage, Prev: BLOX.BDropDownList, Up: BLOX + +BLOX.BEdit +========== + +Defined in namespace BLOX +Superclass: BLOX.BPrimitive +Category: Graphics-Windows + I am a widget showing one line of modifiable text. + +* Menu: + +* BLOX.BEdit class-instance creation:: (class) +* BLOX.BEdit-accessing:: (instance) +* BLOX.BEdit-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BEdit class-instance creation, Next: BLOX.BEdit-accessing, Up: BLOX.BEdit + +BLOX.BEdit class: instance creation +----------------------------------- + +new: parent contents: aString + Answer a new BEdit widget laid inside the given parent widget, + with a default content of aString + + + +File: gst-libs.info, Node: BLOX.BEdit-accessing, Next: BLOX.BEdit-widget protocol, Prev: BLOX.BEdit class-instance creation, Up: BLOX.BEdit + +BLOX.BEdit: accessing +--------------------- + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +callback + Answer a DirectedMessage that is sent when the receiver is + modified, or nil if none has been set up. + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a zero- or one-argument selector) when the receiver is modified. + If the method accepts an argument, the receiver is passed. + +contents + Return the contents of the widget + +contents: newText + Set the contents of the widget + +font + Answer the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +font: value + Set the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor + Answer the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +foregroundColor: value + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +selectBackground + Answer the value of the selectBackground option for the widget. + Specifies the background color to use when displaying selected + parts of the widget. + +selectBackground: value + Set the value of the selectBackground option for the widget. + Specifies the background color to use when displaying selected + parts of the widget. + +selectForeground + Answer the value of the selectForeground option for the widget. + Specifies the foreground color to use when displaying selected + parts of the widget. + +selectForeground: value + Set the value of the selectForeground option for the widget. + Specifies the foreground color to use when displaying selected + parts of the widget. + + + +File: gst-libs.info, Node: BLOX.BEdit-widget protocol, Prev: BLOX.BEdit-accessing, Up: BLOX.BEdit + +BLOX.BEdit: widget protocol +--------------------------- + +destroyed + Private - The receiver has been destroyed, clear the corresponding + Tcl variable to avoid memory leaks. + +hasSelection + Answer whether there is selected text in the widget + +insertAtEnd: aString + Clear the selection and append aString at the end of the widget. + +insertText: aString + Insert aString in the widget at the current insertion point, + replacing the currently selected text (if any). + +invokeCallback + Generate a synthetic callback. + +nextPut: aCharacter + Clear the selection and append aCharacter at the end of the widget. + +nextPutAll: aString + Clear the selection and append aString at the end of the widget. + +nl + Clear the selection and append a linefeed character at the end of + the widget. + +replaceSelection: aString + Insert aString in the widget at the current insertion point, + replacing the currently selected text (if any), and leaving the + text selected. + +selectAll + Select the whole contents of the widget. + +selectFrom: first to: last + Sets the selection to include the characters starting with the one + indexed by first (the very first character in the widget having + index 1) and ending with the one just before last. If last refers + to the same character as first or an earlier one, then the + widget's selection is cleared. + +selection + Answer an empty string if the widget has no selection, else answer + the currently selected text + +selectionRange + Answer nil if the widget has no selection, else answer an Interval + object whose first item is the index of the first character in the + selection, and whose last item is the index of the character just + after the last one in the selection. + +space + Clear the selection and append a space at the end of the widget. + + + +File: gst-libs.info, Node: BLOX.BEmbeddedImage, Next: BLOX.BEmbeddedText, Prev: BLOX.BEdit, Up: BLOX + +BLOX.BEmbeddedImage +=================== + +Defined in namespace BLOX +Superclass: BLOX.BBoundingBox +Category: Graphics-Windows + I can draw a colorful image inside the canvas. + +* Menu: + +* BLOX.BEmbeddedImage-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BEmbeddedImage-accessing, Up: BLOX.BEmbeddedImage + +BLOX.BEmbeddedImage: accessing +------------------------------ + +copyInto: aBlox + Answer a new BCanvasObject identical to this but displayed into + another canvas, newCanvas. The new instance is not created at the + time it is returned. + +data + Answer the data of the image. The result will be a String + containing image data either as Base-64 encoded GIF data, as XPM + data, or as PPM data. + +data: aString + Set the data of the image. aString may contain the data either as + Base-64 encoded GIF data, as XPM data, or as PPM data. No changes + are visible until you toggle a redraw using the appropriate method. + +redraw + Force the object to be displayed in the parent canvas, creating it + if it has not been inserted for real in the parent, and refresh + its position and image data if it has changed. + + + +File: gst-libs.info, Node: BLOX.BEmbeddedText, Next: BLOX.BEventSet, Prev: BLOX.BEmbeddedImage, Up: BLOX + +BLOX.BEmbeddedText +================== + +Defined in namespace BLOX +Superclass: BLOX.BBoundingBox +Category: Graphics-Windows + I can draw text in all sorts of colors, sizes and fonts. + +* Menu: + +* BLOX.BEmbeddedText-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BEmbeddedText-accessing, Up: BLOX.BEmbeddedText + +BLOX.BEmbeddedText: accessing +----------------------------- + +font + Answer the value of the font option for the canvas object. + Specifies the font to use when drawing text inside the widget. The + font can be given as either an X font name or a Blox font + description string. X font names are given as many fields, each + led by a minus, and each of which can be replaced by an * to + indicate a default value is ok: foundry, family, weight, slant, + setwidth, addstyle, pixel size, point size (the same as pixel size + for historical reasons), horizontal resolution, vertical + resolution, spacing, width, charset and character encoding. Blox + font description strings have three fields, which must be + separated by a space and of which only the first is mandatory: the + font family, the font size in points (or in pixels if a negative + value is supplied), and a number of styles separated by a space + (valid styles are normal, bold, italic, underline and overstrike). + Examples of valid fonts are "Helvetica 10 Bold", "Times -14", + "Futura Bold Underline". You must enclose the font family in + braces if it is made of two or more words. + +font: font + Set the value of the font option for the canvas object. Specifies + the font to use when drawing text inside the widget. The font can + be given as either an X font name or a Blox font description + string. X font names are given as many fields, each led by a + minus, and each of which can be replaced by an * to indicate a + default value is ok: foundry, family, weight, slant, setwidth, + addstyle, pixel size, point size (the same as pixel size for + historical reasons), horizontal resolution, vertical resolution, + spacing, width, charset and character encoding. Blox font + description strings have three fields, which must be separated by + a space and of which only the first is mandatory: the font family, + the font size in points (or in pixels if a negative value is + supplied), and a number of styles separated by a space (valid + styles are normal, bold, italic, underline and overstrike). + Examples of valid fonts are "Helvetica 10 Bold", "Times -14", + "Futura Bold Underline". You must enclose the font family in + braces if it is made of two or more words. + +justify + Answer how to justify the text within its bounding region. + +justify: aSymbol + Sets how to justify the text within its bounding region. Can be + #left, #right or #center (the default). + +redraw + Force the object to be displayed in the parent canvas, creating it + if it has not been inserted for real in the parent, and refresh + its position. + +text + Answer the text that is printed by the object + +text: aString + Set the text that is printed by the object + + + +File: gst-libs.info, Node: BLOX.BEventSet, Next: BLOX.BEventTarget, Prev: BLOX.BEmbeddedText, Up: BLOX + +BLOX.BEventSet +============== + +Defined in namespace BLOX +Superclass: BLOX.BEventTarget +Category: Graphics-Windows + I combine event handlers and let you apply them to many objects. + Basically, you derive a class from me, override the #initialize: + method to establish the handlers, then use the #addEventSet: method + understood by every Blox class to add the event handlers specified + by the receiver to the object. + +* Menu: + +* BLOX.BEventSet class-initializing:: (class) +* BLOX.BEventSet-accessing:: (instance) +* BLOX.BEventSet-initializing:: (instance) + + +File: gst-libs.info, Node: BLOX.BEventSet class-initializing, Next: BLOX.BEventSet-accessing, Up: BLOX.BEventSet + +BLOX.BEventSet class: initializing +---------------------------------- + +new + This method should not be called for instances of this class. + +new: widget + Private - Create a new event set object that will attach to the + given widget. Answer the object. Note: this method should be + called by #addEventSet:, not directly + + + +File: gst-libs.info, Node: BLOX.BEventSet-accessing, Next: BLOX.BEventSet-initializing, Prev: BLOX.BEventSet class-initializing, Up: BLOX.BEventSet + +BLOX.BEventSet: accessing +------------------------- + +widget + Answer the widget to which the receiver is attached. + + + +File: gst-libs.info, Node: BLOX.BEventSet-initializing, Prev: BLOX.BEventSet-accessing, Up: BLOX.BEventSet + +BLOX.BEventSet: initializing +---------------------------- + +initialize: aBWidget + Initialize the receiver's event handlers to attach to aBWidget. + You can override this of course, but don't forget to call the + superclass implementation first. + + + +File: gst-libs.info, Node: BLOX.BEventTarget, Next: BLOX.BExtended, Prev: BLOX.BEventSet, Up: BLOX + +BLOX.BEventTarget +================= + +Defined in namespace BLOX +Superclass: Object +Category: Graphics-Windows + I track all the event handling procedures that you apply to an + object. + +* Menu: + +* BLOX.BEventTarget-intercepting events:: (instance) + + +File: gst-libs.info, Node: BLOX.BEventTarget-intercepting events, Up: BLOX.BEventTarget + +BLOX.BEventTarget: intercepting events +-------------------------------------- + +addEventSet: aBEventSetSublass + Add to the receiver the event handlers implemented by an instance + of aBEventSetSubclass. Answer the new instance of + aBEventSetSublass. + +onAsciiKeyEventSend: aSelector to: anObject + When an ASCII key is pressed and the receiver has the focus, send + the 1-argument message identified by aSelector to anObject, + passing to it a Character. + +onDestroySend: aSelector to: anObject + When the receiver is destroyed, send the unary message identified + by aSelector to anObject. + +onFocusEnterEventSend: aSelector to: anObject + When the focus enters the receiver, send the unary message + identified by aSelector to anObject. + +onFocusLeaveEventSend: aSelector to: anObject + When the focus leaves the receiver, send the unary message + identified by aSelector to anObject. + +onKeyEvent: key send: aSelector to: anObject + When the given key is pressed and the receiver has the focus, send + the unary message identified by aSelector to anObject. Examples + for key are: 'Ctrl-1', 'Alt-X', 'Meta-plus', 'enter'. The last + two cases include example of special key identifiers; these + include: 'backslash', 'exclam', 'quotedbl', 'dollar', 'asterisk', + 'less', 'greater', 'asciicircum' (caret), 'question', 'equal', + 'parenleft', 'parenright', 'colon', 'semicolon', 'bar' (pipe + sign), 'underscore', 'percent', 'minus', 'plus', 'BackSpace', + 'Delete', 'Insert', 'Return', 'End', 'Home', 'Prior' (Pgup), + 'Next' (Pgdn), 'F1'..'F24', 'Caps_Lock', 'Num_Lock', 'Tab', + 'Left', 'Right', 'Up', 'Down'. There are in addition four special + identifiers which map to platform-specific keys: '', + '', '', '' (all with the angular brackets!). + + test + +onKeyEventSend: aSelector to: anObject + When a key is pressed and the receiver has the focus, send the + 1-argument message identified by aSelector to anObject. The pressed + key will be passed as a String parameter; some of the keys will + send special key identifiers such as those explained in the + documentation for #onKeyEvent:send:to: Look at the #eventTest test + program in the BloxTestSuite to find out the parameters passed to + such an event procedure + + test + +onKeyUpEventSend: aSelector to: anObject + When a key has been released and the receiver has the focus, send + the 1-argument message identified by aSelector to anObject. The + released key will be passed as a String parameter; some of the keys + will send special key identifiers such as those explained in the + documentation for #onKeyEvent:send:to: Look at the #eventTest test + program in the BloxTestSuite to find out the parameters passed to + such an event procedure + +onMouseDoubleEvent: button send: aSelector to: anObject + When the given button is double-clicked on the mouse, send the + 1-argument message identified by aSelector to anObject. The mouse + position will be passed as a Point. + +onMouseDoubleEventSend: aSelector to: anObject + When a button is double-clicked on the mouse, send the 2-argument + message identified by aSelector to anObject. The mouse position + will be passed as a Point in the first parameter, the button + number will be passed as an Integer in the second parameter. + +onMouseDownEvent: button send: aSelector to: anObject + When the given button is pressed on the mouse, send the 1-argument + message identified by aSelector to anObject. The mouse position + will be passed as a Point. + +onMouseDownEventSend: aSelector to: anObject + When a button is pressed on the mouse, send the 2-argument message + identified by aSelector to anObject. The mouse position will be + passed as a Point in the first parameter, the button number will + be passed as an Integer in the second parameter. + +onMouseEnterEventSend: aSelector to: anObject + When the mouse enters the widget, send the unary message + identified by aSelector to anObject. + +onMouseLeaveEventSend: aSelector to: anObject + When the mouse leaves the widget, send the unary message + identified by aSelector to anObject. + +onMouseMoveEvent: button send: aSelector to: anObject + When the mouse is moved while the given button is pressed on the + mouse, send the 1-argument message identified by aSelector to + anObject. The mouse position will be passed as a Point. + +onMouseMoveEventSend: aSelector to: anObject + When the mouse is moved, send the 1-argument message identified by + aSelector to anObject. The mouse position will be passed as a + Point. + +onMouseTripleEvent: button send: aSelector to: anObject + When the given button is triple-clicked on the mouse, send the + 1-argument message identified by aSelector to anObject. The mouse + position will be passed as a Point. + +onMouseTripleEventSend: aSelector to: anObject + When a button is triple-clicked on the mouse, send the 2-argument + message identified by aSelector to anObject. The mouse position + will be passed as a Point in the first parameter, the button + number will be passed as an Integer in the second parameter. + +onMouseUpEvent: button send: aSelector to: anObject + When the given button is released on the mouse, send the + 1-argument message identified by aSelector to anObject. The mouse + position will be passed as a Point. + +onMouseUpEventSend: aSelector to: anObject + When a button is released on the mouse, send the 2-argument + message identified by aSelector to anObject. The mouse position + will be passed as a Point in the first parameter, the button + number will be passed as an Integer in the second parameter. + +onResizeSend: aSelector to: anObject + When the receiver is resized, send the 1-argument message + identified by aSelector to anObject. The new size will be passed + as a Point. + + + +File: gst-libs.info, Node: BLOX.BExtended, Next: BLOX.BForm, Prev: BLOX.BEventTarget, Up: BLOX + +BLOX.BExtended +============== + +Defined in namespace BLOX +Superclass: BLOX.BWidget +Category: Graphics-Windows + Just like Gui, I serve as a base for complex objects which expose + an individual protocol but internally use a Blox widget for + creating their user interface. Unlike Gui, however, the instances + of my subclasses understand the standard widget protocol. Just + override my newPrimitive method to return another widget, and + you'll get a class which interacts with the user like that widget + (a list box, a text box, or even a label) but exposes a different + protocol. + +* Menu: + +* BLOX.BExtended-accessing:: (instance) +* BLOX.BExtended-customization:: (instance) + + +File: gst-libs.info, Node: BLOX.BExtended-accessing, Next: BLOX.BExtended-customization, Up: BLOX.BExtended + +BLOX.BExtended: accessing +------------------------- + +asPrimitiveWidget + Answer the primitive widget that implements the receiver. + + + +File: gst-libs.info, Node: BLOX.BExtended-customization, Prev: BLOX.BExtended-accessing, Up: BLOX.BExtended + +BLOX.BExtended: customization +----------------------------- + +create + After this method is called (the call is made automatically) the + receiver will be attached to a `primitive' widget (which can be in + turn another extended widget). This method is public not because + you can call it, but because it can be useful to override it, not + forgetting the call to super (which only calls #newPrimitive and + saves the result), to perform some initialization on the primitive + widget just created; overriding #create is in fact more generic + than overriding #newPrimitive. For an example of this, see the + implementation of BButtonLike. + +newPrimitive + Create and answer a new widget on which the implementation of the + receiver will be based. You should not call this method directly; + instead you must override it in BExtended's subclasses. + + + +File: gst-libs.info, Node: BLOX.BForm, Next: BLOX.BImage, Prev: BLOX.BExtended, Up: BLOX + +BLOX.BForm +========== + +Defined in namespace BLOX +Superclass: BLOX.BPrimitive +Category: Graphics-Windows + I am used to group many widgets together. I leave the heavy task + of managing their position to the user. + +* Menu: + +* BLOX.BForm-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BForm-accessing, Up: BLOX.BForm + +BLOX.BForm: accessing +--------------------- + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +defaultHeight + Answer the value of the defaultHeight option for the widget. + Specifies the desired height for the form in pixels. If this option + is less than or equal to zero then the window will not request any + size at all. + +defaultHeight: value + Set the value of the defaultHeight option for the widget. + Specifies the desired height for the form in pixels. If this option + is less than or equal to zero then the window will not request any + size at all. + +defaultWidth + Answer the value of the defaultWidth option for the widget. + Specifies the desired width for the form in pixels. If this option + is less than or equal to zero then the window will not request any + size at all. + +defaultWidth: value + Set the value of the defaultWidth option for the widget. + Specifies the desired width for the form in pixels. If this option + is less than or equal to zero then the window will not request any + size at all. + + + +File: gst-libs.info, Node: BLOX.BImage, Next: BLOX.BLabel, Prev: BLOX.BForm, Up: BLOX + +BLOX.BImage +=========== + +Defined in namespace BLOX +Superclass: BLOX.BPrimitive +Category: Graphics-Windows + I can display colorful images. + +* Menu: + +* BLOX.BImage class-arrows:: (class) +* BLOX.BImage class-GNU:: (class) +* BLOX.BImage class-icons:: (class) +* BLOX.BImage class-instance creation:: (class) +* BLOX.BImage class-small icons:: (class) +* BLOX.BImage-accessing:: (instance) +* BLOX.BImage-image management:: (instance) +* BLOX.BImage-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BImage class-arrows, Next: BLOX.BImage class-GNU, Up: BLOX.BImage + +BLOX.BImage class: arrows +------------------------- + +downArrow + Answer the XPM representation of a 12x12 arrow pointing downwards. + +leftArrow + Answer the XPM representation of a 12x12 arrow pointing leftwards. + +rightArrow + Answer the XPM representation of a 12x12 arrow pointing rightwards. + +upArrow + Answer the XPM representation of a 12x12 arrow pointing upwards. + + + +File: gst-libs.info, Node: BLOX.BImage class-GNU, Next: BLOX.BImage class-icons, Prev: BLOX.BImage class-arrows, Up: BLOX.BImage + +BLOX.BImage class: GNU +---------------------- + +gnu + Answer the XPM representation of a 48x48 GNU. + + + +File: gst-libs.info, Node: BLOX.BImage class-icons, Next: BLOX.BImage class-instance creation, Prev: BLOX.BImage class-GNU, Up: BLOX.BImage + +BLOX.BImage class: icons +------------------------ + +exclaim + Answer the XPM representation of a 32x32 exclamation mark icon. + +info + Answer the XPM representation of a 32x32 `information' icon. + +question + Answer the XPM representation of a 32x32 question mark icon. + +stop + Answer the XPM representation of a 32x32 `critical stop' icon. + + + +File: gst-libs.info, Node: BLOX.BImage class-instance creation, Next: BLOX.BImage class-small icons, Prev: BLOX.BImage class-icons, Up: BLOX.BImage + +BLOX.BImage class: instance creation +------------------------------------ + +new: parent data: aString + Answer a new BImage widget laid inside the given parent widget, + loading data from the given string (Base-64 encoded GIF, XPM, PPM + are supported). + +new: parent image: aFileStream + Answer a new BImage widget laid inside the given parent widget, + loading data from the given file (GIF, XPM, PPM are supported). + +new: parent size: aPoint + Answer a new BImage widget laid inside the given parent widget, + showing by default a transparent image of aPoint size. + + + +File: gst-libs.info, Node: BLOX.BImage class-small icons, Next: BLOX.BImage-accessing, Prev: BLOX.BImage class-instance creation, Up: BLOX.BImage + +BLOX.BImage class: small icons +------------------------------ + +directory + Answer the Base-64 GIF representation of a `directory folder' icon. + +file + Answer the Base-64 GIF representation of a `file' icon. + + + +File: gst-libs.info, Node: BLOX.BImage-accessing, Next: BLOX.BImage-image management, Prev: BLOX.BImage class-small icons, Up: BLOX.BImage + +BLOX.BImage: accessing +---------------------- + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +displayHeight + Answer the value of the displayHeight option for the widget. + Specifies the height of the image in pixels. This is not the + height of the widget, but specifies the area of the widget that + will be taken by the image. + +displayHeight: value + Set the value of the displayHeight option for the widget. + Specifies the height of the image in pixels. This is not the + height of the widget, but specifies the area of the widget that + will be taken by the image. + +displayWidth + Answer the value of the displayWidth option for the widget. + Specifies the width of the image in pixels. This is not the width + of the widget, but specifies the area of the widget that will be + taken by the image. + +displayWidth: value + Set the value of the displayWidth option for the widget. + Specifies the width of the image in pixels. This is not the width + of the widget, but specifies the area of the widget that will be + taken by the image. + +foregroundColor + Answer the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +foregroundColor: value + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +gamma + Answer the value of the gamma option for the widget. Specifies + that the colors allocated for displaying the image widget should + be corrected for a non-linear display with the specified gamma + exponent value. (The intensity produced by most CRT displays is a + power function of the input value, to a good approximation; gamma + is the exponent and is typically around 2). The value specified + must be greater than zero. The default value is one (no + correction). In general, values greater than one will make the + image lighter, and values less than one will make it darker. + +gamma: value + Set the value of the gamma option for the widget. Specifies that + the colors allocated for displaying the image widget should be + corrected for a non-linear display with the specified gamma + exponent value. (The intensity produced by most CRT displays is a + power function of the input value, to a good approximation; gamma + is the exponent and is typically around 2). The value specified + must be greater than zero. The default value is one (no + correction). In general, values greater than one will make the + image lighter, and values less than one will make it darker. + + + +File: gst-libs.info, Node: BLOX.BImage-image management, Next: BLOX.BImage-widget protocol, Prev: BLOX.BImage-accessing, Up: BLOX.BImage + +BLOX.BImage: image management +----------------------------- + +blank + Blank the corresponding image + +data: aString + Set the image to be drawn to aString, which can be a GIF in + Base-64 representation or an X pixelmap. + +dither + Recalculate the dithered image in the window where the image is + displayed. The dithering algorithm used in displaying images + propagates quantization errors from one pixel to its neighbors. + If the image data is supplied in pieces, the dithered image may + not be exactly correct. Normally the difference is not + noticeable, but if it is a problem, this command can be used to + fix it. + +fillFrom: origin extent: extent color: color + Fill a rectangle with the given origin and extent, using the given + color. + +fillFrom: origin to: corner color: color + Fill a rectangle between the given corners, using the given color. + +fillRectangle: rectangle color: color + Fill a rectangle having the given bounding box, using the given + color. + +image: aFileStream + Read a GIF or XPM image from aFileStream. The whole contents of + the file are read, not only from the file position. + +imageHeight + Specifies the height of the image, in pixels. This option is + useful primarily in situations where you wish to build up the + contents of the image piece by piece. A value of zero (the + default) allows the image to expand or shrink vertically to fit + the data stored in it. + +imageWidth + Specifies the width of the image, in pixels. This option is useful + primarily in situations where you wish to build up the contents of + the image piece by piece. A value of zero (the default) allows the + image to expand or shrink horizontally to fit the data stored in + it. + +lineFrom: origin extent: extent color: color + Draw a line with the given origin and extent, using the given + color. + +lineFrom: origin to: corner color: color + This method's functionality has not been implemented yet. + +lineFrom: origin toX: endX color: color + Draw an horizontal line between the given corners, using the given + color. + +lineFrom: origin toY: endY color: color + Draw a vertical line between the given corners, using the given + color. + +lineInside: rectangle color: color + Draw a line having the given bounding box, using the given color. + + + +File: gst-libs.info, Node: BLOX.BImage-widget protocol, Prev: BLOX.BImage-image management, Up: BLOX.BImage + +BLOX.BImage: widget protocol +---------------------------- + +destroyed + Private - The receiver has been destroyed, clear the corresponding + Tcl image to avoid memory leaks. + + + +File: gst-libs.info, Node: BLOX.BLabel, Next: BLOX.BLine, Prev: BLOX.BImage, Up: BLOX + +BLOX.BLabel +=========== + +Defined in namespace BLOX +Superclass: BLOX.BPrimitive +Category: Graphics-Windows + I am a label showing static text. + +* Menu: + +* BLOX.BLabel class-initialization:: (class) +* BLOX.BLabel class-instance creation:: (class) +* BLOX.BLabel-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BLabel class-initialization, Next: BLOX.BLabel class-instance creation, Up: BLOX.BLabel + +BLOX.BLabel class: initialization +--------------------------------- + +initialize + Private - Initialize the receiver's class variables. + + + +File: gst-libs.info, Node: BLOX.BLabel class-instance creation, Next: BLOX.BLabel-accessing, Prev: BLOX.BLabel class-initialization, Up: BLOX.BLabel + +BLOX.BLabel class: instance creation +------------------------------------ + +new: parent label: label + Answer a new BLabel widget laid inside the given parent widget, + showing by default the `label' String. + + + +File: gst-libs.info, Node: BLOX.BLabel-accessing, Prev: BLOX.BLabel class-instance creation, Up: BLOX.BLabel + +BLOX.BLabel: accessing +---------------------- + +alignment + Answer the value of the anchor option for the widget. Specifies + how the information in a widget (e.g. text or a bitmap) is to be + displayed in the widget. Must be one of the symbols #topLeft, + #topCenter, #topRight, #leftCenter, #center, #rightCenter, + #bottomLeft, #bottomCenter, #bottomRight. For example, #topLeft + means display the information such that its top-left corner is at + the top-left corner of the widget. + +alignment: aSymbol + Set the value of the anchor option for the widget. Specifies how + the information in a widget (e.g. text or a bitmap) is to be + displayed in the widget. Must be one of the symbols #topLeft, + #topCenter, #topRight, #leftCenter, #center, #rightCenter, + #bottomLeft, #bottomCenter, #bottomRight. For example, #topLeft + means display the information such that its top-left corner is at + the top-left corner of the widget. + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +font + Answer the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +font: value + Set the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor + Answer the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +foregroundColor: value + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +label + Answer the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + +label: value + Set the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + + + +File: gst-libs.info, Node: BLOX.BLine, Next: BLOX.BList, Prev: BLOX.BLabel, Up: BLOX + +BLOX.BLine +========== + +Defined in namespace BLOX +Superclass: BLOX.BBoundingBox +Category: Graphics-Windows + I only draw straight lines but I can do that very well, even + without a ruler... + +* Menu: + +* BLOX.BLine-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BLine-accessing, Up: BLOX.BLine + +BLOX.BLine: accessing +--------------------- + +cap + Answer the way in which caps are to be drawn at the endpoints of + the line. The answer may be #butt (the default), #projecting, or + #round). + +cap: aSymbol + Set the way in which caps are to be drawn at the endpoints of the + line. aSymbol may be #butt (the default), #projecting, or #round). + +width + Answer the width with which the line is drawn. + +width: pixels + Set the width with which the line is drawn. + + + +File: gst-libs.info, Node: BLOX.BList, Next: BLOX.Blox, Prev: BLOX.BLine, Up: BLOX + +BLOX.BList +========== + +Defined in namespace BLOX +Superclass: BLOX.BViewport +Category: Graphics-Windows + I represent a list box from which you can choose one or more + elements. + +* Menu: + +* BLOX.BList-accessing:: (instance) +* BLOX.BList-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BList-accessing, Next: BLOX.BList-widget protocol, Up: BLOX.BList + +BLOX.BList: accessing +--------------------- + +add: anObject afterIndex: index + Add an element with the given value after another element whose + index is contained in the index parameter. The label displayed in + the widget is anObject's displayString. Answer anObject. + +add: aString element: anObject afterIndex: index + Add an element with the aString label after another element whose + index is contained in the index parameter. This method allows the + client to decide autonomously the label that the widget will + display. If anObject is nil, then string is used as the element + as well. If aString is nil, then the element's displayString is + used as the label. Answer anObject or, if it is nil, aString. + +addLast: anObject + Add an element with the given value at the end of the listbox. + The label displayed in the widget is anObject's displayString. + Answer anObject. + +addLast: aString element: anObject + Add an element with the given value at the end of the listbox. + This method allows the client to decide autonomously the label + that the widget will display. If anObject is nil, then string is + used as the element as well. If aString is nil, then the + element's displayString is used as the label. Answer anObject or, + if it is nil, aString. + +associationAt: anIndex + Answer an association whose key is the item at the given position + in the listbox and whose value is the label used to display that + item. + +at: anIndex + Answer the element displayed at the given position in the list box. + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +contents: elementList + Set the elements displayed in the listbox, and set the labels to + be their displayStrings. + +contents: stringCollection elements: elementList + Set the elements displayed in the listbox to be those in + elementList, and set the labels to be the corresponding elements + in stringCollection. The two collections must have the same size. + +do: aBlock + Iterate over each element of the listbox and pass it to aBlock. + +elements + Answer the collection of objects that represent the elements + displayed by the list box. + +elements: elementList + Set the elements displayed in the listbox, and set the labels to + be their displayStrings. + +font + Answer the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +font: value + Set the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor + Answer the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +foregroundColor: value + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +highlightBackground + Answer the value of the highlightBackground option for the widget. + Specifies the background color to use when displaying selected + items in the widget. + +highlightBackground: value + Set the value of the highlightBackground option for the widget. + Specifies the background color to use when displaying selected + items in the widget. + +highlightForeground + Answer the value of the highlightForeground option for the widget. + Specifies the foreground color to use when displaying selected + items in the widget. + +highlightForeground: value + Set the value of the highlightForeground option for the widget. + Specifies the foreground color to use when displaying selected + items in the widget. + +index + Answer the value of the index option for the widget. Indicates + the element that has the location cursor. This item will be + displayed in the highlightForeground color, and with the + corresponding background color. + +indexAt: point + Answer the index of the element that covers the point in the + listbox window specified by x and y (in pixel coordinates). If no + element covers that point, then the closest element to that point + is used. + +isSelected: index + Answer whether the element indicated by index is currently + selected. + +labelAt: anIndex + Answer the label displayed at the given position in the list box. + +labels + Answer the labels displayed by the list box. + +labelsDo: aBlock + Iterate over each listbox element's label and pass it to aBlock. + +mode + Answer the value of the mode option for the widget. Specifies one + of several styles for manipulating the selection. The value of the + option may be either single, browse, multiple, or extended. If + the selection mode is single or browse, at most one element can be + selected in the listbox at once. Clicking button 1 on an + unselected element selects it and deselects any other selected + item, while clicking on a selected element has no effect. In + browse mode it is also possible to drag the selection with button + 1. That is, moving the mouse while button 1 is pressed keeps the + item under the cursor selected. If the selection mode is multiple + or extended, any number of elements may be selected at once, + including discontiguous ranges. In multiple mode, clicking button + 1 on an element toggles its selection state without affecting any + other elements. In extended mode, pressing button 1 on an element + selects it, deselects everything else, and sets the anchor to the + element under the mouse; dragging the mouse with button 1 down + extends the selection to include all the elements between the + anchor and the element under the mouse, inclusive. In extended + mode, the selected range can be adjusted by pressing button 1 with + the Shift key down: this modifies the selection to consist of the + elements between the anchor and the element under the mouse, + inclusive. The un-anchored end of this new selection can also be + dragged with the button down. Also in extended mode, pressing + button 1 with the Control key down starts a toggle operation: the + anchor is set to the element under the mouse, and its selection + state is reversed. The selection state of other elements is not + changed. If the mouse is dragged with button 1 down, then the + selection state of all elements between the anchor and the element + under the mouse is set to match that of the anchor element; the + selection state of all other elements remains what it was before + the toggle operation began. Most people will probably want to use + browse mode for single selections and extended mode for multiple + selections; the other modes appear to be useful only in special + situations. + +mode: value + Set the value of the mode option for the widget. Specifies one of + several styles for manipulating the selection. The value of the + option may be either single, browse, multiple, or extended. If + the selection mode is single or browse, at most one element can be + selected in the listbox at once. Clicking button 1 on an + unselected element selects it and deselects any other selected + item, while clicking on a selected element has no effect. In + browse mode it is also possible to drag the selection with button + 1. That is, moving the mouse while button 1 is pressed keeps the + item under the cursor selected. If the selection mode is multiple + or extended, any number of elements may be selected at once, + including discontiguous ranges. In multiple mode, clicking button + 1 on an element toggles its selection state without affecting any + other elements. In extended mode, pressing button 1 on an element + selects it, deselects everything else, and sets the anchor to the + element under the mouse; dragging the mouse with button 1 down + extends the selection to include all the elements between the + anchor and the element under the mouse, inclusive. In extended + mode, the selected range can be adjusted by pressing button 1 with + the Shift key down: this modifies the selection to consist of the + elements between the anchor and the element under the mouse, + inclusive. The un-anchored end of this new selection can also be + dragged with the button down. Also in extended mode, pressing + button 1 with the Control key down starts a toggle operation: the + anchor is set to the element under the mouse, and its selection + state is reversed. The selection state of other elements is not + changed. If the mouse is dragged with button 1 down, then the + selection state of all elements between the anchor and the element + under the mouse is set to match that of the anchor element; the + selection state of all other elements remains what it was before + the toggle operation began. Most people will probably want to use + browse mode for single selections and extended mode for multiple + selections; the other modes appear to be useful only in special + situations. + +numberOfStrings + Answer the number of items in the list box + + would + +removeAtIndex: index + Remove the item at the given index in the list box, answering the + object associated to the element (i.e. the value that #at: would + have returned for the given index) + +size + Answer the number of items in the list box + + + +File: gst-libs.info, Node: BLOX.BList-widget protocol, Prev: BLOX.BList-accessing, Up: BLOX.BList + +BLOX.BList: widget protocol +--------------------------- + +callback + Answer a DirectedMessage that is sent when the active item in the + receiver changes, or nil if none has been set up. + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a selector with at most two arguemtnts) when the active item in + the receiver changegs. If the method accepts two arguments, the + receiver is passed as the first parameter. If the method accepts + one or two arguments, the selected index is passed as the last + parameter. + +highlight: index + Highlight the item at the given position in the listbox. + +invokeCallback + Generate a synthetic callback. + +select: index + Highlight the item at the given position in the listbox, without + unhighlighting other items. This is meant for multiple- or + extended-mode listboxes, but can be used with other selection mode + in particular cases. + +show: index + Ensure that the item at the given position in the listbox is + visible. + +unhighlight + Unhighlight all the items in the listbox. + +unselect: index + Unhighlight the item at the given position in the listbox, without + affecting the state of the other items. + + + +File: gst-libs.info, Node: BLOX.Blox, Next: BLOX.BMenu, Prev: BLOX.BList, Up: BLOX + +BLOX.Blox +========= + +Defined in namespace BLOX +Superclass: BLOX.BEventTarget +Category: Graphics-Windows + I am the superclass for every visible user interface object + (excluding canvas items, which are pretty different). I provide + common methods and a simple Tcl interface for internal use. In + addition, I expose class methods that do many interesting + event-handling things. + + NOTE: some of the methods (notably geometry methods) may not be + suitable for all Blox subclasses and may be included only for + backwards compatibility towards 1.1.5 BLOX. You should use + geometry methods only for subclasses of BWidget. + +* Menu: + +* BLOX.Blox class-event dispatching:: (class) +* BLOX.Blox class-instance creation:: (class) +* BLOX.Blox class-utility:: (class) +* BLOX.Blox-accessing:: (instance) +* BLOX.Blox-basic:: (instance) +* BLOX.Blox-creating children:: (instance) +* BLOX.Blox-customization:: (instance) +* BLOX.Blox-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.Blox class-event dispatching, Next: BLOX.Blox class-instance creation, Up: BLOX.Blox + +BLOX.Blox class: event dispatching +---------------------------------- + + balances + +dispatchEvents + If this is the outermost dispatching loop that is started, + dispatch events until the number of calls to #terminateMainLoop + balances the number of calls to #dispatchEvents; return instantly + if this is not the outermost dispatching loop that is started. + + upon + +dispatchEvents: mainWindow + Dispatch some events; return instantly if this is not the outermost + dispatching loop that is started, else loop until the number of + calls to #dispatchEvents balance the number of calls to + #terminateMainLoop. In addition, set up an event handler that + will call #terminateMainLoop upon destruction of the `mainWindow' + widget (which can be any kind of BWidget, but will be typically a + BWindow). + + balances + +terminateMainLoop + Terminate the event dispatching loop if this call to + #terminateMainLoop balances the number of calls to + #dispatchEvents. Answer whether the calls are balanced. + +update: aspect + Initialize the Tcl and Blox environments; executed automatically + on startup. + + + +File: gst-libs.info, Node: BLOX.Blox class-instance creation, Next: BLOX.Blox class-utility, Prev: BLOX.Blox class-event dispatching, Up: BLOX.Blox + +BLOX.Blox class: instance creation +---------------------------------- + +new + This method should not be called for instances of this class. + +new: parent + Create a new widget of the type identified by the receiver, inside + the given parent widget. Answer the new widget + + + +File: gst-libs.info, Node: BLOX.Blox class-utility, Next: BLOX.Blox-accessing, Prev: BLOX.Blox class-instance creation, Up: BLOX.Blox + +BLOX.Blox class: utility +------------------------ + +active + Answer the currently active Blox, or nil if the focus does not + belong to a Smalltalk window. + +at: aPoint + Answer the Blox containing the given point on the screen, or nil + if no Blox contains the given point (either because no Smalltalk + window is there or because it is covered by another window). + +atMouse + Answer the Blox under the mouse cursor's hot spot, or nil if no + Blox contains the given point (either because no Smalltalk window + is there or because it is covered by another window). + +beep + Produce a bell + +clearClipboard + Clear the clipboard, answer its old contents. + +clipboard + Retrieve the text in the clipboard. + +clipboard: aString + Set the contents of the clipboard to aString (or empty the + clipboard if aString is nil). + +createColor: red green: green blue: blue + Answer a color that can be passed to methods such as + `backgroundColor:'. The color will have the given RGB components + (range is 0~65535). + +createColor: cyan magenta: magenta yellow: yellow + Answer a color that can be passed to methods such as + `backgroundColor:'. The color will have the given CMY components + (range is 0~65535). + +createColor: cyan magenta: magenta yellow: yellow black: black + Answer a color that can be passed to methods such as + `backgroundColor:'. The color will have the given CMYK components + (range is 0~65535). + +createColor: hue saturation: sat value: value + Answer a color that can be passed to methods such as + `backgroundColor:'. The color will have the given HSV components + (range is 0~65535). + +fonts + Answer the names of the font families in the system. Additionally, + `Times', `Courier' and `Helvetica' are always made available. + +mousePointer + If the mouse pointer is on the same screen as the application's + windows, returns a Point containing the pointer's x and y + coordinates measured in pixels in the screen's root window (under + X, if a virtual root window is in use on the screen, the position + is computed in the whole desktop, not relative to the top-left + corner of the currently shown portion). If the mouse pointer + isn't on the same screen as window then answer nil. + +platform + Answer the platform on which Blox is running; it can be either + #unix, #macintosh or #windows. + +screenOrigin + Answer a Point indicating the coordinates of the upper left point + of the screen in the virtual root window on which the + application's windows are drawn (under Windows and the Macintosh, + that's always 0 @ 0) + +screenResolution + Answer a Point containing the resolution in dots per inch of the + screen, in the x and y directions. + +screenSize + Answer a Point containing the size of the virtual root window on + which the application's windows are drawn (under Windows and the + Macintosh, that's the size of the screen) + + + +File: gst-libs.info, Node: BLOX.Blox-accessing, Next: BLOX.Blox-basic, Prev: BLOX.Blox class-utility, Up: BLOX.Blox + +BLOX.Blox: accessing +-------------------- + +state + Answer the value of the state option for the widget. Specifies + one of three states for the button: normal, active, or disabled. + In normal state the button is displayed using the foreground and + background options. The active state is typically used when the + pointer is over the button. In active state the button is + displayed using the activeForeground and activeBackground options. + Disabled state means that the button should be insensitive: the + application will refuse to activate the widget and will ignore + mouse button presses. + +state: value + Set the value of the state option for the widget. Specifies one + of three states for the button: normal, active, or disabled. In + normal state the button is displayed using the foreground and + background options. The active state is typically used when the + pointer is over the button. In active state the button is + displayed using the activeForeground and activeBackground options. + Disabled state means that the button should be insensitive: the + application will refuse to activate the widget and will ignore + mouse button presses. + + + +File: gst-libs.info, Node: BLOX.Blox-basic, Next: BLOX.Blox-creating children, Prev: BLOX.Blox-accessing, Up: BLOX.Blox + +BLOX.Blox: basic +---------------- + +deepCopy + It does not make sense to make a copy, because it would make data + inconsistent across different objects; so answer the receiver + +release + Destroy the receiver if it still exists, then perform the usual + task of removing the dependency links + +shallowCopy + It does not make sense to make a copy, because it would make data + inconsistent across different objects; so answer the receiver + + + +File: gst-libs.info, Node: BLOX.Blox-creating children, Next: BLOX.Blox-customization, Prev: BLOX.Blox-basic, Up: BLOX.Blox + +BLOX.Blox: creating children +---------------------------- + +make: array + Create children of the receiver. Answer a Dictionary of the + children. Each element of array is an Array including: a string + which becomes the Dictionary's key, a binding like #{Blox.BWindow} + identifying the class name, an array with the parameters to be set + (for example #(#width: 50 #height: 30 #backgroundColor: 'blue')), + and afterwards the children of the widget, described as arrays + with this same format. + +make: array on: result + Private - Create children of the receiver, adding them to result; + answer result. array has the format described in the comment to + #make: + +makeChild: each on: result + Private - Create a child of the receiver, adding them to result; + each is a single element of the array described in the comment to + #make: + + + +File: gst-libs.info, Node: BLOX.Blox-customization, Next: BLOX.Blox-widget protocol, Prev: BLOX.Blox-creating children, Up: BLOX.Blox + +BLOX.Blox: customization +------------------------ + +addChild: child + The widget identified by child has been added to the receiver. + This method is public not because you can call it, but because it + can be useful to override it, not forgetting the call to either + the superclass implementation or #basicAddChild:, to perform some + initialization on the children just added. Answer the new child. + +basicAddChild: child + The widget identified by child has been added to the receiver. + Add it to the children collection and answer the new child. This + method is public because you can call it from #addChild:. + + + +File: gst-libs.info, Node: BLOX.Blox-widget protocol, Prev: BLOX.Blox-customization, Up: BLOX.Blox + +BLOX.Blox: widget protocol +-------------------------- + +asPrimitiveWidget + Answer the primitive widget that implements the receiver. + +childrenCount + Answer how many children the receiver has + +childrenDo: aBlock + Evaluate aBlock once for each of the receiver's child widgets, + passing the widget to aBlock as a parameter + +destroy + Destroy the receiver + +drawingArea + Answer a Rectangle identifying the receiver's drawing area. The + rectangle's corners specify the upper-left and lower-right corners + of the client area. Because coordinates are relative to the + upper-left corner of a window's drawing area, the coordinates of + the rectangle's corner are (0,0). + +enabled + Answer whether the receiver is enabled to input. Although defined + here, this method is only used for widgets that define a #state + method + +enabled: enabled + Set whether the receiver is enabled to input (enabled is a + boolean). Although defined here, this method is only used for + widgets that define a #state: method + +exists + Answer whether the receiver has been destroyed or not (answer false + in the former case, true in the latter). + +fontHeight: aString + Answer the height of aString in pixels, when displayed in the same + font as the receiver. Although defined here, this method is only + used for widgets that define a #font method + +fontWidth: aString + Answer the width of aString in pixels, when displayed in the same + font as the receiver. Although defined here, this method is only + used for widgets that define a #font method + +isWindow + Answer whether the receiver represents a window on the screen. + +parent + Answer the receiver's parent (or nil for a top-level window). + +toplevel + Answer the top-level object (typically a BWindow or BPopupWindow) + connected to the receiver. + +window + Answer the window in which the receiver stays. Note that while + #toplevel won't answer a BTransientWindow, this method will. + +withChildrenDo: aBlock + Evaluate aBlock passing the receiver, and then once for each of the + receiver's child widgets. + + + +File: gst-libs.info, Node: BLOX.BMenu, Next: BLOX.BMenuBar, Prev: BLOX.Blox, Up: BLOX + +BLOX.BMenu +========== + +Defined in namespace BLOX +Superclass: BLOX.BMenuObject +Category: Graphics-Windows + I am a Menu that is part of a menu bar. + +* Menu: + +* BLOX.BMenu class-instance creation:: (class) +* BLOX.BMenu-accessing:: (instance) +* BLOX.BMenu-callback registration:: (instance) + + +File: gst-libs.info, Node: BLOX.BMenu class-instance creation, Next: BLOX.BMenu-accessing, Up: BLOX.BMenu + +BLOX.BMenu class: instance creation +----------------------------------- + +new: parent label: label + Add a new menu to the parent window's menu bar, with `label' as + its caption (for popup menus, parent is the widget over which the + menu pops up as the right button is pressed). + + + +File: gst-libs.info, Node: BLOX.BMenu-accessing, Next: BLOX.BMenu-callback registration, Prev: BLOX.BMenu class-instance creation, Up: BLOX.BMenu + +BLOX.BMenu: accessing +--------------------- + +label + Answer the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + +label: value + Set the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + + + +File: gst-libs.info, Node: BLOX.BMenu-callback registration, Prev: BLOX.BMenu-accessing, Up: BLOX.BMenu + +BLOX.BMenu: callback registration +--------------------------------- + +addLine + Add a separator item at the end of the menu + +addMenuItemFor: anArray notifying: receiver + Add a menu item described by anArray at the end of the menu. If + anArray is empty, insert a separator line. If anArray has a + single item, a menu item is created without a callback. If + anArray has two or three items, the second one is used as the + selector sent to receiver, and the third one (if present) is + passed to the selector. + +callback: receiver using: selectorPairs + Add menu items described by anArray at the end of the menu. Each + element of selectorPairs must be in the format described in + BMenu>>#addMenuItemFor:notifying:. All the callbacks will be sent + to receiver. + +destroy + Destroy the menu widget; that is, simply remove ourselves from the + parent menu bar. + +empty + Empty the menu widget; that is, remove all the children + + + +File: gst-libs.info, Node: BLOX.BMenuBar, Next: BLOX.BMenuItem, Prev: BLOX.BMenu, Up: BLOX + +BLOX.BMenuBar +============= + +Defined in namespace BLOX +Superclass: BLOX.BMenuObject +Category: Graphics-Windows + I am the Menu Bar, the top widget in a full menu structure. + +* Menu: + +* BLOX.BMenuBar-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BMenuBar-accessing, Up: BLOX.BMenuBar + +BLOX.BMenuBar: accessing +------------------------ + +add: aMenu + Add aMenu to the menu bar + +remove: aMenu + Remove aMenu from the menu bar + + + +File: gst-libs.info, Node: BLOX.BMenuItem, Next: BLOX.BMenuObject, Prev: BLOX.BMenuBar, Up: BLOX + +BLOX.BMenuItem +============== + +Defined in namespace BLOX +Superclass: BLOX.BMenuObject +Category: Graphics-Windows + I am the tiny and humble Menu Item, a single command choice in the + menu structure. But if it wasn't for me, nothing could be done... + eh eh eh!! + +* Menu: + +* BLOX.BMenuItem class-instance creation:: (class) +* BLOX.BMenuItem-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BMenuItem class-instance creation, Next: BLOX.BMenuItem-accessing, Up: BLOX.BMenuItem + +BLOX.BMenuItem class: instance creation +--------------------------------------- + +new: parent + Add a new separator item to the specified menu. + +new: parent label: label + Add a new menu item to the specified menu (parent) , with `label' + as its caption. + + + +File: gst-libs.info, Node: BLOX.BMenuItem-accessing, Prev: BLOX.BMenuItem class-instance creation, Up: BLOX.BMenuItem + +BLOX.BMenuItem: accessing +------------------------- + +label + Answer the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + +label: value + Set the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + + + +File: gst-libs.info, Node: BLOX.BMenuObject, Next: BLOX.BOval, Prev: BLOX.BMenuItem, Up: BLOX + +BLOX.BMenuObject +================ + +Defined in namespace BLOX +Superclass: BLOX.Blox +Category: Graphics-Windows + I am an abstract superclass for widgets which make up a menu + structure. + +* Menu: + +* BLOX.BMenuObject-accessing:: (instance) +* BLOX.BMenuObject-callback:: (instance) + + +File: gst-libs.info, Node: BLOX.BMenuObject-accessing, Next: BLOX.BMenuObject-callback, Up: BLOX.BMenuObject + +BLOX.BMenuObject: accessing +--------------------------- + +activeBackground + Answer the value of the activeBackground option for the widget. + Specifies background color to use when drawing active elements. An + element (a widget or portion of a widget) is active if the mouse + cursor is positioned over the element and pressing a mouse button + will cause some action to occur. For some elements on Windows and + Macintosh systems, the active color will only be used while mouse + button 1 is pressed over the element. + +activeBackground: value + Set the value of the activeBackground option for the widget. + Specifies background color to use when drawing active elements. An + element (a widget or portion of a widget) is active if the mouse + cursor is positioned over the element and pressing a mouse button + will cause some action to occur. For some elements on Windows and + Macintosh systems, the active color will only be used while mouse + button 1 is pressed over the element. + +activeForeground + Answer the value of the activeForeground option for the widget. + Specifies foreground color to use when drawing active elements. + See above for definition of active elements. + +activeForeground: value + Set the value of the activeForeground option for the widget. + Specifies foreground color to use when drawing active elements. + See above for definition of active elements. + +asPrimitiveWidget + Answer the primitive widget that implements the receiver. + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +foregroundColor + Answer the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +foregroundColor: value + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + + + +File: gst-libs.info, Node: BLOX.BMenuObject-callback, Prev: BLOX.BMenuObject-accessing, Up: BLOX.BMenuObject + +BLOX.BMenuObject: callback +-------------------------- + +callback + Answer a DirectedMessage that is sent when the receiver is + modified, or nil if none has been set up. + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a zero- or one-argument selector) when the receiver is clicked. + If the method accepts an argument, the receiver is passed. + +callback: aReceiver message: aSymbol argument: anObject + Set up so that aReceiver is sent the aSymbol message (the name of + a one- or two-argument selector) when the receiver is clicked. If + the method accepts two argument, the receiver is passed together + with anObject; if it accepts a single one, instead, only anObject + is passed. + +invokeCallback + Generate a synthetic callback + + + +File: gst-libs.info, Node: BLOX.BOval, Next: BLOX.BPolyline, Prev: BLOX.BMenuObject, Up: BLOX + +BLOX.BOval +========== + +Defined in namespace BLOX +Superclass: BLOX.BRectangle +Category: Graphics-Windows + I can draw ovals (ok, if you're a mathematic, they're really + ellipses), or even circles. + +* Menu: + + +File: gst-libs.info, Node: BLOX.BPolyline, Next: BLOX.BPopupMenu, Prev: BLOX.BOval, Up: BLOX + +BLOX.BPolyline +============== + +Defined in namespace BLOX +Superclass: BLOX.BCanvasObject +Category: Graphics-Windows + I can draw closed or open polylines, and even fill them! + +* Menu: + +* BLOX.BPolyline-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BPolyline-accessing, Up: BLOX.BPolyline + +BLOX.BPolyline: accessing +------------------------- + +boundingBox + Answer `boundingBox'. + +cap + Answer the way in which caps are to be drawn at the endpoints of + the line. This option is only available for open polylines. If + you want to set it for a closed polylines, draw an open one on top + of it. + +cap: aSymbol + Set the way in which caps are to be drawn at the endpoints of the + line. aSymbol may be #butt (the default), #projecting, or #round). + This option is only available for open polylines. If you want to + set it for a closed polylines, draw an open one on top of it. + +closed + Answer whether the polyline is an open or a closed one. + +closed: aBoolean + Set whether the polyline is an open or a closed one. This option + may be set only once. + +join + Answer the way in which joints are to be drawn at the vertices of + the line. This option is only available for open polylines. If + you want to set it for a closed polylines, draw an open one on top + of it. + +join: aSymbol + Answer the way in which joints are to be drawn at the vertices of + the line. aSymbol can be #bevel, #miter (the default) or #round. + This option is only available for open polylines. If you want to + set it for a closed polylines, draw an open one on top of it. + +outlineColor + Answer the color with which the outline of the polyline is drawn. + This option is only available for closed polylines. + +outlineColor: color + Set the color with which the outline of the polyline is drawn. + This option is only available for closed polylines. + +points + Answer the points that are vertices of the polyline. + + method + +points: arrayOfPointsOrArrays + Set the points that are vertices of the polyline. Each of the + items of arrayOfPointsOrArrays can be a Point or a two-element + Array. Note that no changes take place until you invoke the + #create (if the object has not been inserted in the canvas yet) or + the #redraw method. + +width + Answer the width with which the polyline (or its outline if it is + a closed one) is drawn. + +width: pixels + Set the width with which the polyline (or its outline if it is a + closed one) is drawn. + + + +File: gst-libs.info, Node: BLOX.BPopupMenu, Next: BLOX.BPopupWindow, Prev: BLOX.BPolyline, Up: BLOX + +BLOX.BPopupMenu +=============== + +Defined in namespace BLOX +Superclass: BLOX.BMenu +Category: Graphics-Windows + I am a class that provides the ability to show popup menus when the + right button (Button 3) is clicked on another window. + +* Menu: + +* BLOX.BPopupMenu-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BPopupMenu-widget protocol, Up: BLOX.BPopupMenu + +BLOX.BPopupMenu: widget protocol +-------------------------------- + +popup + Generate a synthetic menu popup event + + + +File: gst-libs.info, Node: BLOX.BPopupWindow, Next: BLOX.BPrimitive, Prev: BLOX.BPopupMenu, Up: BLOX + +BLOX.BPopupWindow +================= + +Defined in namespace BLOX +Superclass: BLOX.BWindow +Category: Graphics-Windows + I am a pseudo-window that has no decorations and no ability to + interact with the user. My main usage, as my name says, is to + provide pop-up functionality for other widgets. Actually there + should be no need to directly use me - always rely on the #new and + #popup: class methods. + +* Menu: + +* BLOX.BPopupWindow-geometry management:: (instance) + + +File: gst-libs.info, Node: BLOX.BPopupWindow-geometry management, Up: BLOX.BPopupWindow + +BLOX.BPopupWindow: geometry management +-------------------------------------- + +addChild: w + Private - The widget identified by child has been added to the + receiver. This method is public not because you can call it, but + because it can be useful to override it, not forgetting the call + to either the superclass implementation or #basicAddChild:, to + perform some initialization on the children just added. Answer the + new child. + +child: child height: value + Set the given child's height. This is done by setting its parent + window's (that is, our) height. + +child: child heightOffset: value + This method should not be called for instances of this class. + +child: child width: value + Set the given child's width. This is done by setting its parent + window's (that is, our) width. + +child: child widthOffset: value + This method should not be called for instances of this class. + +child: child x: value + Set the x coordinate of the given child's top-left corner. This + is done by setting its parent window's (that is, our) x. + +child: child xOffset: value + This method should not be called for instances of this class. + +child: child y: value + Set the y coordinate of the given child's top-left corner. This + is done by setting its parent window's (that is, our) y. + +child: child yOffset: value + This method should not be called for instances of this class. + +heightChild: child + Answer the given child's height, which is the height that was + imposed on the popup window. + +widthChild: child + Answer the given child's width in pixels, which is the width that + was imposed on the popup window. + +xChild: child + Answer the x coordinate of the given child's top-left corner, + which is desumed by the position of the popup window. + +yChild: child + Answer the y coordinate of the given child's top-left corner, + which is desumed by the position of the popup window. + + + +File: gst-libs.info, Node: BLOX.BPrimitive, Next: BLOX.BProgress, Prev: BLOX.BPopupWindow, Up: BLOX + +BLOX.BPrimitive +=============== + +Defined in namespace BLOX +Superclass: BLOX.BWidget +Category: Graphics-Windows + I am the superclass for every widget (except menus) directly + provided by the underlying GUI system. + +* Menu: + +* BLOX.BPrimitive-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BPrimitive-accessing, Up: BLOX.BPrimitive + +BLOX.BPrimitive: accessing +-------------------------- + +asPrimitiveWidget + Answer the primitive widget that implements the receiver. + + + +File: gst-libs.info, Node: BLOX.BProgress, Next: BLOX.BRadioButton, Prev: BLOX.BPrimitive, Up: BLOX + +BLOX.BProgress +============== + +Defined in namespace BLOX +Superclass: BLOX.BExtended +Category: Graphics-Examples + I show how much of a task has been completed. + +* Menu: + +* BLOX.BProgress-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BProgress-accessing, Up: BLOX.BProgress + +BLOX.BProgress: accessing +------------------------- + +backgroundColor + Answer the background color of the widget. This is used for the + background of the non-filled part, as well as for the foreground + of the filled part. + +backgroundColor: aColor + Set the background color of the widget. This is used for the + background of the non-filled part, as well as for the foreground + of the filled part. + +filledColor + Answer the background color of the widget's filled part. + +filledColor: aColor + Set the background color of the widget's filled part. + +foregroundColor + Set the foreground color of the widget. This is used for the + non-filled part, while the background color also works as the + foreground of the filled part. + +foregroundColor: aColor + Set the foreground color of the widget. This is used for the + non-filled part, while the background color also works as the + foreground of the filled part. + +value + Answer the filled percentage of the receiver (0..1) + +value: newValue + Set the filled percentage of the receiver and update the + appearance. newValue must be between 0 and 1. + + + +File: gst-libs.info, Node: BLOX.BRadioButton, Next: BLOX.BRadioGroup, Prev: BLOX.BProgress, Up: BLOX + +BLOX.BRadioButton +================= + +Defined in namespace BLOX +Superclass: BLOX.BButton +Category: Graphics-Windows + I am just one in a group of mutually exclusive buttons. + +* Menu: + +* BLOX.BRadioButton-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BRadioButton-accessing, Up: BLOX.BRadioButton + +BLOX.BRadioButton: accessing +---------------------------- + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a selector accepting at most two arguments) when the receiver is + clicked. If the method accepts two arguments, the receiver is + passed as the first parameter. If the method accepts one or two + arguments, true is passed as the last parameter for + interoperability with BToggle widgets. + +value + Answer whether this widget is the selected one in its radio button + group. + +value: aBoolean + Answer whether this widget is the selected one in its radio button + group. Setting this property to false for a group's currently + selected button unhighlights all the buttons in that group. + + + +File: gst-libs.info, Node: BLOX.BRadioGroup, Next: BLOX.BRectangle, Prev: BLOX.BRadioButton, Up: BLOX + +BLOX.BRadioGroup +================ + +Defined in namespace BLOX +Superclass: BLOX.BContainer +Category: Graphics-Windows + I am used to group many mutually-exclusive radio buttons together. + In addition, just like every BContainer I can perform simple + management by putting widgets next to each other, from left to + right or (which is more useful in this particular case...) from + top to bottom. + +* Menu: + +* BLOX.BRadioGroup-accessing:: (instance) +* BLOX.BRadioGroup-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BRadioGroup-accessing, Next: BLOX.BRadioGroup-widget protocol, Up: BLOX.BRadioGroup + +BLOX.BRadioGroup: accessing +--------------------------- + +value + Answer the index of the button that is currently selected, 1 being + the first button added to the radio button group. 0 means that no + button is selected + +value: value + Force the value-th button added to the radio button group to be + the selected one. + + + +File: gst-libs.info, Node: BLOX.BRadioGroup-widget protocol, Prev: BLOX.BRadioGroup-accessing, Up: BLOX.BRadioGroup + +BLOX.BRadioGroup: widget protocol +--------------------------------- + +destroyed + Private - The receiver has been destroyed, clear the corresponding + Tcl variable to avoid memory leaks. + + + +File: gst-libs.info, Node: BLOX.BRectangle, Next: BLOX.BScrolledCanvas, Prev: BLOX.BRadioGroup, Up: BLOX + +BLOX.BRectangle +=============== + +Defined in namespace BLOX +Superclass: BLOX.BBoundingBox +Category: Graphics-Windows + I only draw rectangles but I can do that very well. + +* Menu: + +* BLOX.BRectangle-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BRectangle-accessing, Up: BLOX.BRectangle + +BLOX.BRectangle: accessing +-------------------------- + +outlineColor + Answer the color with which the outline of the rectangle is drawn. + +outlineColor: color + Set the color with which the outline of the rectangle is drawn. + +width + Answer the width with which the outline of the rectangle is drawn. + +width: pixels + Set the width with which the outline of the rectangle is drawn. + + + +File: gst-libs.info, Node: BLOX.BScrolledCanvas, Next: BLOX.BSpline, Prev: BLOX.BRectangle, Up: BLOX + +BLOX.BScrolledCanvas +==================== + +Defined in namespace BLOX +Superclass: BLOX.BCanvas +Category: Graphics-Windows + I am much similar to BCanvas, but I sport, in addition, two fancy + scroll bars. This is just a convenience, since it could be easily + done when creating the canvas... + +* Menu: + + +File: gst-libs.info, Node: BLOX.BSpline, Next: BLOX.BText, Prev: BLOX.BScrolledCanvas, Up: BLOX + +BLOX.BSpline +============ + +Defined in namespace BLOX +Superclass: BLOX.BPolyline +Category: Graphics-Windows + Unlike my father BPolyline, I am more smooth at doing my job. + +* Menu: + +* BLOX.BSpline-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BSpline-accessing, Up: BLOX.BSpline + +BLOX.BSpline: accessing +----------------------- + +smoothness + Answer the degree of smoothness desired for curves. Each spline + will be approximated with this number of line segments. + +smoothness: anInteger + Set the degree of smoothness desired for curves. Each spline will + be approximated with this number of line segments. + + + +File: gst-libs.info, Node: BLOX.BText, Next: BLOX.BTextAttributes, Prev: BLOX.BSpline, Up: BLOX + +BLOX.BText +========== + +Defined in namespace BLOX +Superclass: BLOX.BViewport +Category: Graphics-Windows + I represent a text viewer with pretty good formatting options. + +* Menu: + +* BLOX.BText class-accessing:: (class) +* BLOX.BText class-instance creation:: (class) +* BLOX.BText-accessing:: (instance) +* BLOX.BText-attributes:: (instance) +* BLOX.BText-geometry management:: (instance) +* BLOX.BText-images:: (instance) +* BLOX.BText-inserting text:: (instance) +* BLOX.BText-position & lines:: (instance) + + +File: gst-libs.info, Node: BLOX.BText class-accessing, Next: BLOX.BText class-instance creation, Up: BLOX.BText + +BLOX.BText class: accessing +--------------------------- + +emacsLike + Answer whether we are using Emacs or Motif key bindings. + +emacsLike: aBoolean + Set whether we are using Emacs or Motif key bindings. + + + +File: gst-libs.info, Node: BLOX.BText class-instance creation, Next: BLOX.BText-accessing, Prev: BLOX.BText class-accessing, Up: BLOX.BText + +BLOX.BText class: instance creation +----------------------------------- + +newReadOnly: parent + Answer a new read-only text widget (read-only is achieved simply + by setting its state to be disabled) + + + +File: gst-libs.info, Node: BLOX.BText-accessing, Next: BLOX.BText-attributes, Prev: BLOX.BText class-instance creation, Up: BLOX.BText + +BLOX.BText: accessing +--------------------- + +backgroundColor + Answer the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +backgroundColor: value + Set the value of the backgroundColor option for the widget. + Specifies the normal background color to use when displaying the + widget. + +callback + Answer a DirectedMessage that is sent when the receiver is + modified, or nil if none has been set up. + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a zero- or one-argument selector) when the receiver is modified. + If the method accepts an argument, the receiver is passed. + +contents + Return the contents of the widget + +contents: aString + Set the contents of the widget + +font + Answer the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +font: value + Set the value of the font option for the widget. Specifies the + font to use when drawing text inside the widget. The font can be + given as either an X font name or a Blox font description string. + X font names are given as many fields, each led by a minus, and + each of which can be replaced by an * to indicate a default value + is ok: foundry, family, weight, slant, setwidth, addstyle, pixel + size, point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor + Answer the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +foregroundColor: value + Set the value of the foregroundColor option for the widget. + Specifies the normal foreground color to use when displaying the + widget. + +getSelection + Answer an empty string if the widget has no selection, else answer + the currently selected text + +selectBackground + Answer the value of the selectBackground option for the widget. + Specifies the background color to use when displaying selected + parts of the widget. + +selectBackground: value + Set the value of the selectBackground option for the widget. + Specifies the background color to use when displaying selected + parts of the widget. + +selectForeground + Answer the value of the selectForeground option for the widget. + Specifies the foreground color to use when displaying selected + parts of the widget. + +selectForeground: value + Set the value of the selectForeground option for the widget. + Specifies the foreground color to use when displaying selected + parts of the widget. + +wrap + Answer the value of the wrap option for the widget. Specifies how + to handle lines in the text that are too long to be displayed in a + single line of the text's window. The value must be #none or #char + or #word. A wrap mode of none means that each line of text appears + as exactly one line on the screen; extra characters that do not + fit on the screen are not displayed. In the other modes each line + of text will be broken up into several screen lines if necessary + to keep all the characters visible. In char mode a screen line + break may occur after any character; in word mode a line break + will only be made at word boundaries. + +wrap: value + Set the value of the wrap option for the widget. Specifies how to + handle lines in the text that are too long to be displayed in a + single line of the text's window. The value must be #none or #char + or #word. A wrap mode of none means that each line of text appears + as exactly one line on the screen; extra characters that do not + fit on the screen are not displayed. In the other modes each line + of text will be broken up into several screen lines if necessary + to keep all the characters visible. In char mode a screen line + break may occur after any character; in word mode a line break + will only be made at word boundaries. + + + +File: gst-libs.info, Node: BLOX.BText-attributes, Next: BLOX.BText-geometry management, Prev: BLOX.BText-accessing, Up: BLOX.BText + +BLOX.BText: attributes +---------------------- + +insertAtEnd: aString attribute: attr + Clear the selection and append aString at the end of the widget. + Use the given attributes to format the text. + +insertText: aString attribute: attr + Insert aString in the widget at the current insertion point, + replacing the currently selected text (if any). Use the given + attributes to format the text. + +removeAttributes + Remove any kind of formatting from the text in the widget + +removeAttributesFrom: aPoint to: endPoint + Remove any kind of formatting from the text in the widget between + the given endpoints. The two endpoints are Point objects in which + both coordinates are 1-based: the first line is line 1, and the + first character in the first line is character 1. + +setAttributes: attr from: aPoint to: endPoint + Add the formatting given by attr to the text in the widget between + the given endpoints. The two endpoints are Point objects in which + both coordinates are 1-based: the first line is line 1, and the + first character in the first line is character 1. + + + +File: gst-libs.info, Node: BLOX.BText-geometry management, Next: BLOX.BText-images, Prev: BLOX.BText-attributes, Up: BLOX.BText + +BLOX.BText: geometry management +------------------------------- + +child: child height: value + Set the height of the given child to be `value' pixels. + +child: child heightOffset: value + Adjust the height of the given child to be given by `value' more + pixels. + +child: child width: value + Set the width of the given child to be `value' pixels. + +child: child widthOffset: value + Adjust the width of the given child to be given by `value' more + pixels. + +child: child x: value + Never fail and do nothing, the children stay where the text ended + at the time each child was added in the widget + +child: child xOffset: value + This method should not be called for instances of this class. + +child: child y: value + Never fail and do nothing, the children stay where the text ended + at the time each child was added in the widget + +child: child yOffset: value + This method should not be called for instances of this class. + +heightChild: child + Answer the given child's height in pixels. + +widthChild: child + Answer the given child's width in pixels. + +xChild: child + Answer the given child's top-left border's x coordinate. We + always answer 0 since the children actually move when the text + widget scrolls + +yChild: child + Answer the given child's top-left border's y coordinate. We + always answer 0 since the children actually move when the text + widget scrolls + + + +File: gst-libs.info, Node: BLOX.BText-images, Next: BLOX.BText-inserting text, Prev: BLOX.BText-geometry management, Up: BLOX.BText + +BLOX.BText: images +------------------ + +insertImage: anObject + Insert an image where the insertion point currently lies in the + widget. anObject can be a String containing image data (either + Base-64 encoded GIF data, XPM data, or PPM data), or the result or + registering an image with #registerImage: + +insertImage: anObject at: position + Insert an image at the given position in the widget. The position + is a Point object in which both coordinates are 1-based: the first + line is line 1, and the first character in the first line is + character 1. anObject can be a String containing image data + (either Base-64 encoded GIF data, XPM data, or PPM data), or the + result or registering an image with #registerImage: + +insertImageAtEnd: anObject + Insert an image at the end of the widgets text. anObject can be a + String containing image data (either Base-64 encoded GIF data, XPM + data, or PPM data), or the result or registering an image with + #registerImage: + +registerImage: anObject + Register an image (whose data is in anObject, a String including + Base-64 encoded GIF data, XPM data, or PPM data) to be used in the + widget. If the same image must be used a lot of times, it is + better to register it once and then pass the result of + #registerImage: to the image insertion methods. Registered image + are private within each BText widget. Registering an image with a + widget and using it with another could give unpredictable results. + + + +File: gst-libs.info, Node: BLOX.BText-inserting text, Next: BLOX.BText-position & lines, Prev: BLOX.BText-images, Up: BLOX.BText + +BLOX.BText: inserting text +-------------------------- + +insertAtEnd: aString + Clear the selection and append aString at the end of the widget. + +insertSelectedText: aString + Insert aString in the widget at the current insertion point, + leaving the currently selected text (if any) in place, and + selecting the text. + +insertText: aString + Insert aString in the widget at the current insertion point, + replacing the currently selected text (if any). + +insertText: aString at: position + Insert aString in the widget at the given position, replacing the + currently selected text (if any). The position is a Point object + in which both coordinates are 1-based: the first line is line 1, + and the first character in the first line is character 1. + +insertTextSelection: aString + Insert aString in the widget after the current selection, leaving + the currently selected text (if any) intact. + +invokeCallback + Generate a synthetic callback. + +nextPut: aCharacter + Clear the selection and append aCharacter at the end of the widget. + +nextPutAll: aString + Clear the selection and append aString at the end of the widget. + +nl + Clear the selection and append a linefeed character at the end of + the widget. + +refuseTabs + Arrange so that Tab characters, instead of being inserted in the + widget, traverse the widgets in the parent window. + +replaceSelection: aString + Insert aString in the widget at the current insertion point, + replacing the currently selected text (if any), and leaving the + text selected. + +searchString: aString + Search aString in the widget. If it is not found, answer zero, + else answer the 1-based line number and move the insertion point + to the place where the string was found. + +space + Clear the selection and append a space at the end of the widget. + + + +File: gst-libs.info, Node: BLOX.BText-position & lines, Prev: BLOX.BText-inserting text, Up: BLOX.BText + +BLOX.BText: position & lines +---------------------------- + +charsInLine: number + Answer how many characters are there in the number-th line + +currentColumn + Answer the 1-based column number where the insertion point + currently lies. + +currentLine + Answer the 1-based line number where the insertion point currently + lies. + +currentPosition + Answer a Point representing where the insertion point currently + lies. Both coordinates in the answer are 1-based: the first line + is line 1, and the first character in the first line is character + 1. + +currentPosition: aPoint + Move the insertion point to the position given by aPoint. Both + coordinates in aPoint are interpreted as 1-based: the first line + is line 1, and the first character in the first line is character + 1. + +gotoLine: line end: aBoolean + If aBoolean is true, move the insertion point to the last + character of the line-th line (1 being the first line in the + widget); if aBoolean is false, move it to the start of the line-th + line. + +indexAt: point + Answer the position of the character that covers the pixel whose + coordinates within the text's window are given by the supplied + Point object. + +lineAt: number + Answer the number-th line of text in the widget + +numberOfLines + Answer the number of lines in the widget + +selectFrom: first to: last + Select the text between the given endpoints. The two endpoints + are Point objects in which both coordinates are 1-based: the first + line is line 1, and the first character in the first line is + character 1. + +setToEnd + Move the insertion point to the end of the widget + + + +File: gst-libs.info, Node: BLOX.BTextAttributes, Next: BLOX.BTextBindings, Prev: BLOX.BText, Up: BLOX + +BLOX.BTextAttributes +==================== + +Defined in namespace BLOX +Superclass: Object +Category: Graphics-Windows + I help you creating wonderful, colorful BTexts. + +* Menu: + +* BLOX.BTextAttributes class-instance-creation shortcuts:: (class) +* BLOX.BTextAttributes-colors:: (instance) +* BLOX.BTextAttributes-setting attributes:: (instance) + + +File: gst-libs.info, Node: BLOX.BTextAttributes class-instance-creation shortcuts, Next: BLOX.BTextAttributes-colors, Up: BLOX.BTextAttributes + +BLOX.BTextAttributes class: instance-creation shortcuts +------------------------------------------------------- + +backgroundColor: color + Create a new BTextAttributes object resulting in text with the + given background color. + +black + Create a new BTextAttributes object resulting in black text. + +blue + Create a new BTextAttributes object resulting in blue text. + +center + Create a new BTextAttributes object resulting in centered + paragraphs. + +cyan + Create a new BTextAttributes object resulting in cyan text. + +darkCyan + Create a new BTextAttributes object resulting in dark cyan text. + +darkGreen + Create a new BTextAttributes object resulting in dark green text. + +darkMagenta + Create a new BTextAttributes object resulting in dark purple text. + +events: aBTextBindings + Create a new BTextAttributes object for text that responds to + events according to the callbacks established in aBTextBindings. + +font: font + Create a new BTextAttributes object resulting in text with the + given font. The font can be given as either an X font name or a + Blox font description string. X font names are given as many + fields, each led by a minus, and each of which can be replaced by + an * to indicate a default value is ok: foundry, family, weight, + slant, setwidth, addstyle, pixel size, point size (the same as + pixel size for historical reasons), horizontal resolution, + vertical resolution, spacing, width, charset and character + encoding. Blox font description strings have three fields, which + must be separated by a space and of which only the first is + mandatory: the font family, the font size in points (or in pixels + if a negative value is supplied), and a number of styles separated + by a space (valid styles are normal, bold, italic, underline and + overstrike). Examples of valid fonts are "Helvetica 10 Bold", + "Times -14", "Futura Bold Underline". You must enclose the font + family in braces if it is made of two or more words. + +foregroundColor: color + Create a new BTextAttributes object resulting in text with the + given foreground color. + +green + Create a new BTextAttributes object resulting in green text. + +magenta + Create a new BTextAttributes object resulting in magenta text. + +red + Create a new BTextAttributes object resulting in red text. + +strikeout + Create a new BTextAttributes object resulting in struck-out text. + +underline + Create a new BTextAttributes object resulting in underlined text. + +white + Create a new BTextAttributes object resulting in white text. + +yellow + Create a new BTextAttributes object resulting in yellow text. + + + +File: gst-libs.info, Node: BLOX.BTextAttributes-colors, Next: BLOX.BTextAttributes-setting attributes, Prev: BLOX.BTextAttributes class-instance-creation shortcuts, Up: BLOX.BTextAttributes + +BLOX.BTextAttributes: colors +---------------------------- + +black + Set the receiver so that applying it results in black text. + +blue + Set the receiver so that applying it results in blue text. + +cyan + Set the receiver so that applying it results in cyan text. + +darkCyan + Set the receiver so that applying it results in dark cyan text. + +darkGreen + Set the receiver so that applying it results in dark green text. + +darkMagenta + Set the receiver so that applying it results in dark magenta text. + +green + Set the receiver so that applying it results in green text. + +magenta + Set the receiver so that applying it results in magenta text. + +red + Set the receiver so that applying it results in red text. + +white + Set the receiver so that applying it results in white text. + +yellow + Set the receiver so that applying it results in black text. + + + +File: gst-libs.info, Node: BLOX.BTextAttributes-setting attributes, Prev: BLOX.BTextAttributes-colors, Up: BLOX.BTextAttributes + +BLOX.BTextAttributes: setting attributes +---------------------------------------- + +backgroundColor + Answer the value of the backgroundColor option for the text. + Specifies the background color to use when displaying text with + these attributes. nil indicates that the default value is not + overridden. + +backgroundColor: color + Set the value of the backgroundColor option for the text. + Specifies the background color to use when displaying text with + these attributes. nil indicates that the default value is not + overridden. + +center + Center the text to which these attributes are applied + +events + Answer the event bindings which apply to text subject to these + attributes + +events: aBTextBindings + Set the event bindings which apply to text subject to these + attributes + +font + Answer the value of the font option for the text. The font can be + given as either an X font name or a Blox font description string, + or nil if you want the widget's default font to apply. X font + names are given as many fields, each led by a minus, and each of + which can be replaced by an * to indicate a default value is ok: + foundry, family, weight, slant, setwidth, addstyle, pixel size, + point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +font: fontName + Set the value of the font option for the text. The font can be + given as either an X font name or a Blox font description string, + or nil if you want the widget's default font to apply. X font + names are given as many fields, each led by a minus, and each of + which can be replaced by an * to indicate a default value is ok: + foundry, family, weight, slant, setwidth, addstyle, pixel size, + point size (the same as pixel size for historical reasons), + horizontal resolution, vertical resolution, spacing, width, + charset and character encoding. Blox font description strings + have three fields, which must be separated by a space and of which + only the first is mandatory: the font family, the font size in + points (or in pixels if a negative value is supplied), and a number + of styles separated by a space (valid styles are normal, bold, + italic, underline and overstrike). Examples of valid fonts are + "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You + must enclose the font family in braces if it is made of two or + more words. + +foregroundColor + Answer the value of the foregroundColor option for the text. + Specifies the foreground color to use when displaying text with + these attributes. nil indicates that the default value is not + overridden. + +foregroundColor: color + Set the value of the foregroundColor option for the text. + Specifies the foreground color to use when displaying text with + these attributes. nil indicates that the default value is not + overridden. + +isCentered + Answer whether the text to which these attributes are applied is + centered + +isStruckout + Answer whether the text to which these attributes are applied is + struckout + +isUnderlined + Answer whether the text to which these attributes are applied is + underlined + +strikeout + Strike out the text to which these attributes are applied + +underline + Underline the text to which these attributes are applied + + + +File: gst-libs.info, Node: BLOX.BTextBindings, Next: BLOX.BTextTags, Prev: BLOX.BTextAttributes, Up: BLOX + +BLOX.BTextBindings +================== + +Defined in namespace BLOX +Superclass: BLOX.BEventTarget +Category: Graphics-Windows + This object is used to assign event handlers to particular + sections of text in a BText widget. To use it, you simply have to + add event handlers to it, and then create a BTextAttributes object + that refers to it. + +* Menu: + +* BLOX.BTextBindings class-instance creation:: (class) + + +File: gst-libs.info, Node: BLOX.BTextBindings class-instance creation, Up: BLOX.BTextBindings + +BLOX.BTextBindings class: instance creation +------------------------------------------- + +new + Create a new instance of the receiver. + + + +File: gst-libs.info, Node: BLOX.BTextTags, Next: BLOX.BToggle, Prev: BLOX.BTextBindings, Up: BLOX + +BLOX.BTextTags +============== + +Defined in namespace BLOX +Superclass: Object +Category: Graphics-Windows + I am a private class. I sit between a BText and BTextAttributes, + helping the latter in telling the former which attributes to use. + +* Menu: + + +File: gst-libs.info, Node: BLOX.BToggle, Next: BLOX.BTransientWindow, Prev: BLOX.BTextTags, Up: BLOX + +BLOX.BToggle +============ + +Defined in namespace BLOX +Superclass: BLOX.BButton +Category: Graphics-Windows + I represent a button whose choice can be included (by checking me) + or excluded (by leaving me unchecked). + +* Menu: + +* BLOX.BToggle-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.BToggle-accessing, Up: BLOX.BToggle + +BLOX.BToggle: accessing +----------------------- + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a selector accepting at most two arguments) when the receiver is + clicked. If the method accepts two arguments, the receiver is + passed as the first parameter. If the method accepts one or two + arguments, the state of the widget (true if it is selected, false + if it is not) is passed as the last parameter. + +invokeCallback + Generate a synthetic callback. + +value + Answer whether the button is in a selected (checked) state. + +value: aBoolean + Set whether the button is in a selected (checked) state and + generates a callback accordingly. + +variable: value + Set the value of Tk's variable option for the widget. + + + +File: gst-libs.info, Node: BLOX.BTransientWindow, Next: BLOX.BViewport, Prev: BLOX.BToggle, Up: BLOX + +BLOX.BTransientWindow +===================== + +Defined in namespace BLOX +Superclass: BLOX.BWindow +Category: Graphics-Windows + I am almost a boss. I represent a window which is logically linked + to another which sits higher in the widget hierarchy, e.g. a dialog + box + +* Menu: + +* BLOX.BTransientWindow class-instance creation:: (class) +* BLOX.BTransientWindow-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BTransientWindow class-instance creation, Next: BLOX.BTransientWindow-widget protocol, Up: BLOX.BTransientWindow + +BLOX.BTransientWindow class: instance creation +---------------------------------------------- + +new + This method should not be called for instances of this class. + +new: parentWindow + Answer a new transient window attached to the given parent window + and with nothing in its title bar caption. + +new: label in: parentWindow + Answer a new transient window attached to the given parent window + and with `label' as its title bar caption. + + + +File: gst-libs.info, Node: BLOX.BTransientWindow-widget protocol, Prev: BLOX.BTransientWindow class-instance creation, Up: BLOX.BTransientWindow + +BLOX.BTransientWindow: widget protocol +-------------------------------------- + +map + Map the window and inform the windows manager that the receiver is + a transient window working on behalf of its parent. The window is + also put in its parent window's window group: the window manager + might use this information, for example, to unmap all of the + windows in a group when the group's leader is iconified. + + + +File: gst-libs.info, Node: BLOX.BViewport, Next: BLOX.BWidget, Prev: BLOX.BTransientWindow, Up: BLOX + +BLOX.BViewport +============== + +Defined in namespace BLOX +Superclass: BLOX.BPrimitive +Category: Graphics-Windows + I represent an interface which is common to widgets that can be + scrolled, like list boxes or text widgets. + +* Menu: + +* BLOX.BViewport-accessing:: (instance) +* BLOX.BViewport-scrollbars:: (instance) + + +File: gst-libs.info, Node: BLOX.BViewport-accessing, Next: BLOX.BViewport-scrollbars, Up: BLOX.BViewport + +BLOX.BViewport: accessing +------------------------- + +connected + Private - Answer the name of Tk widget for the connected widget. + + + +File: gst-libs.info, Node: BLOX.BViewport-scrollbars, Prev: BLOX.BViewport-accessing, Up: BLOX.BViewport + +BLOX.BViewport: scrollbars +-------------------------- + +horizontal + Answer whether an horizontal scrollbar is drawn in the widget if + needed. + +horizontal: aBoolean + Set whether an horizontal scrollbar is drawn in the widget if + needed. + +horizontalNeeded + Answer whether an horizontal scrollbar is needed to show all the + information in the widget. + +horizontalShown + Answer whether an horizontal scrollbar is drawn in the widget. + +vertical + Answer whether a vertical scrollbar is drawn in the widget if + needed. + +vertical: aBoolean + Set whether a vertical scrollbar is drawn in the widget if needed. + +verticalNeeded + Answer whether a vertical scrollbar is needed to show all the + information in the widget. + +verticalShown + Answer whether a vertical scrollbar is drawn in the widget. + + + +File: gst-libs.info, Node: BLOX.BWidget, Next: BLOX.BWindow, Prev: BLOX.BViewport, Up: BLOX + +BLOX.BWidget +============ + +Defined in namespace BLOX +Superclass: BLOX.Blox +Category: Graphics-Windows + I am the superclass for every widget except those related to + menus. I provide more common methods and geometry management + +* Menu: + +* BLOX.BWidget class-popups:: (class) +* BLOX.BWidget-accessing:: (instance) +* BLOX.BWidget-customization:: (instance) +* BLOX.BWidget-geometry management:: (instance) +* BLOX.BWidget-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BWidget class-popups, Next: BLOX.BWidget-accessing, Up: BLOX.BWidget + +BLOX.BWidget class: popups +-------------------------- + +new + Create an instance of the receiver inside a BPopupWindow; do not + map the window, answer the new widget. The created widget will + become a child of the window and be completely attached to it + (e.g. the geometry methods will modify the window's geometry). + Note that while the widget *seems* to be directly painted on the + root window, it actually belongs to the BPopupWindow; so don't + send #destroy to the widget to remove it, but rather to the window. + +popup: initializationBlock + Create an instance of the receiver inside a BPopupWindow; before + returning, pass the widget to the supplied initializationBlock, + then map the window. Answer the new widget. The created widget + will become a child of the window and be completely attached to it + (e.g. the geometry methods will modify the window's geometry). + Note that while the widget *seems* to be directly painted on the + root window, it actually belongs to the BPopupWindow; so don't + send #destroy to the widget to remove it, but rather to the window. + + + +File: gst-libs.info, Node: BLOX.BWidget-accessing, Next: BLOX.BWidget-customization, Prev: BLOX.BWidget class-popups, Up: BLOX.BWidget + +BLOX.BWidget: accessing +----------------------- + +borderWidth + Answer the value of the borderWidth option for the widget. + Specifies a non-negative value indicating the width of the 3-D + border to draw around the outside of the widget (if such a border + is being drawn; the effect option typically determines this). The + value may also be used when drawing 3-D effects in the interior of + the widget. The value is measured in pixels. + +borderWidth: value + Set the value of the borderWidth option for the widget. Specifies + a non-negative value indicating the width of the 3-D border to + draw around the outside of the widget (if such a border is being + drawn; the effect option typically determines this). The value may + also be used when drawing 3-D effects in the interior of the + widget. The value is measured in pixels. + +cursor + Answer the value of the cursor option for the widget. Specifies + the mouse cursor to be used for the widget. The value of the + option is given by the standard X cursor cursor, i.e., any of the + names defined in cursorcursor.h, without the leading XC_. + +cursor: value + Set the value of the cursor option for the widget. Specifies the + mouse cursor to be used for the widget. The value of the option is + given by the standard X cursor cursor, i.e., any of the names + defined in cursorcursor.h, without the leading XC_. + +effect + Answer the value of the effect option for the widget. Specifies + the effect desired for the widget's border. Acceptable values are + raised, sunken, flat, ridge, solid, and groove. The value + indicates how the interior of the widget should appear relative to + its exterior; for example, raised means the interior of the widget + should appear to protrude from the screen, relative to the + exterior of the widget. Raised and sunken give the traditional 3-D + appearance (for example, that of Xaw3D), while ridge and groove + give a "chiseled" appearance like that of Swing or GTK+'s Metal + theme. Flat and solid are not 3-D. + +effect: value + Set the value of the effect option for the widget. Specifies the + effect desired for the widget's border. Acceptable values are + raised, sunken, flat, ridge, solid, and groove. The value + indicates how the interior of the widget should appear relative to + its exterior; for example, raised means the interior of the widget + should appear to protrude from the screen, relative to the + exterior of the widget. Raised and sunken give the traditional 3-D + appearance (for example, that of Xaw3D), while ridge and groove + give a "chiseled" appearance like that of Swing or GTK+'s Metal + theme. Flat and solid are not 3-D. + +tabStop + Answer the value of the tabStop option for the widget. Determines + whether the window accepts the focus during keyboard traversal + (e.g., Tab and Shift-Tab). Before setting the focus to a window, + Blox consults the value of the tabStop option. A value of false + means that the window should be skipped entirely during keyboard + traversal. true means that the window should receive the input + focus as long as it is viewable (it and all of its ancestors are + mapped). If you do not set this option, Blox makes the decision + about whether or not to focus on the window: the current algorithm + is to skip the window if it is disabled, it has no key bindings, + or if it is not viewable. Of the standard widgets, BForm, + BContainer, BLabel and BImage have no key bindings by default. + +tabStop: value + Set the value of the tabStop option for the widget. Determines + whether the window accepts the focus during keyboard traversal + (e.g., Tab and Shift-Tab). Before setting the focus to a window, + Blox consults the value of the tabStop option. A value of false + means that the window should be skipped entirely during keyboard + traversal. true means that the window should receive the input + focus as long as it is viewable (it and all of its ancestors are + mapped). If you do not set this option, Blox makes the decision + about whether or not to focus on the window: the current algorithm + is to skip the window if it is disabled, it has no key bindings, + or if it is not viewable. Of the standard widgets, BForm, + BContainer, BLabel and BImage have no key bindings by default. + + + +File: gst-libs.info, Node: BLOX.BWidget-customization, Next: BLOX.BWidget-geometry management, Prev: BLOX.BWidget-accessing, Up: BLOX.BWidget + +BLOX.BWidget: customization +--------------------------- + +addChild: child + The widget identified by child has been added to the receiver. + This method is public not because you can call it, but because it + can be useful to override it, not forgetting the call to + basicAddChild, to perform some initialization on the children just + added. Answer the new child. + +create + Make the receiver able to respond to its widget protocol. This + method is public not because you can call it, but because it can + be useful to override it, not forgetting the call to super, to + perform some initialization on the primitive widget just created; + for an example of this, see the implementation of BButtonLike. + +initialize: parentWidget + This is called by #new: to initialize the widget (as the name + says...). The default implementation calls all the other methods + in the `customization' protocol and some private ones that take + care of making the receiver's status consistent, so you should + usually call it instead of doing everything by hand. This method + is public not because you can call it, but because it might be + useful to override it. Always answer the receiver. + +setInitialSize + This is called by #initialize: to set the widget's initial size. + The whole area is occupied by default. This method is public not + because you can call it, but because it can be useful to override + it. + + + +File: gst-libs.info, Node: BLOX.BWidget-geometry management, Next: BLOX.BWidget-widget protocol, Prev: BLOX.BWidget-customization, Up: BLOX.BWidget + +BLOX.BWidget: geometry management +--------------------------------- + +boundingBox + Answer a Rectangle containing the bounding box of the receiver + +boundingBox: rect + Set the bounding box of the receiver to rect (a Rectangle). + +child: child height: value + Set the given child's height to value. The default implementation + of this method uses `rubber-sheet' geometry management as + explained in the comment to BWidget's #height method. You should + not use this method, which is automatically called by the child's + #height: method, but you might want to override it. The child's + property slots whose name ends with `Geom' are reserved for this + method. This method should never fail - if it doesn't apply to the + kind of geometry management that the receiver does, just do + nothing. + +child: child heightOffset: value + Adjust the given child's height by a fixed amount of value pixel. + This is meaningful for the default implementation, using + `rubber-sheet' geometry management as explained in the comment to + BWidget's #height and #heightOffset: methods. You should not use + this method, which is automatically called by the child's + #heightOffset: method, but you might want to override it. if it + doesn't apply to the kind of geometry management that the receiver + does, just add value to the current height of the widget. + +child: child stretch: aBoolean + This method is only used when on the path from the receiver to its + toplevel there is a BContainer. It decides whether child is among + the widgets that are stretched to fill the entire width of the + BContainer; if this has not been set for this widget, it is + propagated along the widget hierarchy. + +child: child width: value + Set the given child's width to value. The default implementation + of this method uses `rubber-sheet' geometry management as + explained in the comment to BWidget's #width method. You should + not use this method, which is automatically called by the child's + #width: method, but you might want to override it. The child's + property slots whose name ends with `Geom' are reserved for this + method. This method should never fail - if it doesn't apply to the + kind of geometry management that the receiver does, just do + nothing. + +child: child widthOffset: value + Adjust the given child's width by a fixed amount of value pixel. + This is meaningful for the default implementation, using + `rubber-sheet' geometry management as explained in the comment to + BWidget's #width and #widthOffset: methods. You should not use + this method, which is automatically called by the child's + #widthOffset: method, but you might want to override it. if it + doesn't apply to the kind of geometry management that the receiver + does, just add value to the current width of the widget. + +child: child x: value + Set the given child's x to value. The default implementation of + this method uses `rubber-sheet' geometry management as explained in + the comment to BWidget's #x method. You should not use this + method, which is automatically called by the child's #x: method, + but you might want to override it. The child's property slots + whose name ends with `Geom' are reserved for this method. This + method should never fail - if it doesn't apply to the kind of + geometry management that the receiver does, just do nothing. + +child: child xOffset: value + Adjust the given child's x by a fixed amount of value pixel. This + is meaningful for the default implementation, using `rubber-sheet' + geometry management as explained in the comment to BWidget's #x and + #xOffset: methods. You should not use this method, which is + automatically called by the child's #xOffset: method, but you + might want to override it. if it doesn't apply to the kind of + geometry management that the receiver does, just add value to the + current x of the widget. + +child: child y: value + Set the given child's y to value. The default implementation of + this method uses `rubber-sheet' geometry management as explained in + the comment to BWidget's #y method. You should not use this + method, which is automatically called by the child's #y: method, + but you might want to override it. The child's property slots + whose name ends with `Geom' are reserved for this method. This + method should never fail - if it doesn't apply to the kind of + geometry management that the receiver does, just do nothing. + +child: child yOffset: value + Adjust the given child's y by a fixed amount of value pixel. This + is meaningful for the default implementation, using `rubber-sheet' + geometry management as explained in the comment to BWidget's #y and + #yOffset: methods. You should not use this method, which is + automatically called by the child's #yOffset: method, but you + might want to override it. if it doesn't apply to the kind of + geometry management that the receiver does, just add value to the + current y of the widget. + +extent + Answer a Point containing the receiver's size + +extent: extent + Set the receiver's size to the width and height contained in extent + (a Point). + +height + Answer the `variable' part of the receiver's height within the + parent widget. The value returned does not include any fixed + amount of pixels indicated by #heightOffset: and must be + interpreted in a relative fashion: the ratio of the returned value + to the current size of the parent will be preserved upon resize. + This apparently complicated method is known as `rubber sheet' + geometry management. Behavior if the left or right edges are not + within the client area of the parent is not defined - the window + might be clamped or might be positioned according to the + specification. + +height: value + Set to `value' the height of the widget within the parent widget. + The value is specified in a relative fashion as an integer, so + that the ratio of `value' to the current size of the parent will be + preserved upon resize. This apparently complicated method is known + as `rubber sheet' geometry management. + +heightAbsolute + Force a recalculation of the layout of widgets in the receiver's + parent, then answer the current height of the receiver in pixels. + +heightChild: child + Answer the given child's height. The default implementation of + this method uses `rubber-sheet' geometry management as explained in + the comment to BWidget's #height method. You should not use this + method, which is automatically called by the child's #height + method, but you might want to override. The child's property + slots whose name ends with `Geom' are reserved for this method. + This method should never fail - if it doesn't apply to the kind of + geometry management that the receiver does, just return 0. + +heightOffset + Private - Answer the pixels to be added or subtracted to the height + of the receiver, with respect to the value set in a relative + fashion through the #height: method. + + and + +heightOffset: value + Add or subtract to the height of the receiver a fixed amount of + `value' pixels, with respect to the value set in a relative + fashion through the #height: method. Usage of this method is + deprecated; use #inset: and BContainers instead. + +heightPixels: value + Set the current height of the receiver to `value' pixels. Note + that, after calling this method, #height will answer 0, which is + logical considering that there is no `variable' part of the size + (refer to #height and #height: for more explanations). + +inset: pixels + Inset the receiver's bounding box by the specified amount. + +left: left top: top right: right bottom: bottom + Set the bounding box of the receiver through its components. + +pos: position + Set the receiver's origin to the width and height contained in + position (a Point). + +posHoriz: aBlox + Position the receiver immediately to the right of aBlox. + +posVert: aBlox + Position the receiver just below aBlox. + +stretch: aBoolean + This method is only considered when on the path from the receiver + to its toplevel there is a BContainer. It decides whether we are + among the widgets that are stretched to fill the entire width of + the BContainer. + +width + Answer the `variable' part of the receiver's width within the + parent widget. The value returned does not include any fixed + amount of pixels indicated by #widthOffset: and must be + interpreted in a relative fashion: the ratio of the returned value + to the current size of the parent will be preserved upon resize. + This apparently complicated method is known as `rubber sheet' + geometry management. Behavior if the left or right edges are not + within the client area of the parent is not defined - the window + might be clamped or might be positioned according to the + specification. + +width: value + Set to `value' the width of the widget within the parent widget. + The value is specified in a relative fashion as an integer, so + that the ratio of `value' to the current size of the parent will be + preserved upon resize. This apparently complicated method is known + as `rubber sheet' geometry management. + +width: xSize height: ySize + Set the size of the receiver through its components xSize and + ySize. + +widthAbsolute + Force a recalculation of the layout of widgets in the receiver's + parent, then answer the current width of the receiver in pixels. + +widthChild: child + Answer the given child's width. The default implementation of this + method uses `rubber-sheet' geometry management as explained in the + comment to BWidget's #width method. You should not use this + method, which is automatically called by the child's #width method, + but you might want to override. The child's property slots whose + name ends with `Geom' are reserved for this method. This method + should never fail - if it doesn't apply to the kind of geometry + management that the receiver does, just return 0. + +widthOffset + Private - Answer the pixels to be added or subtracted to the width + of the receiver, with respect to the value set in a relative + fashion through the #width: method. + + and + +widthOffset: value + Add or subtract to the width of the receiver a fixed amount of + `value' pixels, with respect to the value set in a relative + fashion through the #width: method. Usage of this method is + deprecated; use #inset: and BContainers instead. + +widthPixels: value + Set the current width of the receiver to `value' pixels. Note that, + after calling this method, #width will answer 0, which is logical + considering that there is no `variable' part of the size (refer to + #width and #width: for more explanations). + +x + Answer the `variable' part of the receiver's x within the parent + widget. The value returned does not include any fixed amount of + pixels indicated by #xOffset: and must be interpreted in a relative + fashion: the ratio of the returned value to the current size of the + parent will be preserved upon resize. This apparently complicated + method is known as `rubber sheet' geometry management. Behavior + if the left or right edges are not within the client area of the + parent is not defined - the window might be clamped or might be + positioned according to the specification. + +x: value + Set to `value' the x of the widget within the parent widget. The + value is specified in a relative fashion as an integer, so that the + ratio of `value' to the current size of the parent will be + preserved upon resize. This apparently complicated method is known + as `rubber sheet' geometry management. + +x: xPos y: yPos + Set the origin of the receiver through its components xPos and + yPos. + +x: xPos y: yPos width: xSize height: ySize + Set the bounding box of the receiver through its origin and size. + +xAbsolute + Force a recalculation of the layout of widgets in the receiver's + parent, then answer the current x of the receiver in pixels. + +xChild: child + Answer the given child's x. The default implementation of this + method uses `rubber-sheet' geometry management as explained in the + comment to BWidget's #x method. You should not use this method, + which is automatically called by the child's #x method, but you + might want to override. The child's property slots whose name + ends with `Geom' are reserved for this method. This method should + never fail - if it doesn't apply to the kind of geometry + management that the receiver does, just return 0. + +xOffset + Private - Answer the pixels to be added or subtracted to the x of + the receiver, with respect to the value set in a relative fashion + through the #x: method. + + and + +xOffset: value + Add or subtract to the x of the receiver a fixed amount of `value' + pixels, with respect to the value set in a relative fashion through + the #x: method. Usage of this method is deprecated; use #inset: + and BContainers instead. + +xPixels: value + Set the current x of the receiver to `value' pixels. Note that, + after calling this method, #x will answer 0, which is logical + considering that there is no `variable' part of the size (refer to + #x and #x: for more explanations). + +xRoot + Answer the x position of the receiver with respect to the top-left + corner of the desktop (including the offset of the virtual root + window under X). + +y + Answer the `variable' part of the receiver's y within the parent + widget. The value returned does not include any fixed amount of + pixels indicated by #yOffset: and must be interpreted in a relative + fashion: the ratio of the returned value to the current size of the + parent will be preserved upon resize. This apparently complicated + method is known as `rubber sheet' geometry management. Behavior + if the left or right edges are not within the client area of the + parent is not defined - the window might be clamped or might be + positioned according to the specification. + +y: value + Set to `value' the y of the widget within the parent widget. The + value is specified in a relative fashion as an integer, so that the + ratio of `value' to the current size of the parent will be + preserved upon resize. This apparently complicated method is known + as `rubber sheet' geometry management. + +yAbsolute + Force a recalculation of the layout of widgets in the receiver's + parent, then answer the current y of the receiver in pixels. + +yChild: child + Answer the given child's y. The default implementation of this + method uses `rubber-sheet' geometry management as explained in the + comment to BWidget's #y method. You should not use this method, + which is automatically called by the child's #y method, but you + might want to override. The child's property slots whose name + ends with `Geom' are reserved for this method. This method should + never fail - if it doesn't apply to the kind of geometry + management that the receiver does, just return 0. + +yOffset + Private - Answer the pixels to be added or subtracted to the y of + the receiver, with respect to the value set in a relative fashion + through the #y: method. + + and + +yOffset: value + Add or subtract to the y of the receiver a fixed amount of `value' + pixels, with respect to the value set in a relative fashion through + the #y: method. Usage of this method is deprecated; use #inset: + and BContainers instead. + +yPixels: value + Set the current y of the receiver to `value' pixels. Note that, + after calling this method, #y will answer 0, which is logical + considering that there is no `variable' part of the size (refer to + #y and #y: for more explanations). + +yRoot + Answer the y position of the receiver with respect to the top-left + corner of the desktop (including the offset of the virtual root + window under X). + + + +File: gst-libs.info, Node: BLOX.BWidget-widget protocol, Prev: BLOX.BWidget-geometry management, Up: BLOX.BWidget + +BLOX.BWidget: widget protocol +----------------------------- + +activate + At any given time, one window on each display is designated as the + focus window; any key press or key release events for the display + are sent to that window. This method allows one to choose which + window will have the focus in the receiver's display If the + application currently has the input focus on the receiver's + display, this method resets the input focus for the receiver's + display to the receiver. If the application doesn't currently have + the input focus on the receiver's display, Blox will remember the + receiver as the focus for its top-level; the next time the focus + arrives at the top-level, it will be redirected to the receiver + (this is because most window managers will set the focus only to + top-level windows, leaving it up to the application to redirect + the focus among the children of the top-level). + +activateNext + Activate the next widget in the focus `tabbing' order. The focus + order depends on the widget creation order; you can set which + widgets are in the order with the #tabStop: method. + +activatePrevious + Activate the previous widget in the focus `tabbing' order. The + focus order depends on the widget creation order; you can set + which widgets are in the order with the #tabStop: method. + +bringToTop + Raise the receiver so that it is above all of its siblings in the + widgets' z-order; the receiver will not be obscured by any + siblings and will obscure any siblings that overlap it. + +isActive + Return whether the receiver is the window that currently owns the + focus on its display. + +sendToBack + Lower the receiver so that it is below all of its siblings in the + widgets' z-order; the receiver will be obscured by any siblings + that overlap it and will not obscure any siblings. + + + +File: gst-libs.info, Node: BLOX.BWindow, Next: BLOX.Gui, Prev: BLOX.BWidget, Up: BLOX + +BLOX.BWindow +============ + +Defined in namespace BLOX +Superclass: BLOX.BForm +Category: Graphics-Windows + I am the boss. Nothing else could be viewed or interacted with if + it wasn't for me... )):-> + +* Menu: + +* BLOX.BWindow class-instance creation:: (class) +* BLOX.BWindow-accessing:: (instance) +* BLOX.BWindow-widget protocol:: (instance) + + +File: gst-libs.info, Node: BLOX.BWindow class-instance creation, Next: BLOX.BWindow-accessing, Up: BLOX.BWindow + +BLOX.BWindow class: instance creation +------------------------------------- + +new + Answer a new top-level window. + +new: label + Answer a new top-level window with `label' as its title bar + caption. + +popup: initializationBlock + This method should not be called for instances of this class. + + + +File: gst-libs.info, Node: BLOX.BWindow-accessing, Next: BLOX.BWindow-widget protocol, Prev: BLOX.BWindow class-instance creation, Up: BLOX.BWindow + +BLOX.BWindow: accessing +----------------------- + +callback + Answer a DirectedMessage that is sent to verify whether the + receiver must be destroyed when the user asks to unmap it. + +callback: aReceiver message: aSymbol + Set up so that aReceiver is sent the aSymbol message (the name of + a zero- or one-argument selector) when the user asks to unmap the + receiver. If the method accepts an argument, the receiver is + passed. If the method returns true, the window and its children + are destroyed (which is the default action, taken if no callback is + set up). If the method returns false, the window is left in place. + +invokeCallback + Generate a synthetic callback, destroying the window if no + callback was set up or if the callback method answers true. + +label + Answer the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + +label: value + Set the value of the label option for the widget. Specifies a + string to be displayed inside the widget. The way in which the + string is displayed depends on the particular widget and may be + determined by other options, such as anchor. For windows, this is + the title of the window. + +menu: value + Set the value of the menu option for the widget. Specifies a menu + widget to be used as a menubar. On the Macintosh, the menubar will + be displayed accross the top of the main monitor. On Microsoft + Windows and all UNIX platforms, the menu will appear accross the + toplevel window as part of the window dressing maintained by the + window manager. + +resizable + Answer the value of the resizable option for the widget. Answer + whether the user can be resize the window or not. If resizing is + disabled, then the window's size will be the size from the most + recent interactive resize or geometry-setting method. If there has + been no such operation then the window's natural size will be used. + +resizable: value + Set the value of the resizable option for the widget. Answer + whether the user can be resize the window or not. If resizing is + disabled, then the window's size will be the size from the most + recent interactive resize or geometry-setting method. If there has + been no such operation then the window's natural size will be used. + + + +File: gst-libs.info, Node: BLOX.BWindow-widget protocol, Prev: BLOX.BWindow-accessing, Up: BLOX.BWindow + +BLOX.BWindow: widget protocol +----------------------------- + +center + Center the window in the screen + +centerIn: view + Center the window in the given widget + +height + Answer the height of the window, as deduced from the geometry that + the window manager imposed on the window. + +height: anInteger + Ask the window manager to give the given height to the window. + +heightAbsolute + Answer the height of the window, as deduced from the geometry that + the window manager imposed on the window. + +heightOffset: value + This method should not be called for instances of this class. + +iconify + Map a window and in iconified state. If a window has not been + mapped yet, this is achieved by mapping the window in withdrawn + state first, and then iconifying it. + +isMapped + Answer whether the window is mapped + +isWindow + Answer `true'. + +map + Map the window and bring it to the topmost position in the Z-order. + +modalMap + Map the window while establishing an application-local grab for it. + An event loop is started that ends only after the window has been + destroyed. When a grab is set for a particular window, all + pointer events are restructed to the grab window and its + descendants in Blox's window hierarchy. Whenever the pointer is + within the grab window's subtree, the pointer will behave exactly + the same as if there had been no grab grab at all and all events + will be reported in the normal fashion. When the pointer is + outside the window's tree, button presses and releases and mouse + motion events are reported to the grabbing window, and window + entry and window exit events are ignored. In other words, windows + outside the grab subtree will be visible on the screen but they + will be insensitive until the grab is released. The tree of + windows underneath the grab window can include top-level windows, + in which case all of those top-level windows and their descendants + will continue to receive mouse events during the grab. Keyboard + events (key presses and key releases) are delivered as usual: the + window manager controls which application receives keyboard + events, and if they are sent to any window in the grabbing + application then they are redirected to the window owning the + focus. + +state + Set the value of the state option for the window. Specifies one + of four states for the window: either normal, iconic, withdrawn, + or (Windows only) zoomed. + +state: aSymbol + Raise an error. To set a BWindow's state, use #map and #unmap. + +unmap + Unmap a window, causing it to be forgotten about by the window + manager + +width + Answer the width of the window, as deduced from the geometry that + the window manager imposed on the window. + +width: anInteger + Ask the window manager to give the given width to the window. + +width: xSize height: ySize + Ask the window manager to give the given width and height to the + window. + +widthAbsolute + Answer the width of the window, as deduced from the geometry that + the window manager imposed on the window. + +widthOffset: value + This method should not be called for instances of this class. + +window + Answer the receiver. + +x + Answer the x coordinate of the window's top-left corner, as + deduced from the geometry that the window manager imposed on the + window. + +x: anInteger + Ask the window manager to move the window's left border to the + given x coordinate, keeping the size unchanged + +x: xPos y: yPos + Ask the window manager to move the window's top-left corner to the + given coordinates, keeping the size unchanged + +x: xPos y: yPos width: xSize height: ySize + Ask the window manager to give the requested geometry to the + window. + +xAbsolute + Answer the x coordinate of the window's top-left corner, as + deduced from the geometry that the window manager imposed on the + window. + +xOffset: value + This method should not be called for instances of this class. + +y + Answer the y coordinate of the window's top-left corner, as + deduced from the geometry that the window manager imposed on the + window. + +y: anInteger + Ask the window manager to move the window's left border to the + given y coordinate, keeping the size unchanged + +yAbsolute + Answer the y coordinate of the window's top-left corner, as + deduced from the geometry that the window manager imposed on the + window. + +yOffset: value + This method should not be called for instances of this class. + + + +File: gst-libs.info, Node: BLOX.Gui, Prev: BLOX.BWindow, Up: BLOX + +BLOX.Gui +======== + +Defined in namespace BLOX +Superclass: Object +Category: Graphics-Windows + I am a small class which serves as a base for complex objects which + expose an individual protocol but internally use a Blox widget for + creating their user interface. + +* Menu: + +* BLOX.Gui-accessing:: (instance) + + +File: gst-libs.info, Node: BLOX.Gui-accessing, Up: BLOX.Gui + +BLOX.Gui: accessing +------------------- + +blox + Return instance of blox subclass which implements window + +blox: aBlox + Set instance of blox subclass which implements window + + + +File: gst-libs.info, Node: TCP, Next: I18N, Prev: BLOX, Up: Top + +TCP +*** + +* Menu: + + +Alphabetic list: +* TCP.AbstractSocket:: +* TCP.AbstractSocketImpl:: +* TCP.Datagram:: +* TCP.DatagramSocket:: +* TCP.DatagramSocketImpl:: +* TCP.ICMPSocketImpl:: +* TCP.IPAddress:: +* TCP.MulticastSocket:: +* TCP.MulticastSocketImpl:: +* TCP.OOBSocketImpl:: +* TCP.RawSocketImpl:: +* TCP.ReadBuffer:: +* TCP.ServerSocket:: +* TCP.Socket:: +* TCP.SocketAddress:: +* TCP.SocketImpl:: +* TCP.TCPSocketImpl:: +* TCP.UDPSocketImpl:: +* TCP.WriteBuffer:: + + +Class tree: + (Object) + (Stream) + (PositionableStream) + (ReadStream) +* TCP.ReadBuffer:: + (WriteStream) + (ReadWriteStream) + (ByteStream) + (FileDescriptor) +* TCP.AbstractSocketImpl:: +* TCP.DatagramSocketImpl:: +* TCP.MulticastSocketImpl:: +* TCP.UDPSocketImpl:: +* TCP.OOBSocketImpl:: +* TCP.RawSocketImpl:: +* TCP.ICMPSocketImpl:: +* TCP.SocketImpl:: +* TCP.TCPSocketImpl:: +* TCP.WriteBuffer:: +* TCP.AbstractSocket:: +* TCP.DatagramSocket:: +* TCP.MulticastSocket:: +* TCP.ServerSocket:: +* TCP.Socket:: +* TCP.Datagram:: +* TCP.SocketAddress:: +* TCP.IPAddress:: + + +File: gst-libs.info, Node: TCP.AbstractSocket, Next: TCP.AbstractSocketImpl, Up: TCP + +TCP.AbstractSocket +================== + +Defined in namespace TCP +Superclass: Stream +Category: Sockets-Streams + +* Menu: + +* TCP.AbstractSocket class-defaults:: (class) +* TCP.AbstractSocket class-instance creation:: (class) +* TCP.AbstractSocket class-timed-out operations:: (class) +* TCP.AbstractSocket-accessing:: (instance) +* TCP.AbstractSocket-printing:: (instance) +* TCP.AbstractSocket-socket options:: (instance) +* TCP.AbstractSocket-stream protocol:: (instance) +* TCP.AbstractSocket-testing:: (instance) + + +File: gst-libs.info, Node: TCP.AbstractSocket class-defaults, Next: TCP.AbstractSocket class-instance creation, Up: TCP.AbstractSocket + +TCP.AbstractSocket class: defaults +---------------------------------- + +defaultAddressClass + Answer the default address family to be used. In the library, the + address family is represented by a subclass of SocketAddress which + is by default IPAddress. + +defaultAddressClass: class + Set the default address family to be used. In the library, the + address family is represented by a subclass of SocketAddress which + is by default IPAddress. + +defaultImplementationClass + Answer the default implementation class. Depending on the + subclass, this might be the default stream socket implementation + class of the default address class, or rather its default datagram + socket implementation class + + + +File: gst-libs.info, Node: TCP.AbstractSocket class-instance creation, Next: TCP.AbstractSocket class-timed-out operations, Prev: TCP.AbstractSocket class-defaults, Up: TCP.AbstractSocket + +TCP.AbstractSocket class: instance creation +------------------------------------------- + +new + This method should not be called for instances of this class. + +new: implementation + Answer a new instance of the receiver, using as the underlying + layer the object passed as the `implementation' parameter; the + object is probably going to be some kind of AbstractSocketImpl. + + + +File: gst-libs.info, Node: TCP.AbstractSocket class-timed-out operations, Next: TCP.AbstractSocket-accessing, Prev: TCP.AbstractSocket class-instance creation, Up: TCP.AbstractSocket + +TCP.AbstractSocket class: timed-out operations +---------------------------------------------- + +checkPeriod + Answer the period that is to elapse between socket polls if data + data is not ready and the connection is still open (in + milliseconds) + +checkPeriod: anInteger + Set the period that is to elapse between socket polls if data data + is not ready and the connection is still open (in milliseconds) + +timeout + Answer the period that is to elapse between the request for (yet + unavailable) data and the moment when the connection is considered + dead (in milliseconds) + +timeout: anInteger + Set the period that is to elapse between the request for (yet + unavailable) data and the moment when the connection is considered + dead (in milliseconds) + + + +File: gst-libs.info, Node: TCP.AbstractSocket-accessing, Next: TCP.AbstractSocket-printing, Prev: TCP.AbstractSocket class-timed-out operations, Up: TCP.AbstractSocket + +TCP.AbstractSocket: accessing +----------------------------- + +address + Answer an IP address that is of common interest (this can be either + the local or the remote address, according to the definition in the + subclass). + +available + Answer whether there is data available on the socket. + +close + Close the socket represented by the receiver. + +flush + Flush any buffers used by the receiver. + +isOpen + Answer whether the connection between the receiver and the remote + endpoint is still alive. + +localAddress + Answer the local IP address of the socket. + +localPort + Answer the local IP port of the socket. + +port + Answer an IP port that is of common interest (this can be the port + for either the local or remote endpoint, according to the + definitions in the subclass + +remoteAddress + Answer the IP address of the socket's remote endpoint. + +remotePort + Answer the IP port of the socket's remote endpoint. + + + +File: gst-libs.info, Node: TCP.AbstractSocket-printing, Next: TCP.AbstractSocket-socket options, Prev: TCP.AbstractSocket-accessing, Up: TCP.AbstractSocket + +TCP.AbstractSocket: printing +---------------------------- + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-libs.info, Node: TCP.AbstractSocket-socket options, Next: TCP.AbstractSocket-stream protocol, Prev: TCP.AbstractSocket-printing, Up: TCP.AbstractSocket + +TCP.AbstractSocket: socket options +---------------------------------- + +soLinger + Answer the number of seconds that the socket is allowed to wait if + it promises reliable delivery but has unacknowledged/untransmitted + packets when it is closed, or nil if those packets are left to + their destiny or discarded. + +soLinger: linger + Set the number of seconds that the socket is allowed to wait if it + promises reliable delivery but has unacknowledged/untransmitted + packets when it is closed. + +soLingerOff + Specify that, even if the socket promises reliable delivery, any + packets that are unacknowledged/untransmitted when it is closed + are to be left to their destiny or discarded. + +species + Answer `String'. + + + +File: gst-libs.info, Node: TCP.AbstractSocket-stream protocol, Next: TCP.AbstractSocket-testing, Prev: TCP.AbstractSocket-socket options, Up: TCP.AbstractSocket + +TCP.AbstractSocket: stream protocol +----------------------------------- + +atEnd + By default, answer whether the connection is still open. + +next + Read another character from the socket, failing if the connection + is dead. + +nextPut: char + Write `char' to the socket, failing if the connection is dead. The + SIGPIPE signal is automatically caught and ignored by the system. + + + +File: gst-libs.info, Node: TCP.AbstractSocket-testing, Prev: TCP.AbstractSocket-stream protocol, Up: TCP.AbstractSocket + +TCP.AbstractSocket: testing +--------------------------- + +isExternalStream + Answer whether the receiver streams on a file or socket. + + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl, Next: TCP.Datagram, Prev: TCP.AbstractSocket, Up: TCP + +TCP.AbstractSocketImpl +====================== + +Defined in namespace TCP +Superclass: FileDescriptor +Category: Sockets-Protocols + +* Menu: + +* TCP.AbstractSocketImpl class-abstract:: (class) +* TCP.AbstractSocketImpl class-socket creation:: (class) +* TCP.AbstractSocketImpl-accessing:: (instance) +* TCP.AbstractSocketImpl-asynchronous operations:: (instance) +* TCP.AbstractSocketImpl-socket operations:: (instance) +* TCP.AbstractSocketImpl-socket options:: (instance) + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl class-abstract, Next: TCP.AbstractSocketImpl class-socket creation, Up: TCP.AbstractSocketImpl + +TCP.AbstractSocketImpl class: abstract +-------------------------------------- + +addressClass + Answer the class responsible for handling addresses for the + receiver + +protocol + Answer the protocol parameter for `create' + +socketType + Answer the socket type parameter for `create'. + + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl class-socket creation, Next: TCP.AbstractSocketImpl-accessing, Prev: TCP.AbstractSocketImpl class-abstract, Up: TCP.AbstractSocketImpl + +TCP.AbstractSocketImpl class: socket creation +--------------------------------------------- + +new + Create a socket for the receiver. + + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl-accessing, Next: TCP.AbstractSocketImpl-asynchronous operations, Prev: TCP.AbstractSocketImpl class-socket creation, Up: TCP.AbstractSocketImpl + +TCP.AbstractSocketImpl: accessing +--------------------------------- + +connectTo: ipAddress port: port + Connect the receiver to the given IP address and port. `Connecting' + means attaching the remote endpoint of the socket. + +localAddress + Answer the address of the local endpoint of the socket (even if IP + is not being used, this identifies the machine that is bound to the + socket). + +localPort + Answer the port of the local endpoint of the socket (even if IP is + not being used, this identifies the service or process that is + bound to the socket). + +remoteAddress + Answer the address of the remote endpoint of the socket (even if IP + is not being used, this identifies the machine to which the socket + is connected). + +remotePort + Answer the port of the remote endpoint of the socket (even if IP + is not being used, this identifies the service or process to which + the socket is connected). + + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl-asynchronous operations, Next: TCP.AbstractSocketImpl-socket operations, Prev: TCP.AbstractSocketImpl-accessing, Up: TCP.AbstractSocketImpl + +TCP.AbstractSocketImpl: asynchronous operations +----------------------------------------------- + +ensureReadable + If the file is open, wait until data can be read from it. The wait + allows other Processes to run. + +ensureWriteable + If the file is open, wait until we can write to it. The wait + allows other Processes to run. + +waitForException + If the file is open, wait until an exceptional condition (such as + presence of out of band data) has occurred on it. The wait allows + other Processes to run. + + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl-socket operations, Next: TCP.AbstractSocketImpl-socket options, Prev: TCP.AbstractSocketImpl-asynchronous operations, Up: TCP.AbstractSocketImpl + +TCP.AbstractSocketImpl: socket operations +----------------------------------------- + +accept: implementationClass + Accept a connection on the receiver, and create a new instance of + implementationClass that will deal with the newly created active + server socket. + +addressClass + Answer the class responsible for handling addresses for the + receiver + +bindTo: ipAddress port: port + Bind the receiver to the given IP address and port. `Binding' means + attaching the local endpoint of the socket. + +fileOp: ioFuncIndex + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +fileOp: ioFuncIndex with: arg1 + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex with: arg1 ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +fileOp: ioFuncIndex with: arg1 with: arg2 + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex with: arg1 with: arg2 ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 + Private - Used to limit the number of primitives used by + FileStreams + +fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 ifFail: aBlock + Private - Used to limit the number of primitives used by + FileStreams. + +getSockName + Retrieve a ByteArray containing a sockaddr_in struct for the local + endpoint of the socket. + +listen: backlog + Make the receiver a passive server socket with a pending + connections queue of the given size. + + + +File: gst-libs.info, Node: TCP.AbstractSocketImpl-socket options, Prev: TCP.AbstractSocketImpl-socket operations, Up: TCP.AbstractSocketImpl + +TCP.AbstractSocketImpl: socket options +-------------------------------------- + +optionAt: opt level: level put: anObject + Modify the value of a socket option. The option identifier is in + `opt' and the level is in `level'. anObject can be a boolean, + integer, socket address or ByteArray. A layer over this method is + provided for the most common socket options, so this will be rarely + used. + +optionAt: opt level: level size: size + Answer in a ByteArray of the given size the value of a socket + option. The option identifier is in `opt' and the level is in + `level'. A layer over this method is provided for the most common + socket options, so this will be rarely used. + +soError + Answer the pending error on the socket, or 0 if none + +soLinger + Answer the number of seconds by which a `close' operation can block + to ensure that all the packets have reliably reached the + destination, or nil if those packets are left to their destiny. + +soLinger: linger + Set the number of seconds by which a `close' operation can block + to ensure that all the packets have reliably reached the + destination. If linger is nil, those packets are left to their + destiny. + +soReuseAddr + Answer whether another socket can be bound the same local address + as this one. If you enable this option, you can actually have two + sockets with the same Internet port number; but the system won't + allow you to use the two identically-named sockets in a way that + would confuse the Internet. The reason for this option is that + some higher-level Internet protocols, including FTP, require you + to keep reusing the same socket number. + +soReuseAddr: aBoolean + Set whether another socket can be bound the same local address as + this one. + + + +File: gst-libs.info, Node: TCP.Datagram, Next: TCP.DatagramSocket, Prev: TCP.AbstractSocketImpl, Up: TCP + +TCP.Datagram +============ + +Defined in namespace TCP +Superclass: Object +Category: Sockets-Protocols + +* Menu: + +* TCP.Datagram class-instance creation:: (class) +* TCP.Datagram-accessing:: (instance) + + +File: gst-libs.info, Node: TCP.Datagram class-instance creation, Next: TCP.Datagram-accessing, Up: TCP.Datagram + +TCP.Datagram class: instance creation +------------------------------------- + +data: aByteArray + Answer a new datagram with the specified data. + +data: aByteArray address: ipAddress port: port + Answer a new datagram with the specified target socket, and + aByteArray as its data. + +object: object address: ipAddress port: port + Serialize the object onto a ByteArray, and create a Datagram with + the object as its contents, and the specified receiver. Note that + each invocation of this method creates a separate ObjectDumper; if + different objects that you're sending are likely to contain + references to the same objects, you should use + #object:objectDumper:address:port:. + +object: object objectDumper: od address: ipAddress port: port + Serialize the object onto a ByteArray, and create a Datagram with + the object as its contents, and the specified receiver. + Serialization takes place through ObjectDumper passed as `od', and + the stream attached to the ObjectDumper is resetted every time. + Using this method is indicated if different objects that you're + sending are likely to contain references to the same objects. + + + +File: gst-libs.info, Node: TCP.Datagram-accessing, Prev: TCP.Datagram class-instance creation, Up: TCP.Datagram + +TCP.Datagram: accessing +----------------------- + +address + Answer the address of the target socket + +address: ipAddress + Set the address of the target socket + +data + Answer the data attached to the datagram + +data: aByteArray + Set the data attached to the datagram + +get + Parse the data attached to the datagram through a newly created + ObjectDumper, and answer the resulting object. This method is + complementary to #object:address:port:. + +getThrough: objectDumper + Parse the data attached to the datagram through the given + ObjectDumper without touching the stream to which it is attached, + and answer the resulting object. The state of the ObjectDumper, + though, is updated. This method is complementary to + #object:objectDumper:address:port:. + +port + Answer the IP port of the target socket + +port: thePort + Set the IP port of the target socket + + + +File: gst-libs.info, Node: TCP.DatagramSocket, Next: TCP.DatagramSocketImpl, Prev: TCP.Datagram, Up: TCP + +TCP.DatagramSocket +================== + +Defined in namespace TCP +Superclass: TCP.AbstractSocket +Category: Sockets-Streams + +* Menu: + +* TCP.DatagramSocket class-accessing:: (class) +* TCP.DatagramSocket class-initialization:: (class) +* TCP.DatagramSocket class-instance creation:: (class) +* TCP.DatagramSocket-accessing:: (instance) +* TCP.DatagramSocket-direct operations:: (instance) + + +File: gst-libs.info, Node: TCP.DatagramSocket class-accessing, Next: TCP.DatagramSocket class-initialization, Up: TCP.DatagramSocket + +TCP.DatagramSocket class: accessing +----------------------------------- + +defaultBufferSize + Answer the default maximum size for input datagrams. + +defaultBufferSize: size + Set the default maximum size for input datagrams. + +defaultImplementationClass + Answer the default implementation class. Depending on the + subclass, this might be the default stream socket implementation + class of the default address class, or rather its default datagram + socket implementation class + + + +File: gst-libs.info, Node: TCP.DatagramSocket class-initialization, Next: TCP.DatagramSocket class-instance creation, Prev: TCP.DatagramSocket class-accessing, Up: TCP.DatagramSocket + +TCP.DatagramSocket class: initialization +---------------------------------------- + +initialize + Initialize the class to use an input datagram size of 128. + + + +File: gst-libs.info, Node: TCP.DatagramSocket class-instance creation, Next: TCP.DatagramSocket-accessing, Prev: TCP.DatagramSocket class-initialization, Up: TCP.DatagramSocket + +TCP.DatagramSocket class: instance creation +------------------------------------------- + +local: ipAddressOrString port: remotePort + Create a new socket and bind it to the given host (passed as a + String to be resolved or as an IPAddress), on the given port. + +new + Answer a new datagram socket (by default an UDP socket), without a + specified local address and port. + +port: localPort + Create a new socket and bind it to the local host on the given + port. + +remote: ipAddressOrString port: remotePort local: ipAddress port: localPort + Create a new socket and bind it to the given host (passed as a + String to be resolved or as an IPAddress), and to the given + remotePort. The default destination for the datagrams will be + ipAddressOrString (if not nil), on the remotePort port. + + + +File: gst-libs.info, Node: TCP.DatagramSocket-accessing, Next: TCP.DatagramSocket-direct operations, Prev: TCP.DatagramSocket class-instance creation, Up: TCP.DatagramSocket + +TCP.DatagramSocket: accessing +----------------------------- + +address + Answer the local address. + +bufferSize + Answer the size of the buffer in which datagrams are stored. + +bufferSize: size + Set the size of the buffer in which datagrams are stored. + +next + Read a datagram on the socket and answer it. + +nextPut: aDatagram + Send the given datagram on the socket. + +peek + Peek for a datagram on the socket and answer it. + +peek: datagram + Peek for a datagram on the socket, store it in `datagram', and + answer the datagram itself. + +port + Answer the local port. + +receive: datagram + Read a datagram from the socket, store it in `datagram', and + answer the datagram itself. + + + +File: gst-libs.info, Node: TCP.DatagramSocket-direct operations, Prev: TCP.DatagramSocket-accessing, Up: TCP.DatagramSocket + +TCP.DatagramSocket: direct operations +------------------------------------- + +nextFrom: ipAddress port: port + Answer the next datagram from the given address and port. + + + +File: gst-libs.info, Node: TCP.DatagramSocketImpl, Next: TCP.ICMPSocketImpl, Prev: TCP.DatagramSocket, Up: TCP + +TCP.DatagramSocketImpl +====================== + +Defined in namespace TCP +Superclass: TCP.AbstractSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.DatagramSocketImpl class-parameters:: (class) +* TCP.DatagramSocketImpl-accessing:: (instance) +* TCP.DatagramSocketImpl-socket operations:: (instance) + + +File: gst-libs.info, Node: TCP.DatagramSocketImpl class-parameters, Next: TCP.DatagramSocketImpl-accessing, Up: TCP.DatagramSocketImpl + +TCP.DatagramSocketImpl class: parameters +---------------------------------------- + +socketType + Answer the socket type parameter for `create'. + + + +File: gst-libs.info, Node: TCP.DatagramSocketImpl-accessing, Next: TCP.DatagramSocketImpl-socket operations, Prev: TCP.DatagramSocketImpl class-parameters, Up: TCP.DatagramSocketImpl + +TCP.DatagramSocketImpl: accessing +--------------------------------- + +bufferSize + Answer the size of the buffer in which datagrams are stored. + +bufferSize: size + Set the size of the buffer in which datagrams are stored. + + + +File: gst-libs.info, Node: TCP.DatagramSocketImpl-socket operations, Prev: TCP.DatagramSocketImpl-accessing, Up: TCP.DatagramSocketImpl + +TCP.DatagramSocketImpl: socket operations +----------------------------------------- + +next + Retrieve a datagram from the receiver, answer a new Datagram object + +nextPut: aDatagram + Send aDatagram on the socket + +peek + Peek for a datagram on the receiver, answer a new Datagram object + +peek: aDatagram + Peek for a datagram on the receiver, answer aDatagram modified to + contain information on the newly received datagram. + +receive: aDatagram + Retrieve a datagram from the receiver, answer aDatagram modified + to contain information on the newly received datagram. + +receive: flags datagram: aDatagram + Receive a new datagram into `datagram', with the given flags, and + answer `datagram' itself; this is an abstract method. The flags + can be zero to receive the datagram, or `self msgPeek' to only + peek for it without removing it from the queue. + +send: aDatagram to: theReceiver port: port + Send aDatagram on the socket to the given receiver and port + + + +File: gst-libs.info, Node: TCP.ICMPSocketImpl, Next: TCP.IPAddress, Prev: TCP.DatagramSocketImpl, Up: TCP + +TCP.ICMPSocketImpl +================== + +Defined in namespace TCP +Superclass: TCP.RawSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.ICMPSocketImpl class-implementation:: (class) + + +File: gst-libs.info, Node: TCP.ICMPSocketImpl class-implementation, Up: TCP.ICMPSocketImpl + +TCP.ICMPSocketImpl class: implementation +---------------------------------------- + +addressClass + Answer the class that holds network addresses for ICMP sockets, + i.e. IPAddress. + + + +File: gst-libs.info, Node: TCP.IPAddress, Next: TCP.MulticastSocket, Prev: TCP.ICMPSocketImpl, Up: TCP + +TCP.IPAddress +============= + +Defined in namespace TCP +Superclass: TCP.SocketAddress +Category: Sockets-Protocols + +* Menu: + +* TCP.IPAddress class-constants:: (class) +* TCP.IPAddress class-initialization:: (class) +* TCP.IPAddress class-instance creation:: (class) +* TCP.IPAddress-accessing:: (instance) +* TCP.IPAddress-printing:: (instance) + + +File: gst-libs.info, Node: TCP.IPAddress class-constants, Next: TCP.IPAddress class-initialization, Up: TCP.IPAddress + +TCP.IPAddress class: constants +------------------------------ + +addressSize + Answer the size of an IPv4 address. + +version + Answer the version of IP that the receiver implements. + + + +File: gst-libs.info, Node: TCP.IPAddress class-initialization, Next: TCP.IPAddress class-instance creation, Prev: TCP.IPAddress class-constants, Up: TCP.IPAddress + +TCP.IPAddress class: initialization +----------------------------------- + +createLocalAddress + Answer an object representing a local address in the address + family for the receiver + +createLoopbackHost + Answer an object representing the loopback host in the address + family for the receiver. This is 127.0.0.1 for IPv4. + +createUnknownAddress + Answer an object representing an unkown address in the address + family for the receiver + +initialize + Set up the default implementation classes for the receiver + + + +File: gst-libs.info, Node: TCP.IPAddress class-instance creation, Next: TCP.IPAddress-accessing, Prev: TCP.IPAddress class-initialization, Up: TCP.IPAddress + +TCP.IPAddress class: instance creation +-------------------------------------- + +fromArray: parts + Answer a new IPAddress from an array of numbers; the numbers are + to be thought as the dot-separated numbers in the standard + numbers-and-dots notation for IPv4 addresses. + +fromBytes: aByteArray + Answer a new IPAddress from a ByteArray containing the bytes in + the same order as the digit form: 131.175.6.2 would be represented + as #[131 175 6 2]. + +fromSockAddr: aByteArray port: portAdaptor + Private - Answer a new IPAddress from a ByteArray containing a C + sockaddr_in structure. The portAdaptor's value is changed to + contain the port that the structure refers to. + +fromString: aString + Answer a new IPAddress from a String containing the requested + address in digit form. Hexadecimal forms are not allowed. An + Internet host address is a number containing four bytes of data. + These are divided into two parts, a network number and a local + network address number within that network. The network number + consists of the first one, two or three bytes; the rest of the + bytes are the local address. Network numbers are registered with + the Network Information Center (NIC), and are divided into three + classes-A, B, and C. The local network address numbers of + individual machines are registered with the administrator of the + particular network. Class A networks have single-byte numbers in + the range 0 to 127. There are only a small number of Class A + networks, but they can each support a very large number of hosts + (several millions). Medium-sized Class B networks have two-byte + network numbers, with the first byte in the range 128 to 191; they + support several thousands of host, but are almost exhausted. Class + C networks are the smallest and the most commonly available; they + have three-byte network numbers, with the first byte in the range + 192-223. Class D (multicast, 224.0.0.0 to 239.255.255.255) and E + (research, 240.0.0.0 to 255.255.255.255) also have three-byte + network numbers. Thus, the first 1, 2, or 3 bytes of an Internet + address specifies a network. The remaining bytes of the Internet + address specify the address within that network. The Class A + network 0 is reserved for broadcast to all networks. In addition, + the host number 0 within each network is reserved for broadcast to + all hosts in that network. The Class A network 127 is reserved + for loopback; you can always use the Internet address `127.0.0.1' + to refer to the host machine (this is answered by the + #loopbackHost class method). Since a single machine can be a + member of multiple networks, it can have multiple Internet host + addresses. However, there is never supposed to be more than one + machine with the same host address. There are four forms of the + standard numbers-and-dots notation for Internet addresses: a.b.c.d + specifies all four bytes of the address individually; a.b.c + interprets as a 2-byte quantity, which is useful for specifying + host addresses in a Class B network with network address number + a.b; a.b intrprets the last part of the address as a 3-byte + quantity, which is useful for specifying host addresses in a Class + A network with network address number a. If only one part is + given, this corresponds directly to the host address number. + +new + This method should not be called for instances of this class. + +with: b1 with: b2 with: b3 with: b4 + Answer a new IPAddress whose bytes (from most-significant to + least-significant) are in the parameters. + + + +File: gst-libs.info, Node: TCP.IPAddress-accessing, Next: TCP.IPAddress-printing, Prev: TCP.IPAddress class-instance creation, Up: TCP.IPAddress + +TCP.IPAddress: accessing +------------------------ + +addressClass + Answer the `address class' of the receiver (see IPAddress + class>>#fromString:) + +asByteArray + Answer a read-only ByteArray of size four containing the + receiver's bytes in network order (big-endian) + +host + Answer an host number for the receiver; this is given by the last + three bytes for class A addresses, by the last two bytes for class + B addresses, else by the last byte. + +isMulticast + Answer whether the receiver reprensents an address reserved for + multicast datagram connections + +network + Answer a network number for the receiver; this is given by the + first three bytes for class C/D/E addresses, by the first two + bytes for class B addresses, else by the first byte. + +subnet + Answer an host number for the receiver; this is 0 for class A + addresses, while it is given by the last byte of the network + number for class B/C/D/E addresses. + + + +File: gst-libs.info, Node: TCP.IPAddress-printing, Prev: TCP.IPAddress-accessing, Up: TCP.IPAddress + +TCP.IPAddress: printing +----------------------- + +printOn: aStream + Print the receiver in dot notation. + + + +File: gst-libs.info, Node: TCP.MulticastSocket, Next: TCP.MulticastSocketImpl, Prev: TCP.IPAddress, Up: TCP + +TCP.MulticastSocket +=================== + +Defined in namespace TCP +Superclass: TCP.DatagramSocket +Category: Sockets-Streams + +* Menu: + +* TCP.MulticastSocket-instance creation:: (instance) + + +File: gst-libs.info, Node: TCP.MulticastSocket-instance creation, Up: TCP.MulticastSocket + +TCP.MulticastSocket: instance creation +-------------------------------------- + +interface + Answer the local device supporting the multicast socket. This is + usually set to any local address. + +interface: ipAddress + Set the local device supporting the multicast socket. This is + usually set to any local address. + +join: ipAddress + Join the multicast socket at the given IP address + +leave: ipAddress + Leave the multicast socket at the given IP address + +nextPut: packet timeToLive: timeToLive + Send the datagram with a specific TTL (time-to-live) + +timeToLive + Answer the socket's datagrams' default time-to-live + +timeToLive: newTTL + Set the default time-to-live for the socket's datagrams + + + +File: gst-libs.info, Node: TCP.MulticastSocketImpl, Next: TCP.OOBSocketImpl, Prev: TCP.MulticastSocket, Up: TCP + +TCP.MulticastSocketImpl +======================= + +Defined in namespace TCP +Superclass: TCP.DatagramSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.MulticastSocketImpl-multicasting:: (instance) + + +File: gst-libs.info, Node: TCP.MulticastSocketImpl-multicasting, Up: TCP.MulticastSocketImpl + +TCP.MulticastSocketImpl: multicasting +------------------------------------- + +ipMulticastIf + Answer the local device for a multicast socket (in the form of an + address) + +ipMulticastIf: interface + Set the local device for a multicast socket (in the form of an + address, usually anyLocalAddress) + +join: ipAddress + Join the multicast socket at the given address + +leave: ipAddress + Leave the multicast socket at the given address + +timeToLive + Answer the time to live of the datagrams sent through the receiver + to a multicast socket. + +timeToLive: ttl + Set the time to live of the datagrams sent through the receiver to + a multicast socket. + + + +File: gst-libs.info, Node: TCP.OOBSocketImpl, Next: TCP.RawSocketImpl, Prev: TCP.MulticastSocketImpl, Up: TCP + +TCP.OOBSocketImpl +================= + +Defined in namespace TCP +Superclass: TCP.DatagramSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.OOBSocketImpl class-implementation:: (class) +* TCP.OOBSocketImpl-implementation:: (instance) + + +File: gst-libs.info, Node: TCP.OOBSocketImpl class-implementation, Next: TCP.OOBSocketImpl-implementation, Up: TCP.OOBSocketImpl + +TCP.OOBSocketImpl class: implementation +--------------------------------------- + +addressClass + Answer the class that holds network addresses for TCP sockets, + i.e. IPAddress. + + + +File: gst-libs.info, Node: TCP.OOBSocketImpl-implementation, Prev: TCP.OOBSocketImpl class-implementation, Up: TCP.OOBSocketImpl + +TCP.OOBSocketImpl: implementation +--------------------------------- + +canRead + Answer whether out-of-band data is available on the socket + +ensureReadable + Stop the process until an error occurs or out-of-band data becomes + available on the socket + + + +File: gst-libs.info, Node: TCP.RawSocketImpl, Next: TCP.ReadBuffer, Prev: TCP.OOBSocketImpl, Up: TCP + +TCP.RawSocketImpl +================= + +Defined in namespace TCP +Superclass: TCP.DatagramSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.RawSocketImpl class-parameters:: (class) + + +File: gst-libs.info, Node: TCP.RawSocketImpl class-parameters, Up: TCP.RawSocketImpl + +TCP.RawSocketImpl class: parameters +----------------------------------- + +socketType + Answer the socket type parameter for `create'. + + + +File: gst-libs.info, Node: TCP.ReadBuffer, Next: TCP.ServerSocket, Prev: TCP.RawSocketImpl, Up: TCP + +TCP.ReadBuffer +============== + +Defined in namespace TCP +Superclass: ReadStream +Category: Examples-Useful tools + I'm a ReadStream that, when the end of the stream is reached, + evaluates an user defined block to try to get some more data. + +* Menu: + +* TCP.ReadBuffer class-instance creation:: (class) +* TCP.ReadBuffer-buffer handling:: (instance) + + +File: gst-libs.info, Node: TCP.ReadBuffer class-instance creation, Next: TCP.ReadBuffer-buffer handling, Up: TCP.ReadBuffer + +TCP.ReadBuffer class: instance creation +--------------------------------------- + +on: aCollection + Answer a Stream that uses aCollection as a buffer. You should + ensure that the fillBlock is set before the first operation, + because the buffer will report that the data has ended until you + set the fillBlock. + + + +File: gst-libs.info, Node: TCP.ReadBuffer-buffer handling, Prev: TCP.ReadBuffer class-instance creation, Up: TCP.ReadBuffer + +TCP.ReadBuffer: buffer handling +------------------------------- + +atEnd + Answer whether the data stream has ended. + +bufferContents + Answer the data that is in the buffer, and empty it. + +fill + Fill the buffer with more data if it is empty, and answer true if + the fill block was able to read more data. + +fillBlock: block + Set the block that fills the buffer. It receives a collection and + the number of bytes to fill in it, and must return the number of + bytes actually read + +isEmpty + Answer whether the next input operation will force a buffer fill + +isFull + Answer whether the buffer has been just filled + +notEmpty + Check whether the next input operation will force a buffer fill + and answer true if it will not. + +pastEnd + Try to fill the buffer if the data stream has ended. + + + +File: gst-libs.info, Node: TCP.ServerSocket, Next: TCP.Socket, Prev: TCP.ReadBuffer, Up: TCP + +TCP.ServerSocket +================ + +Defined in namespace TCP +Superclass: TCP.AbstractSocket +Category: Sockets-Streams + +* Menu: + +* TCP.ServerSocket class-instance creation:: (class) +* TCP.ServerSocket-accessing:: (instance) +* TCP.ServerSocket-initializing:: (instance) + + +File: gst-libs.info, Node: TCP.ServerSocket class-instance creation, Next: TCP.ServerSocket-accessing, Up: TCP.ServerSocket + +TCP.ServerSocket class: instance creation +----------------------------------------- + +defaultQueueSize + Answer the default length of the queue for pending connections. + When the queue fills, new clients attempting to connect fail until + the server is send #accept to accept a connection from the queue. + +port: anInteger + Answer a new ServerSocket serving on any local address, on the + given port, with a pending connections queue of the default length. + +port: anInteger bindTo: ipAddress + Answer a new ServerSocket serving on the given address and port, + with a pending connections queue of the default length. + +port: anInteger queueSize: backlog + Answer a new ServerSocket serving on any local address, on the + given port, with a pending connections queue of the given length. + +port: anInteger queueSize: backlog bindTo: ipAddress + Answer a new ServerSocket serving on the given address and port, + and with a pending connections queue of the given length. + +queueSize: backlog + Answer a new ServerSocket serving on any local address and port, + with a pending connections queue of the given length. + +queueSize: backlog bindTo: ipAddress + Answer a new ServerSocket serving on the given local address, and + on any port, with a pending connections queue of the given length. + + + +File: gst-libs.info, Node: TCP.ServerSocket-accessing, Next: TCP.ServerSocket-initializing, Prev: TCP.ServerSocket class-instance creation, Up: TCP.ServerSocket + +TCP.ServerSocket: accessing +--------------------------- + +accept + Accept a new connection and create a new instance of Socket if + there is one, else answer nil. + +accept: socketClass + Accept a new connection and create a new instance of socketClass if + there is one, else answer nil. This is usually needed only to + create DatagramSockets. + +address + Answer the local address + +port + Answer the local port (the port that the passive socket is + listening on). + +primAccept: socketClass + Accept a new connection and create a new instance of Socket if + there is one, else fail. + +waitForConnection + Wait for a connection to be available, and suspend the currently + executing process in the meanwhile. + + + +File: gst-libs.info, Node: TCP.ServerSocket-initializing, Prev: TCP.ServerSocket-accessing, Up: TCP.ServerSocket + +TCP.ServerSocket: initializing +------------------------------ + +port: anInteger queueSize: backlog bindTo: localAddr + Initialize the ServerSocket so that it serves on the given address + and port, and has a pending connections queue of the given length. + + + +File: gst-libs.info, Node: TCP.Socket, Next: TCP.SocketAddress, Prev: TCP.ServerSocket, Up: TCP + +TCP.Socket +========== + +Defined in namespace TCP +Superclass: TCP.AbstractSocket +Category: Sockets-Streams + +* Menu: + +* TCP.Socket class-accessing:: (class) +* TCP.Socket class-instance creation:: (class) +* TCP.Socket class-tests:: (class) +* TCP.Socket class-well known ports:: (class) +* TCP.Socket-accessing:: (instance) +* TCP.Socket-out-of-band data:: (instance) +* TCP.Socket-printing:: (instance) +* TCP.Socket-stream protocol:: (instance) + + +File: gst-libs.info, Node: TCP.Socket class-accessing, Next: TCP.Socket class-instance creation, Up: TCP.Socket + +TCP.Socket class: accessing +--------------------------- + +defaultImplementationClass + Answer the default implementation class. Depending on the + subclass, this might be the default stream socket implementation + class of the default address class, or rather its default datagram + socket implementation class + +readBufferSize + Answer the size of the read buffer for newly-created sockets + +readBufferSize: anInteger + Set the size of the read buffer for newly-created sockets + +writeBufferSize + Answer the size of the write buffer for newly-created sockets + +writeBufferSize: anInteger + Set the size of the write buffer for newly-created sockets + + + +File: gst-libs.info, Node: TCP.Socket class-instance creation, Next: TCP.Socket class-tests, Prev: TCP.Socket class-accessing, Up: TCP.Socket + +TCP.Socket class: instance creation +----------------------------------- + +remote: ipAddressOrString port: remotePort + Create a new socket and connect to the given host (passed as a + String to be resolved or as a SocketAddress), and to the given + port. + +remote: ipAddressOrString port: remotePort local: ipAddress port: localPort + Create a new socket and connect to the given host (passed as a + String to be resolved or as a SocketAddress), and to the given + remotePort. Then bind it to the local address passed in + ipAddress, on the localPort port; if the former is nil, any local + address will do, and if the latter is 0, any local port will do. + + + +File: gst-libs.info, Node: TCP.Socket class-tests, Next: TCP.Socket class-well known ports, Prev: TCP.Socket class-instance creation, Up: TCP.Socket + +TCP.Socket class: tests +----------------------- + +loopbackTest + Send data from one socket to another on the local machine. Tests + most of the socket primitives. + +loopbackTest: bufferSizes + Send data from one socket to another on the local machine. Tests + most of the socket primitives. The parameter is the size of the + input and output buffer sizes. + +microTest + Extremely small test (try to receive SMTP header) + +producerConsumerTest + Send data from one socket to another on the local machine. Tests + most of the socket primitives and works with different processes. + +sendTest + Send data to the 'discard' socket of localhost. + +sendTest: host + Send data to the 'discard' socket of the given host. Tests the + speed of one-way data transfers across the network to the given + host. Note that many hosts do not run a discard server. + +tweakedLoopbackTest + Send data from one socket to another on the local machine, trying + to avoid buffering overhead. Tests most of the socket primitives. + Comparison of the results of loopbackTest and tweakedLoopbackTest + should give a measure of the overhead of buffering when + sending/receiving large quantities of data. + +udpLoopbackTest + Send data from one UDP socket to another on the local machine. + Tests most of the socket primitives and works with different + processes. + + + +File: gst-libs.info, Node: TCP.Socket class-well known ports, Next: TCP.Socket-accessing, Prev: TCP.Socket class-tests, Up: TCP.Socket + +TCP.Socket class: well known ports +---------------------------------- + +defaultPortAt: protocol + Answer the port that is used (by default) for the given service + (high level protocol) + +defaultPortAt: protocol ifAbsent: port + Answer the port that is used (by default) for the given service + (high level protocol), or the specified port if none is registered. + +defaultPortAt: protocol put: port + Associate the given port to the service specified by `protocol'. + +initialize + Initialize the receiver's defaults + +portCmdServer + Answer the port on which the rsh daemon listens + +portDayTime + Answer the port on which the TOD service listens + +portDiscard + Answer the port on which the DISCARD service listens + +portDNS + Answer the port on which the DNS listens + +portEcho + Answer the port on which the ECHO service listens + +portExecServer + Answer the port on which the exec server listens + +portFinger + Answer the port on which the finger daemon listens + +portFTP + Answer the port on which the FTP daemon listens + +portGopher + Answer the port on which the Gopher daemon listens + +portHTTP + Answer the port on which the http daemon listens + +portLoginServer + Answer the port on which the rlogin daemon listens + +portNetStat + Answer the port on which the NETSTAT service listens + +portNNTP + Answer the port on which the nntp daemon listens + +portPOP3 + Answer the port on which the pop3 daemon listens + +portReserved + Answer the last port reserved to privileged processes + +portSMTP + Answer the port on which the SMTP daemon listens + +portSSH + Answer the port on which the SSH daemon listens + +portSystat + Answer the port on which the SYSTAT service listens + +portTelnet + Answer the port on which the TELNET daemon listens + +portTimeServer + Answer the port on which the time server listens + +portWhois + Answer the port on which the WHOIS daemon listens + + + +File: gst-libs.info, Node: TCP.Socket-accessing, Next: TCP.Socket-out-of-band data, Prev: TCP.Socket class-well known ports, Up: TCP.Socket + +TCP.Socket: accessing +--------------------- + +address + Answer the address of the remote endpoint + +port + Answer the port of the remote endpoint + + + +File: gst-libs.info, Node: TCP.Socket-out-of-band data, Next: TCP.Socket-printing, Prev: TCP.Socket-accessing, Up: TCP.Socket + +TCP.Socket: out-of-band data +---------------------------- + +outOfBand + Return a datagram socket to be used for receiving out-of-band data + on the receiver. + + + +File: gst-libs.info, Node: TCP.Socket-printing, Next: TCP.Socket-stream protocol, Prev: TCP.Socket-out-of-band data, Up: TCP.Socket + +TCP.Socket: printing +-------------------- + +printOn: aStream + Print a representation of the receiver on aStream + + + +File: gst-libs.info, Node: TCP.Socket-stream protocol, Prev: TCP.Socket-printing, Up: TCP.Socket + +TCP.Socket: stream protocol +--------------------------- + +atEnd + Answer whether more data is available on the socket + +available + Answer whether more data is available in the socket's read buffer + or from the operating system. + +bufferContents + Answer the current contents of the read buffer + +close + Flush and close the socket. + +fill + Fill the read buffer with data read from the socket + +flush + Flush the write buffer to the operating system + +isPeerAlive + Answer whether the connection with the peer remote machine is still + valid. + +next + Read a byte from the socket. This might yield control to other + Smalltalk Processes. + +next: count + Read `count' bytes from the socket. This might yield control to + other Smalltalk Processes. + +nextHunk + Answer the next buffers worth of stuff in the Stream represented + by the receiver. Do at most one actual input operation. + +nextPut: char + Write a character to the socket; this acts as a bit-bucket when + the socket is closed. This might yield control to other Smalltalk + Processes. + +nextPutAll: aString + Write aString to the socket; this acts as a bit-bucket when the + socket is closed. This might yield control to other Smalltalk + Processes. + +peek + Read a byte from the socket, without advancing the buffer; answer + nil if no more data is available. This might yield control to + other Smalltalk Processes. + +peekFor: anObject + Read a byte from the socket, advancing the buffer only if it + matches anObject; answer whether they did match or not. This + might yield control to other Smalltalk Processes. + +readBufferSize: size + Create a new read buffer of the given size (which is only possible + before the first read or if the current buffer is empty). + +writeBufferSize: size + Create a new write buffer of the given size, flushing the old one + is needed. This might yield control to other Smalltalk Processes. + + + +File: gst-libs.info, Node: TCP.SocketAddress, Next: TCP.SocketImpl, Prev: TCP.Socket, Up: TCP + +TCP.SocketAddress +================= + +Defined in namespace TCP +Superclass: Object +Category: Sockets-Protocols + +* Menu: + +* TCP.SocketAddress class-abstract:: (class) +* TCP.SocketAddress class-accessing:: (class) +* TCP.SocketAddress class-host name lookup:: (class) +* TCP.SocketAddress class-initialization:: (class) +* TCP.SocketAddress-accessing:: (instance) + + +File: gst-libs.info, Node: TCP.SocketAddress class-abstract, Next: TCP.SocketAddress class-accessing, Up: TCP.SocketAddress + +TCP.SocketAddress class: abstract +--------------------------------- + +fromSockAddr: aByteArray port: portAdaptor + Private - Answer a new IPAddress from a ByteArray containing a C + sockaddr structure. The portAdaptor's value is changed to contain + the port that the structure refers to. + + + +File: gst-libs.info, Node: TCP.SocketAddress class-accessing, Next: TCP.SocketAddress class-host name lookup, Prev: TCP.SocketAddress class-abstract, Up: TCP.SocketAddress + +TCP.SocketAddress class: accessing +---------------------------------- + +addressFamily + Answer the address family used for sockets whose endpoint is an + instance of the receiver. + +anyLocalAddress + Answer an IPAddress representing a local address. + +at: host cache: aBlock + Private - Answer the list of addresses associated to the given + host in the cache. If the host is not cached yet, evaluate aBlock + and cache and answer the result. + +defaultDatagramSocketImplClass + Answer the class that, by default, is used to map between the + Socket's protocol and a low-level C interface. + +defaultDatagramSocketImplClass: aClass + Set which class will be used by default to map between the + receiver's protocol and a low-level C interface. + +defaultRawSocketImplClass + Answer the class that, by default, is used to map between the + Socket's protocol and a low-level C interface. + +defaultRawSocketImplClass: aClass + Set which class will be used by default to map between the + receiver's protocol and a low-level C interface. + +defaultStreamSocketImplClass + Answer the class that, by default, is used to map between the + Socket's protocol and a low-level C interface. + +defaultStreamSocketImplClass: aClass + Set which class will be used by default to map between the + receiver's protocol and a low-level C interface. + +isDigitAddress: aString + Answer whether the receiver can interpret aStrnig as a valid + address without going through a resolver. + +localHostName + Answer the name of the local machine. + +loopbackHost + Answer an instance of the receiver representing the local machine + (127.0.0.1 in the IPv4 family). + +unknownAddress + Answer an instance of the receiver representing an unknown machine + (0.0.0.0 in the IPv4 family). + + + +File: gst-libs.info, Node: TCP.SocketAddress class-host name lookup, Next: TCP.SocketAddress class-initialization, Prev: TCP.SocketAddress class-accessing, Up: TCP.SocketAddress + +TCP.SocketAddress class: host name lookup +----------------------------------------- + +allByName: aString + Answer all the IP addresses that refer to the the given host. If + a digit address is passed in aString, the result is an array + containing the single passed address. If the host could not be + resolved to an IP address, answer nil. + +byName: aString + Answer a single IP address that refer to the the given host. If a + digit address is passed in aString, the result is the same as + using #fromString:. If the host could not be resolved to an IP + address, answer nil. + + + +File: gst-libs.info, Node: TCP.SocketAddress class-initialization, Next: TCP.SocketAddress-accessing, Prev: TCP.SocketAddress class-host name lookup, Up: TCP.SocketAddress + +TCP.SocketAddress class: initialization +--------------------------------------- + +createLocalAddress + Answer an object representing a local address in the address + family for the receiver + +createLoopbackHost + Answer an object representing the loopback host in the address + family for the receiver. By default this is the same as + #createLocalAddress, since the loopback host is actually a local + address that some implementations optimize specially. + +createUnknownAddress + Answer an object representing an unkown address in the address + family for the receiver + +flush + Flush the cached IP addresses. + +newRawSocket + Create a new raw socket, providing access to low-level network + protocols and interfaces for the protocol family represented by + the receiver (for example, the C protocol family PF_INET for the + IPAddress class) Ordinary user programs usually have no need to + use this method. + +update: aspect + Flush all the caches for IPAddress subclasses + + + +File: gst-libs.info, Node: TCP.SocketAddress-accessing, Prev: TCP.SocketAddress class-initialization, Up: TCP.SocketAddress + +TCP.SocketAddress: accessing +---------------------------- + += anIPAddress + Answer whether the receiver and anIPAddress represent the same + machine. The host name is not checked because an IPAddress + created before a DNS is activated is named after its + numbers-and-dots notation, while the same IPAddress, created when + a DNS is active, is named after its resolved name. + +asByteArray + Convert the receiver to a ByteArray passed to the operating + system's socket functions) + +hash + Answer an hash value for the receiver + +name + Answer the host name (or the digit notation if the DNS could not + resolve the address). If the DNS answers a different IP address + for the same name, the second response is not cached and the digit + notation is also returned (somebody's likely playing strange jokes + with your DNS). + + + +File: gst-libs.info, Node: TCP.SocketImpl, Next: TCP.TCPSocketImpl, Prev: TCP.SocketAddress, Up: TCP + +TCP.SocketImpl +============== + +Defined in namespace TCP +Superclass: TCP.AbstractSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.SocketImpl class-parameters:: (class) +* TCP.SocketImpl-abstract:: (instance) +* TCP.SocketImpl-socket operations:: (instance) + + +File: gst-libs.info, Node: TCP.SocketImpl class-parameters, Next: TCP.SocketImpl-abstract, Up: TCP.SocketImpl + +TCP.SocketImpl class: parameters +-------------------------------- + +socketType + Answer the socket type parameter for `create'. + + + +File: gst-libs.info, Node: TCP.SocketImpl-abstract, Next: TCP.SocketImpl-socket operations, Prev: TCP.SocketImpl class-parameters, Up: TCP.SocketImpl + +TCP.SocketImpl: abstract +------------------------ + +outOfBandImplClass + Return an implementation class to be used for out-of-band data on + the receiver. + + + +File: gst-libs.info, Node: TCP.SocketImpl-socket operations, Prev: TCP.SocketImpl-abstract, Up: TCP.SocketImpl + +TCP.SocketImpl: socket operations +--------------------------------- + +connectTo: ipAddress port: port + Try to connect the socket represented by the receiver to the given + remote machine. + +getPeerName + Retrieve a ByteArray containing a sockaddr_in struct for the + remote endpoint of the socket. + + + +File: gst-libs.info, Node: TCP.TCPSocketImpl, Next: TCP.UDPSocketImpl, Prev: TCP.SocketImpl, Up: TCP + +TCP.TCPSocketImpl +================= + +Defined in namespace TCP +Superclass: TCP.SocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.TCPSocketImpl class-implementation:: (class) +* TCP.TCPSocketImpl-implementation:: (instance) + + +File: gst-libs.info, Node: TCP.TCPSocketImpl class-implementation, Next: TCP.TCPSocketImpl-implementation, Up: TCP.TCPSocketImpl + +TCP.TCPSocketImpl class: implementation +--------------------------------------- + +addressClass + Answer the class that holds network addresses for TCP sockets, + i.e. IPAddress. + + + +File: gst-libs.info, Node: TCP.TCPSocketImpl-implementation, Prev: TCP.TCPSocketImpl class-implementation, Up: TCP.TCPSocketImpl + +TCP.TCPSocketImpl: implementation +--------------------------------- + +outOfBandImplClass + Return an implementation class to be used for out-of-band data on + the receiver. + + + +File: gst-libs.info, Node: TCP.UDPSocketImpl, Next: TCP.WriteBuffer, Prev: TCP.TCPSocketImpl, Up: TCP + +TCP.UDPSocketImpl +================= + +Defined in namespace TCP +Superclass: TCP.MulticastSocketImpl +Category: Sockets-Protocols + +* Menu: + +* TCP.UDPSocketImpl class-implementation:: (class) +* TCP.UDPSocketImpl-multicasting:: (instance) + + +File: gst-libs.info, Node: TCP.UDPSocketImpl class-implementation, Next: TCP.UDPSocketImpl-multicasting, Up: TCP.UDPSocketImpl + +TCP.UDPSocketImpl class: implementation +--------------------------------------- + +addressClass + Answer the class that holds network addresses for UDP sockets, + i.e. IPAddress. + + + +File: gst-libs.info, Node: TCP.UDPSocketImpl-multicasting, Prev: TCP.UDPSocketImpl class-implementation, Up: TCP.UDPSocketImpl + +TCP.UDPSocketImpl: multicasting +------------------------------- + +ipMulticastIf + Answer the local device for a multicast socket (in the form of an + address) + +ipMulticastIf: interface + Set the local device for a multicast socket (in the form of an + address, usually anyLocalAddress) + +join: ipAddress + Join the multicast socket at the given address + +leave: ipAddress + Leave the multicast socket at the given address + +primJoinLeave: ipAddress option: opt + Private - Used to join or leave a multicast service. + +timeToLive + Answer the time to live of the datagrams sent through the receiver + to a multicast socket. + +timeToLive: ttl + Set the time to live of the datagrams sent through the receiver to + a multicast socket. + + + +File: gst-libs.info, Node: TCP.WriteBuffer, Prev: TCP.UDPSocketImpl, Up: TCP + +TCP.WriteBuffer +=============== + +Defined in namespace TCP +Superclass: WriteStream +Category: Examples-Useful tools + I'm a WriteStream that, instead of growing the collection, + evaluates an user defined block and starts over with the same + collection. + +* Menu: + +* TCP.WriteBuffer-buffer handling:: (instance) + + +File: gst-libs.info, Node: TCP.WriteBuffer-buffer handling, Up: TCP.WriteBuffer + +TCP.WriteBuffer: buffer handling +-------------------------------- + +flush + Evaluate the flushing block and reset the stream + +flushBlock: block + Set which block will be used to flush the buffer. The block will + be evaluated with a collection and an Integer n as parameters, and + will have to write the first n elements of the collection. + + + +File: gst-libs.info, Node: I18N, Next: XML, Prev: TCP, Up: Top + +I18N +**** + +* Menu: + + +Alphabetic list: +* I18N.BigEndianFileStream:: +* I18N.EncodedStream:: +* I18N.Encoder:: +* I18N.Encoders.ComposeUCS4BE:: +* I18N.Encoders.ComposeUCS4LE:: +* I18N.Encoders.FromUCS4:: +* I18N.Encoders.FromUTF7:: +* I18N.Encoders.Iconv:: +* I18N.Encoders.SplitUCS4BE:: +* I18N.Encoders.SplitUCS4LE:: +* I18N.Encoders.ToUCS4:: +* I18N.Encoders.ToUTF7:: +* I18N.FileStreamSegment:: +* I18N.IncompleteSequenceError:: +* I18N.InvalidCharsetError:: +* I18N.InvalidSequenceError:: +* I18N.LcMessages:: +* I18N.LcMessagesCatalog:: +* I18N.LcMessagesDomain:: +* I18N.LcMessagesDummyDomain:: +* I18N.LcMessagesMoFileVersion0:: +* I18N.LcMessagesTerritoryDomain:: +* I18N.LcMonetary:: +* I18N.LcMonetaryISO:: +* I18N.LcNumeric:: +* I18N.LcPrintFormats:: +* I18N.LcTime:: +* I18N.Locale:: +* I18N.LocaleConventions:: +* I18N.LocaleData:: +* I18N.RTEAlternativeNode:: +* I18N.RTEBinaryNode:: +* I18N.RTELiteralNode:: +* I18N.RTENegationNode:: +* I18N.RTEParameterNode:: +* I18N.RunTimeExpression:: + + +Class tree: + (Object) + (FileSegment) +* I18N.FileStreamSegment:: +* I18N.LocaleData:: +* I18N.LcMessagesDomain:: +* I18N.LcMessagesCatalog:: +* I18N.LcMessagesMoFileVersion0:: +* I18N.LcMessagesDummyDomain:: +* I18N.LcMessagesTerritoryDomain:: +* I18N.Locale:: +* I18N.LocaleConventions:: +* I18N.LcMessages:: +* I18N.LcPrintFormats:: +* I18N.LcNumeric:: +* I18N.LcMonetary:: +* I18N.LcMonetaryISO:: +* I18N.LcTime:: +* I18N.RunTimeExpression:: +* I18N.RTEAlternativeNode:: +* I18N.RTEBinaryNode:: +* I18N.RTELiteralNode:: +* I18N.RTENegationNode:: +* I18N.RTEParameterNode:: + (Signal) + (Exception) + (Error) +* I18N.IncompleteSequenceError:: +* I18N.InvalidSequenceError:: + (SystemExceptions.InvalidValue) + (SystemExceptions.InvalidArgument) +* I18N.InvalidCharsetError:: + (Stream) +* I18N.Encoder:: +* I18N.EncodedStream:: +* I18N.Encoders.FromUCS4:: +* I18N.Encoders.SplitUCS4BE:: +* I18N.Encoders.SplitUCS4LE:: +* I18N.Encoders.ToUTF7:: +* I18N.Encoders.Iconv:: +* I18N.Encoders.ToUCS4:: +* I18N.Encoders.ComposeUCS4BE:: +* I18N.Encoders.ComposeUCS4LE:: +* I18N.Encoders.FromUTF7:: + (PositionableStream) + (WriteStream) + (ReadWriteStream) + (ByteStream) + (FileDescriptor) + (FileStream) +* I18N.BigEndianFileStream:: + + +File: gst-libs.info, Node: I18N.BigEndianFileStream, Next: I18N.EncodedStream, Up: I18N + +I18N.BigEndianFileStream +======================== + +Defined in namespace I18N +Superclass: FileStream +Category: i18n-Messages + Unlike ByteStream and FileStream, this retrieves integer numbers in + big-endian (68000, PowerPC, SPARC) order. + +* Menu: + + +File: gst-libs.info, Node: I18N.EncodedStream, Next: I18N.Encoder, Prev: I18N.BigEndianFileStream, Up: I18N + +I18N.EncodedStream +================== + +Defined in namespace I18N +Superclass: I18N.Encoder +Category: i18n-Character sets + This class is a factory for subclasses of Encoder. The Encoder is + in practice a pipe, so the purpose of this class is simply to + construct an appropriate pipe. + +* Menu: + +* I18N.EncodedStream class-initializing:: (class) +* I18N.EncodedStream class-instance creation:: (class) + + +File: gst-libs.info, Node: I18N.EncodedStream class-initializing, Next: I18N.EncodedStream class-instance creation, Up: I18N.EncodedStream + +I18N.EncodedStream class: initializing +-------------------------------------- + +initialize + Initialize the registry of the encoders to include the standard + encoders contained in the library. + +registerEncoderFor: arrayOfAliases toUCS4: toUCS4Class fromUCS4: fromUCS4Class + Register the two classes that will respectively convert from the + charsets in arrayOfAliases to UCS4 and vice versa. The former + class is a stream that accepts characters and returns (via #next) + integers representing UCS-4 character codes, while the latter + accepts UCS-4 character codes and converts them to characters. + For an example see respectively FromUTF7 and ToUTF7 (I admit it is + not a trivial example). + + + +File: gst-libs.info, Node: I18N.EncodedStream class-instance creation, Prev: I18N.EncodedStream class-initializing, Up: I18N.EncodedStream + +I18N.EncodedStream class: instance creation +------------------------------------------- + +on: aStringOrStream from: fromEncoding + Answer a pipe of encoders that converts aStringOrStream (which can + be a string or another stream) from the given encoding to the + default locale's default charset. + +on: aStringOrStream from: fromEncoding to: toEncoding + Answer a pipe of encoders that converts aStringOrStream (which can + be a string or another stream) between the two supplied encodings + (which can be ASCII Strings or Symbols) + +on: aStringOrStream to: toEncoding + Answer a pipe of encoders that converts aStringOrStream (which can + be a string or another stream) from the default locale's default + charset to the given encoding. + + + +File: gst-libs.info, Node: I18N.Encoder, Next: I18N.Encoders.ComposeUCS4BE, Prev: I18N.EncodedStream, Up: I18N + +I18N.Encoder +============ + +Defined in namespace I18N +Superclass: Stream +Category: i18n-Character sets + This class is the superclass of streams that take an origin and + encode it to another character set. Most of the subclasses are + for internal use, the one you really want to use is probably + EncodedStream. + +* Menu: + +* I18N.Encoder class-instance creation:: (class) +* I18N.Encoder-stream operations:: (instance) + + +File: gst-libs.info, Node: I18N.Encoder class-instance creation, Next: I18N.Encoder-stream operations, Up: I18N.Encoder + +I18N.Encoder class: instance creation +------------------------------------- + +on: aStringOrStream from: fromEncoding to: toEncoding + Answer a new encoder that translates from fromEncoding to + toEncoding. The encodings are guaranteed to be those for which + the encoder was registered. + + + +File: gst-libs.info, Node: I18N.Encoder-stream operations, Prev: I18N.Encoder class-instance creation, Up: I18N.Encoder + +I18N.Encoder: stream operations +------------------------------- + +atEnd + Return whether the receiver can produce another character in the + receiver; by default, this is true if there is another character + in the origin. + +atEndOfInput + Return whether there is another character in the origin. This + method is for private use by encoders, calling it outside won't + corrupt the internal state of the encoder but the result probably + won't be meaningful (depending on the innards of the encoder). + +next + Return the next character in the receiver; by default, this is the + next character in the origin. + +nextInput + Return the next character in the origin. This method is for + private use by encoders, calling it outside may corrupt the + internal state of the encoder. + +species + Answer the kind of data that is answered, which is the same kind + of data that the origin answers + + + +File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4BE, Next: I18N.Encoders.ComposeUCS4LE, Prev: I18N.Encoder, Up: I18N + +I18N.Encoders.ComposeUCS4BE +=========================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoders.ToUCS4 +Category: i18n-Character sets + This class is used internally to provide UCS4 characters encoded as + 32-bit integers for a descendent of FromUCS4, when the starting + encoding is big-endian. + +* Menu: + +* I18N.Encoders.ComposeUCS4BE-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4BE-stream operation, Up: I18N.Encoders.ComposeUCS4BE + +I18N.Encoders.ComposeUCS4BE: stream operation +--------------------------------------------- + +next + Answer a 32-bit integer obtained by reading four 8-bit character + codes in big-endian order and putting them together + + + +File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4LE, Next: I18N.Encoders.FromUCS4, Prev: I18N.Encoders.ComposeUCS4BE, Up: I18N + +I18N.Encoders.ComposeUCS4LE +=========================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoders.ToUCS4 +Category: i18n-Character sets + This class is used internally to provide UCS4 characters encoded as + 32-bit integers for a descendent of FromUCS4, when the starting + encoding is little-endian. + +* Menu: + +* I18N.Encoders.ComposeUCS4LE-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4LE-stream operation, Up: I18N.Encoders.ComposeUCS4LE + +I18N.Encoders.ComposeUCS4LE: stream operation +--------------------------------------------- + +next + Answer a 32-bit integer obtained by reading four 8-bit character + codes in little-endian order and putting them together + + + +File: gst-libs.info, Node: I18N.Encoders.FromUCS4, Next: I18N.Encoders.FromUTF7, Prev: I18N.Encoders.ComposeUCS4LE, Up: I18N + +I18N.Encoders.FromUCS4 +====================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoder +Category: i18n-Character sets + This class is a superclass for classes that convert from UCS4 + characters (encoded as 32-bit Integers) to bytes in another + encoding (encoded as Characters). + +* Menu: + +* I18N.Encoders.FromUCS4-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.FromUCS4-stream operation, Up: I18N.Encoders.FromUCS4 + +I18N.Encoders.FromUCS4: stream operation +---------------------------------------- + +species + We answer a string of Characters encoded in our destination + encoding. + + + +File: gst-libs.info, Node: I18N.Encoders.FromUTF7, Next: I18N.Encoders.Iconv, Prev: I18N.Encoders.FromUCS4, Up: I18N + +I18N.Encoders.FromUTF7 +====================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoders.ToUCS4 +Category: i18n-Encodings + +* Menu: + +* I18N.Encoders.FromUTF7 class-initialization:: (class) +* I18N.Encoders.FromUTF7-converting:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.FromUTF7 class-initialization, Next: I18N.Encoders.FromUTF7-converting, Up: I18N.Encoders.FromUTF7 + +I18N.Encoders.FromUTF7 class: initialization +-------------------------------------------- + +initialize + Initialize the tables used by the UTF7-to-UCS4 converter + + + +File: gst-libs.info, Node: I18N.Encoders.FromUTF7-converting, Prev: I18N.Encoders.FromUTF7 class-initialization, Up: I18N.Encoders.FromUTF7 + +I18N.Encoders.FromUTF7: converting +---------------------------------- + +atEnd + Answer whether the receiver can produce another UCS4 32-bit + encoded integer + +flush + Flush any remaining state left in the encoder by the last character + (this is because UTF-7 encodes 6 bits at a time, so it takes three + characters before it can provide a single 16-bit character and up + to six characters before it can provide a full UCS-4 character). + +next + Answer the next character that the receiver can produce. + + + +File: gst-libs.info, Node: I18N.Encoders.Iconv, Next: I18N.Encoders.SplitUCS4BE, Prev: I18N.Encoders.FromUTF7, Up: I18N + +I18N.Encoders.Iconv +=================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoder +Category: i18n-Character sets + This class is used to delegate the actual character set conversion + to the C library's iconv function. Most conversions use iconv as + the only step in the conversions, sometimes the structure is + ToUCS4+SplitUCS4xx+Iconv or Iconv+ComposeUCS4xx+FromUCS4, rarely + Iconv is skipped altogether and only Smalltalk converters are used. + +* Menu: + +* I18N.Encoders.Iconv-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.Iconv-stream operation, Up: I18N.Encoders.Iconv + +I18N.Encoders.Iconv: stream operation +------------------------------------- + +atEnd + Answer whether the receiver can produce more characters + +next + Answer the next character that the receiver can produce. + +species + We answer a string of Characters encoded in our destination + encoding. + + + +File: gst-libs.info, Node: I18N.Encoders.SplitUCS4BE, Next: I18N.Encoders.SplitUCS4LE, Prev: I18N.Encoders.Iconv, Up: I18N + +I18N.Encoders.SplitUCS4BE +========================= + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoders.FromUCS4 +Category: i18n-Character sets + This class is used internally to split into four 8-bit characters + the 32-bit UCS4 integers coming from a descendent of ToUCS4, when + the destination encoding is big-endian. + +* Menu: + +* I18N.Encoders.SplitUCS4BE-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.SplitUCS4BE-stream operation, Up: I18N.Encoders.SplitUCS4BE + +I18N.Encoders.SplitUCS4BE: stream operation +------------------------------------------- + +atEnd + Answer whether the receiver can produce more characters + +flush + Flush any remaining bytes in the last 32-bit character read from + the input + +next + Answer an 8-bit Character obtained by converting each 32-bit + Integer found in the origin to the four bytes that make it up, and + ordering them from the most significant to the least significant. + + + +File: gst-libs.info, Node: I18N.Encoders.SplitUCS4LE, Next: I18N.Encoders.ToUCS4, Prev: I18N.Encoders.SplitUCS4BE, Up: I18N + +I18N.Encoders.SplitUCS4LE +========================= + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoders.FromUCS4 +Category: i18n-Character sets + This class is used internally to split into four 8-bit characters + the 32-bit UCS4 integers coming from a descendent of ToUCS4, when + the destination encoding is little-endian. + +* Menu: + +* I18N.Encoders.SplitUCS4LE-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.SplitUCS4LE-stream operation, Up: I18N.Encoders.SplitUCS4LE + +I18N.Encoders.SplitUCS4LE: stream operation +------------------------------------------- + +atEnd + Answer whether the receiver can produce more characters + +flush + Flush any remaining bytes in the last 32-bit character read from + the input + +next + Answer an 8-bit Character obtained by converting each 32-bit + Integer found in the origin to the four bytes that make it up, and + ordering them from the least significant to the most significant. + + + +File: gst-libs.info, Node: I18N.Encoders.ToUCS4, Next: I18N.Encoders.ToUTF7, Prev: I18N.Encoders.SplitUCS4LE, Up: I18N + +I18N.Encoders.ToUCS4 +==================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoder +Category: i18n-Character sets + This class is a superclass for classes that convert from bytes + (encoded as Characters) to UCS4 characters (encoded as 32-bit + Integers to simplify the code and to avoid endianness conversions). + +* Menu: + +* I18N.Encoders.ToUCS4-stream operation:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.ToUCS4-stream operation, Up: I18N.Encoders.ToUCS4 + +I18N.Encoders.ToUCS4: stream operation +-------------------------------------- + +species + We answer a WordArray of UCS4 characters encoded as a series of + 32-bit Integers. + + + +File: gst-libs.info, Node: I18N.Encoders.ToUTF7, Next: I18N.FileStreamSegment, Prev: I18N.Encoders.ToUCS4, Up: I18N + +I18N.Encoders.ToUTF7 +==================== + +Defined in namespace I18N.Encoders +Superclass: I18N.Encoders.FromUCS4 +Category: i18n-Encodings + This class implements a converter that transliterates UTF-7 + encoded characters to UCS4 values (encoded as 32-bit Integers). + +* Menu: + +* I18N.Encoders.ToUTF7 class-initialization:: (class) +* I18N.Encoders.ToUTF7-conversion:: (instance) + + +File: gst-libs.info, Node: I18N.Encoders.ToUTF7 class-initialization, Next: I18N.Encoders.ToUTF7-conversion, Up: I18N.Encoders.ToUTF7 + +I18N.Encoders.ToUTF7 class: initialization +------------------------------------------ + +initialize + Initialize the tables used by the UCS4-to-UTF7 converter + + + +File: gst-libs.info, Node: I18N.Encoders.ToUTF7-conversion, Prev: I18N.Encoders.ToUTF7 class-initialization, Up: I18N.Encoders.ToUTF7 + +I18N.Encoders.ToUTF7: conversion +-------------------------------- + +atEnd + Answer whether the receiver can produce more characters + +flush + Flush any remaining bytes in the last 32-bit character read from + the input + +next + Answer the next character that the receiver can produce. + + + +File: gst-libs.info, Node: I18N.FileStreamSegment, Next: I18N.IncompleteSequenceError, Prev: I18N.Encoders.ToUTF7, Up: I18N + +I18N.FileStreamSegment +====================== + +Defined in namespace I18N +Superclass: FileSegment +Category: i18n-Messages + Unlike FileSegment, this object assumes that the `file' instance + variable is a FileStream, not a file name. + +* Menu: + +* I18N.FileStreamSegment-basic:: (instance) + + +File: gst-libs.info, Node: I18N.FileStreamSegment-basic, Up: I18N.FileStreamSegment + +I18N.FileStreamSegment: basic +----------------------------- + +fileName + Answer the name of the file containing the segment + +withFileDo: aBlock + Evaluate aBlock, passing a FileStream corresponding to the file + + + +File: gst-libs.info, Node: I18N.IncompleteSequenceError, Next: I18N.InvalidCharsetError, Prev: I18N.FileStreamSegment, Up: I18N + +I18N.IncompleteSequenceError +============================ + +Defined in namespace I18N +Superclass: Error +Category: i18n-Character sets + I am raised if an invalid sequence is found while converting a + string from a charset to another. In particular, I am raised if + the input stream ends abruptly in the middle of a multi-byte + sequence. + +* Menu: + +* I18N.IncompleteSequenceError-accessing:: (instance) + + +File: gst-libs.info, Node: I18N.IncompleteSequenceError-accessing, Up: I18N.IncompleteSequenceError + +I18N.IncompleteSequenceError: accessing +--------------------------------------- + +description + Answer a textual description of the exception. + + + +File: gst-libs.info, Node: I18N.InvalidCharsetError, Next: I18N.InvalidSequenceError, Prev: I18N.IncompleteSequenceError, Up: I18N + +I18N.InvalidCharsetError +======================== + +Defined in namespace I18N +Superclass: SystemExceptions.InvalidArgument +Category: i18n-Character sets + I am raised if the user tries to encode from or to an unknown + encoding + +* Menu: + +* I18N.InvalidCharsetError-accessing:: (instance) + + +File: gst-libs.info, Node: I18N.InvalidCharsetError-accessing, Up: I18N.InvalidCharsetError + +I18N.InvalidCharsetError: accessing +----------------------------------- + +description + Answer a textual description of the exception. + + + +File: gst-libs.info, Node: I18N.InvalidSequenceError, Next: I18N.LcMessages, Prev: I18N.InvalidCharsetError, Up: I18N + +I18N.InvalidSequenceError +========================= + +Defined in namespace I18N +Superclass: Error +Category: i18n-Character sets + I am raised if an invalid sequence is found while converting a + string from a charset to another + +* Menu: + +* I18N.InvalidSequenceError-accessing:: (instance) + + +File: gst-libs.info, Node: I18N.InvalidSequenceError-accessing, Up: I18N.InvalidSequenceError + +I18N.InvalidSequenceError: accessing +------------------------------------ + +description + Answer a textual description of the exception. + + + +File: gst-libs.info, Node: I18N.LcMessages, Next: I18N.LcMessagesCatalog, Prev: I18N.InvalidSequenceError, Up: I18N + +I18N.LcMessages +=============== + +Defined in namespace I18N +Superclass: I18N.LocaleConventions +Category: i18n-Messages + This object is a factory of LcMessagesDomain objects + +* Menu: + +* I18N.LcMessages class-accessing:: (class) +* I18N.LcMessages-accessing:: (instance) +* I18N.LcMessages-opening MO files:: (instance) + + +File: gst-libs.info, Node: I18N.LcMessages class-accessing, Next: I18N.LcMessages-accessing, Up: I18N.LcMessages + +I18N.LcMessages class: accessing +-------------------------------- + +category + Answer the environment variable used to determine the default + locale + +selector + Answer the selector that accesses the receiver when sent to a + Locale object. + + + +File: gst-libs.info, Node: I18N.LcMessages-accessing, Next: I18N.LcMessages-opening MO files, Prev: I18N.LcMessages class-accessing, Up: I18N.LcMessages + +I18N.LcMessages: accessing +-------------------------- + +languageDirectory + Answer the directory holding MO files for the language + +languageDirectory: rootDirectory + Answer the directory holding MO files for the language, given the + root directory of the locale data. + +territoryDirectory + Answer the directory holding MO files for the language, specific to + the territory + +territoryDirectory: rootDirectory + Answer the directory holding MO files for the language, specific to + the territory, given the root directory of the locale data. + + + +File: gst-libs.info, Node: I18N.LcMessages-opening MO files, Prev: I18N.LcMessages-accessing, Up: I18N.LcMessages + +I18N.LcMessages: opening MO files +--------------------------------- + +? aString + Answer an object for the aString domain, querying both the + language catalog (e.g. pt) and the territory catalog (e.g. pt_BR + or pt_PT). + +domain: aString + Answer an object for the aString domain, querying both the + language catalog (e.g. pt) and the territory catalog (e.g. pt_BR + or pt_PT). + +domain: aString localeDirectory: rootDirectory + Answer an object for the aString domain, querying both the + language catalog (e.g. pt) and the territory catalog (e.g. pt_BR + or pt_PT). The localeDirectory is usually + '/share/locale'. + + + +File: gst-libs.info, Node: I18N.LcMessagesCatalog, Next: I18N.LcMessagesDomain, Prev: I18N.LcMessages, Up: I18N + +I18N.LcMessagesCatalog +====================== + +Defined in namespace I18N +Superclass: I18N.LcMessagesDomain +Category: i18n-Messages + This object is an abstract superclass of objects that retrieve + translated strings from a file. + +* Menu: + + +File: gst-libs.info, Node: I18N.LcMessagesDomain, Next: I18N.LcMessagesDummyDomain, Prev: I18N.LcMessagesCatalog, Up: I18N + +I18N.LcMessagesDomain +===================== + +Defined in namespace I18N +Superclass: I18N.LocaleData +Category: i18n-Messages + This object is an abstract superclass for message domains + (catalogs). It contains methods to create instances of its + subclasses, but they are commonly used only by LcMessages. + + Translations are accessed using either #at: or the shortcut binary + messages `?'. This way, common idioms to access translated + strings will be + + string := NLS? 'abc'. string := self? 'abc'. + + (in the first case NLS is a class variable, in the second the + receiver implements #? through delegation) which is only five or + six characters longer than the traditional + + string := 'abc'. + + (cfr. the _("abc") idiom used by GNU gettext) + +* Menu: + +* I18N.LcMessagesDomain class-opening MO files:: (class) +* I18N.LcMessagesDomain-handling the cache:: (instance) +* I18N.LcMessagesDomain-querying:: (instance) + + +File: gst-libs.info, Node: I18N.LcMessagesDomain class-opening MO files, Next: I18N.LcMessagesDomain-handling the cache, Up: I18N.LcMessagesDomain + +I18N.LcMessagesDomain class: opening MO files +--------------------------------------------- + +id: anArray on: aFileName + Create an instance of the receiver with a given locale identifier + from a path to the MO file + + + +File: gst-libs.info, Node: I18N.LcMessagesDomain-handling the cache, Next: I18N.LcMessagesDomain-querying, Prev: I18N.LcMessagesDomain class-opening MO files, Up: I18N.LcMessagesDomain + +I18N.LcMessagesDomain: handling the cache +----------------------------------------- + +flush + Flush the receiver's cache of translations + +shouldCache + Answer whether translations should be cached. Never override this + method to always answer false, because that would cause bugs when + transliteration is being used. + + + +File: gst-libs.info, Node: I18N.LcMessagesDomain-querying, Prev: I18N.LcMessagesDomain-handling the cache, Up: I18N.LcMessagesDomain + +I18N.LcMessagesDomain: querying +------------------------------- + +? aString + Answer the translation of `aString', or answer aString itself if + none is available. + +at: aString + Answer the translation of `aString', or answer aString itself if + none is available. + +at: singularString plural: pluralString with: n + Answer either the translation of pluralString with `%1' replaced by + n if n ~= 1, or the translation of singularString if n = 1. + +at: aString put: anotherString + This method should not be called for instances of this class. + +translatorInformation + Answer information on the translation, or nil if there is none. + This information is stored as the `translation' of an empty string. + +translatorInformationAt: key + Answer information on the translation associated to a given key + +translatorInformationAt: key at: subkey + Answer information on the translation associated to a given key + and to a subkey of the key + + + +File: gst-libs.info, Node: I18N.LcMessagesDummyDomain, Next: I18N.LcMessagesMoFileVersion0, Prev: I18N.LcMessagesDomain, Up: I18N + +I18N.LcMessagesDummyDomain +========================== + +Defined in namespace I18N +Superclass: I18N.LcMessagesDomain +Category: i18n-Messages + This object does no attempt to translate strings, returning + instead the same string passed as an argument to #?. + +* Menu: + + +File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0, Next: I18N.LcMessagesTerritoryDomain, Prev: I18N.LcMessagesDummyDomain, Up: I18N + +I18N.LcMessagesMoFileVersion0 +============================= + +Defined in namespace I18N +Superclass: I18N.LcMessagesCatalog +Category: i18n-Messages + This object is an concrete class that retrieves translated strings + from a GNU gettext MO file. The class method + #fileFormatDescription contains an explanation of the file format. + +* Menu: + +* I18N.LcMessagesMoFileVersion0 class-documentation:: (class) +* I18N.LcMessagesMoFileVersion0 class-plurals:: (class) +* I18N.LcMessagesMoFileVersion0-flushing the cache:: (instance) + diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-10 smalltalk-2.1.7/doc/gst-libs.info-10 --- smalltalk-2.1.6/doc/gst-libs.info-10 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-10 1970-01-01 01:00:00.000000000 +0100 @@ -1,124 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: Cross-reference, Prev: Method index, Up: Top - -Selector cross-reference -************************ - -* Menu: - -* [131: TCP.IPAddress class-instance creation. -* accept: TCP.ServerSocket class-instance creation. -* addChild_: BLOX.Blox-customization. -* addEventSet_: BLOX.BEventSet class-initializing. -* addMenuItemFor_notifying_: BLOX.BMenu-callback registration. -* at_ <1>: BLOX.BList-accessing. -* at_: BLOX.BDropDown-list box accessing. -* backgroundColor_: BLOX.Blox-creating children. -* basicAddChild_ <1>: BLOX.BPopupWindow-geometry management. -* basicAddChild_ <2>: BLOX.Blox-customization. -* basicAddChild_: BLOX.BCanvas-geometry management. -* bevel: BLOX.BPolyline-accessing. -* bottomCenter: BLOX.BLabel-accessing. -* bottomLeft: BLOX.BLabel-accessing. -* bottomRight: BLOX.BLabel-accessing. -* butt <1>: BLOX.BPolyline-accessing. -* butt: BLOX.BLine-accessing. -* center <1>: BLOX.BLabel-accessing. -* center: BLOX.BEmbeddedText-accessing. -* char: BLOX.BText-accessing. -* copy: BLOX.BCanvasObject-accessing. -* copyObject: BLOX.BCanvasObject-accessing. -* create <1>: BLOX.BPolyline-accessing. -* create <2>: BLOX.BExtended-customization. -* create: BLOX.BBoundingBox-accessing. -* createLocalAddress: TCP.SocketAddress class-initialization. -* destroy: BLOX.BWidget class-popups. -* dispatch_: BLOX.BDialog-accessing. -* dispatchEvents: BLOX.Blox class-event dispatching. -* eventTest: BLOX.BEventTarget-intercepting events. -* font <1>: BLOX.Blox-widget protocol. -* font: BLOX.BDropDown-flexibility. -* fromString_ <1>: TCP.SocketAddress class-host name lookup. -* fromString_: TCP.IPAddress-accessing. -* height: BLOX.BWidget-geometry management. -* height_ <1>: BLOX.BWidget-geometry management. -* height_: BLOX.Blox-creating children. -* heightOffset_: BLOX.BWidget-geometry management. -* initialize_: BLOX.BWidget-customization. -* inset_: BLOX.BWidget-geometry management. -* left: BLOX.BEmbeddedText-accessing. -* leftCenter: BLOX.BLabel-accessing. -* loopbackHost: TCP.IPAddress class-instance creation. -* macintosh: BLOX.Blox class-utility. -* make_: BLOX.Blox-creating children. -* map: BLOX.BWindow-widget protocol. -* miter: BLOX.BPolyline-accessing. -* modalMap: BLOX.BDialog-widget protocol. -* new_: BLOX.BWidget-customization. -* newPrimitive: BLOX.BExtended-customization. -* next: I18N.EncodedStream class-initializing. -* none: BLOX.BText-accessing. -* object_address_port_: TCP.Datagram-accessing. -* object_objectDumper_address_port_ <1>: TCP.Datagram-accessing. -* object_objectDumper_address_port_: TCP.Datagram class-instance creation. -* onKeyEvent_send_to_: BLOX.BEventTarget-intercepting events. -* print_time_format_on_: I18N.LcTime-printing. -* projecting <1>: BLOX.BPolyline-accessing. -* projecting: BLOX.BLine-accessing. -* redraw <1>: BLOX.BPolyline-accessing. -* redraw: BLOX.BBoundingBox-accessing. -* registerImage_: BLOX.BText-images. -* right: BLOX.BEmbeddedText-accessing. -* rightCenter: BLOX.BLabel-accessing. -* round <1>: BLOX.BPolyline-accessing. -* round: BLOX.BLine-accessing. -* state: BLOX.Blox-widget protocol. -* state_: BLOX.Blox-widget protocol. -* tabStop_: BLOX.BWidget-widget protocol. -* terminateMainLoop: BLOX.Blox class-event dispatching. -* topCenter: BLOX.BLabel-accessing. -* topLeft: BLOX.BLabel-accessing. -* toplevel: BLOX.Blox-widget protocol. -* topRight: BLOX.BLabel-accessing. -* unix: BLOX.Blox class-utility. -* unmap: BLOX.BWindow-widget protocol. -* width: BLOX.BWidget-geometry management. -* width_ <1>: BLOX.BWidget-geometry management. -* width_: BLOX.Blox-creating children. -* widthOffset_: BLOX.BWidget-geometry management. -* windows: BLOX.Blox class-utility. -* word: BLOX.BText-accessing. -* x: BLOX.BWidget-geometry management. -* x_: BLOX.BWidget-geometry management. -* xOffset_: BLOX.BWidget-geometry management. -* y: BLOX.BWidget-geometry management. -* y_: BLOX.BWidget-geometry management. -* yOffset_: BLOX.BWidget-geometry management. -* {Blox: BLOX.Blox-creating children. - - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-2 smalltalk-2.1.7/doc/gst-libs.info-2 --- smalltalk-2.1.6/doc/gst-libs.info-2 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-2 2003-12-17 14:58:54.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. +This is gst-libs.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-libs-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * Libraries: (gst-libs). The GNU Smalltalk class libraries. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 13 December 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, @@ -24,1278 +24,2679 @@ There are no Cover Texts and no Invariant Sections; this text, along with its equivalent in the printed manual, constitutes the Title Page.  -File: gst-libs.info, Node: BLOX.BDropDownEdit-accessing, Next: BLOX.BDropDownEdit-accessing-overrides, Up: BLOX.BDropDownEdit +File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0 class-documentation, Next: I18N.LcMessagesMoFileVersion0 class-plurals, Up: I18N.LcMessagesMoFileVersion0 -BLOX.BDropDownEdit: accessing ------------------------------ +I18N.LcMessagesMoFileVersion0 class: documentation +-------------------------------------------------- -backgroundColor: aColor - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -font: aString - Set the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor: aColor - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -highlightBackground: aColor - Set the value of the highlightBackground option for the widget. - Specifies the background color to use when displaying selected - items in the list widget and the selection in the text widget. - -highlightForeground: aColor - Set the value of the highlightBackground option for the widget. - Specifies the background color to use when displaying selected - items in the list widget and the selection in the text widget. +fileFormatDescription + The Format of GNU MO Files (excerpt of the GNU gettext manual) + ============================================================== The + format of the generated MO files is best described by a picture, + which appears below. The first two words serve the identification + of the file. The magic number will always signal GNU MO files. + The number is stored in the byte order of the generating machine, + so the magic number really is two numbers: `0x950412de' and + `0xde120495'. The second word describes the current revision + of the file format. For now the revision is 0. This might change + in future versions, and ensures that the readers of MO files can + distinguish new formats from old ones, so that both can be handled + correctly. The version is kept separate from the magic number, + instead of using different magic numbers for different formats, + mainly because `/etc/magic' is not updated often. It might be + better to have magic separated from internal format version + identification. Follow a number of pointers to later tables in + the file, allowing for the extension of the prefix part of MO + files without having to recompile programs reading them. This + might become useful for later inserting a few flag bits, + indication about the charset used, new tables, or other things. + Then, at offset O and offset T in the picture, two tables of string + descriptors can be found. In both tables, each string descriptor + uses two 32 bits integers, one for the string length, another for + the offset of the string in the MO file, counting in bytes from + the start of the file. The first table contains descriptors for + the original strings, and is sorted so the original strings are in + increasing lexicographical order. The second table contains + descriptors for the translated strings, and is parallel to the + first table: to find the corresponding translation one has to + access the array slot in the second array with the same index. + Having the original strings sorted enables the use of simple binary + search, for when the MO file does not contain an hashing table, or + for when it is not practical to use the hashing table provided in + the MO file. This also has another advantage, as the empty string + in a PO file GNU `gettext' is usually *translated* into some + system information attached to that particular MO file, and the + empty string necessarily becomes the first in both the original + and translated tables, making the system information very easy to + find. The size S of the hash table can be zero. In this case, + the hash table itself is not contained in the MO file. Some + people might prefer this because a precomputed hashing table takes + disk space, and does not win *that* much speed. The hash table + contains indices to the sorted array of strings in the MO file. + Conflict resolution is done by double hashing. The precise + hashing algorithm used is fairly dependent of GNU `gettext' code, + and is not documented here. As for the strings themselves, they + follow the hash file, and each is terminated with a , and + this is not counted in the length which appears in the + string descriptor. The `msgfmt' program has an option + selecting the alignment for MO file strings. With this option, + each string is separately aligned so it starts at an offset which + is a multiple of the alignment value. On some RISC machines, a + correct alignment will speed things up. Nothing prevents a MO + file from having embedded s in strings. However, the program + interface currently used already presumes that strings are + terminated, so embedded s are somewhat useless. But MO file + format is general enough so other interfaces would be later + possible, if for example, we ever want to implement wide characters + right in MO files, where bytes may accidently appear. This + particular issue has been strongly debated in the GNU `gettext' + development forum, and it is expectable that MO file format will + evolve or change over time. It is even possible that many formats + may later be supported concurrently. But surely, we have to start + somewhere, and the MO file format described here is a good start. + Nothing is cast in concrete, and the format may later evolve + fairly easily, so we should feel comfortable with the current + approach. byte +-----------------------------------------+ 0 | + magic number = 0x950412de | | + | 4 | file format revision = 0 + | | | 8 | + number of strings | == N | + | 12 | offset of table with original + strings | == O | | 16 | + offset of table with translation strings | == T | + | 20 | size of hashing table + | == S | | 24 | offset + of hashing table | == H | + | . . . + (possibly more entries later) . . + . | + | O | length & offset 0th string ---------------. O + 8 + | length & offset 1st string -----------------. ... + ... | | O + ((N-1)*8)| length & offset + (N-1)th string | | | | + | | | T | length & offset 0th translation --------------. + T + 8 | length & offset 1st translation ----------------. ... + ... | | | | T + ((N-1)*8)| + length & offset (N-1)th translation | | | | | | + | | | | | H | start hash + table | | | | | ... + ... | | | | H + S * 4 | end hash table + | | | | | | + | | | | | | NUL terminated 0th string <---------------' | | | + | | | | | | NUL terminated + 1st string <-----------------' | | | + | | | ... ... + | | | | | | | + NUL terminated 0th translation <--------------' | | + | | | NUL terminated 1st translation + <----------------' | | ... + ... | + | +-----------------------------------------+ + Locating Message Catalog Files ----------------------------- + Because many different languages for many different packages have + to be stored we need some way to add these information to file + message catalog files. The way usually used in Unix + environments is have this encoding in the file name. This is also + done here. The directory name given in `bindtextdomain's second + argument (or the default directory), followed by the value and + name of the locale and the domain name are concatenated: + DIR_NAME/LOCALE/LC_CATEGORY/DOMAIN_NAME.mo The default value for + DIR_NAME is system specific. For the GNU library, and for + packages adhering to its conventions, it's: /usr/local/share/locale + LOCALE is the value of the locale whose name is this `LC_CATEGORY'. + For `gettext' and `dgettext' this locale is always `LC_MESSAGES'.  -File: gst-libs.info, Node: BLOX.BDropDownEdit-accessing-overrides, Next: BLOX.BDropDownEdit-text accessing, Prev: BLOX.BDropDownEdit-accessing, Up: BLOX.BDropDownEdit +File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0 class-plurals, Next: I18N.LcMessagesMoFileVersion0-flushing the cache, Prev: I18N.LcMessagesMoFileVersion0 class-documentation, Up: I18N.LcMessagesMoFileVersion0 -BLOX.BDropDownEdit: accessing-overrides ---------------------------------------- +I18N.LcMessagesMoFileVersion0 class: plurals +-------------------------------------------- + +initialize + Initialize a table with the expressions computing the plurals for + the most common languages -text - Answer the text shown in the widget +pluralExpressionFor: locale ifAbsent: aBlock + Answer a RunTimeExpression yielding the plural form for the given + language and territory, if one is known, else evaluate aBlock and + answer it.  -File: gst-libs.info, Node: BLOX.BDropDownEdit-text accessing, Prev: BLOX.BDropDownEdit-accessing-overrides, Up: BLOX.BDropDownEdit +File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0-flushing the cache, Prev: I18N.LcMessagesMoFileVersion0 class-plurals, Up: I18N.LcMessagesMoFileVersion0 -BLOX.BDropDownEdit: text accessing ----------------------------------- +I18N.LcMessagesMoFileVersion0: flushing the cache +------------------------------------------------- -insertAtEnd: aString - Clear the selection and append aString at the end of the text - widget. +flush + Flush the cache and reread the catalog's metadata. -replaceSelection: aString - Insert aString in the text widget at the current insertion point, - replacing the currently selected text (if any), and leaving the - text selected. +shouldCache + Answer true, we always cache translations if they are read from a + file -selectAll - Select the whole contents of the text widget -selectFrom: first to: last - Sets the selection of the text widget to include the characters - starting with the one indexed by first (the very first character in - the widget having index 1) and ending with the one just before - last. If last refers to the same character as first or an earlier - one, then the text widget's selection is cleared. + +File: gst-libs.info, Node: I18N.LcMessagesTerritoryDomain, Next: I18N.LcMonetary, Prev: I18N.LcMessagesMoFileVersion0, Up: I18N -selection - Answer an empty string if the text widget has no selection, else - answer the currently selected text +I18N.LcMessagesTerritoryDomain +============================== -selectionRange - Answer nil if the text widget has no selection, else answer an - Interval object whose first item is the index of the first - character in the selection, and whose last item is the index of - the character just after the last one in the selection. +Defined in namespace I18N +Superclass: I18N.LcMessagesDomain +Category: i18n-Messages + This object asks for strings to a primary domain (e.g. it_IT) and + a secondary one (e.g. it). -text: aString - Set the contents of the text widget and select them. +* Menu: +* I18N.LcMessagesTerritoryDomain class-instance creation:: (class)  -File: gst-libs.info, Node: BLOX.BDropDownList, Next: BLOX.BEdit, Prev: BLOX.BDropDownEdit, Up: BLOX +File: gst-libs.info, Node: I18N.LcMessagesTerritoryDomain class-instance creation, Up: I18N.LcMessagesTerritoryDomain -BLOX.BDropDownList -================== +I18N.LcMessagesTerritoryDomain class: instance creation +------------------------------------------------------- + +primary: domain1 secondary: domain2 + Answer an instance of the receiver that queries, in sequence, + domain1 and domain2 + + + +File: gst-libs.info, Node: I18N.LcMonetary, Next: I18N.LcMonetaryISO, Prev: I18N.LcMessagesTerritoryDomain, Up: I18N + +I18N.LcMonetary +=============== -Defined in namespace BLOX -Superclass: BLOX.BDropDown -Category: Graphics-Examples - This class resembles a list box widget, but its actual list shows - up only when you click the arrow button beside the currently - selected item. +Defined in namespace I18N +Superclass: I18N.LcNumeric +Category: i18n-Printing + Sending either #?, #printString: or #print:on: converts a Number to + a String according to the rules that are mandated by ISO for + printing currency amounts in the current locale. * Menu: -* BLOX.BDropDownList-accessing:: (instance) -* BLOX.BDropDownList-callbacks:: (instance) -* BLOX.BDropDownList-list box accessing:: (instance) +* I18N.LcMonetary class-accessing:: (class) +* I18N.LcMonetary-printing:: (instance)  -File: gst-libs.info, Node: BLOX.BDropDownList-accessing, Next: BLOX.BDropDownList-callbacks, Up: BLOX.BDropDownList +File: gst-libs.info, Node: I18N.LcMonetary class-accessing, Next: I18N.LcMonetary-printing, Up: I18N.LcMonetary -BLOX.BDropDownList: accessing ------------------------------ +I18N.LcMonetary class: accessing +-------------------------------- + +category + Answer the environment variable used to determine the default + locale -backgroundColor: aColor - Set the value of the backgroundColor for the widget, which in this - class is set for the list widget and, when the focus is outside - the control, for the text widget as well. Specifies the normal - background color to use when displaying the widget. - -font: aString - Set the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor: aColor - Set the value of the foregroundColor for the widget, which in this - class is set for the list widget and, when the focus is outside - the control, for the text widget as well. Specifies the normal - foreground color to use when displaying the widget. - -highlightBackground: aColor - Answer the value of the highlightBackground option for the widget. - Specifies the background color to use when displaying selected - items in the list widget and, when the focus is inside the - control, for the text widget as well. - -highlightForeground: aColor - Answer the value of the highlightForeground option for the widget. - Specifies the foreground color to use when displaying selected - items in the list widget and, when the focus is inside the - control, for the text widget as well. - -text - Answer the text that the user has picked from the widget and/or - typed in the control (the exact way the text is entered will be - established by subclasses, since this is an abstract method). +selector + Answer the selector that accesses the receiver when sent to a + Locale object.  -File: gst-libs.info, Node: BLOX.BDropDownList-callbacks, Next: BLOX.BDropDownList-list box accessing, Prev: BLOX.BDropDownList-accessing, Up: BLOX.BDropDownList +File: gst-libs.info, Node: I18N.LcMonetary-printing, Prev: I18N.LcMonetary class-accessing, Up: I18N.LcMonetary -BLOX.BDropDownList: callbacks ------------------------------ +I18N.LcMonetary: printing +------------------------- -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a selector with at most two arguemtnts) when the active item in - the receiver changegs. If the method accepts two arguments, the - receiver is passed as the first parameter. If the method accepts - one or two arguments, the selected index is passed as the last - parameter. +print: aNumber on: aStream + Print aNumber on aStream according to the receiver's formatting + conventions. Always print a currency sign and don't force to + print negative numbers by putting parentheses around them. -invokeCallback - Generate a synthetic callback. +print: aNumber on: aStream currency: currency parentheses: p + Print aNumber on aStream according to the receiver's formatting + conventions. If currency is true, print a currency sign, and if p + is true force to print negative numbers by putting parentheses + around them. If p is true, for positive numbers spaces are put + around the number to keep them aligned.  -File: gst-libs.info, Node: BLOX.BDropDownList-list box accessing, Prev: BLOX.BDropDownList-callbacks, Up: BLOX.BDropDownList +File: gst-libs.info, Node: I18N.LcMonetaryISO, Next: I18N.LcNumeric, Prev: I18N.LcMonetary, Up: I18N -BLOX.BDropDownList: list box accessing --------------------------------------- +I18N.LcMonetaryISO +================== + +Defined in namespace I18N +Superclass: I18N.LcMonetary +Category: i18n-Printing -index - Answer the value of the index option for the widget. Since it is - not possible to modify an item once it has been picked from the - list widget, this is always defined for BDropDownList widgets. +* Menu: +* I18N.LcMonetaryISO class-accessing:: (class)  -File: gst-libs.info, Node: BLOX.BEdit, Next: BLOX.BEmbeddedImage, Prev: BLOX.BDropDownList, Up: BLOX +File: gst-libs.info, Node: I18N.LcMonetaryISO class-accessing, Up: I18N.LcMonetaryISO -BLOX.BEdit -========== +I18N.LcMonetaryISO class: accessing +----------------------------------- + +selector + Answer the selector that accesses the receiver when sent to a + Locale object. -Defined in namespace BLOX -Superclass: BLOX.BPrimitive -Category: Graphics-Windows - I am a widget showing one line of modifiable text. + + +File: gst-libs.info, Node: I18N.LcNumeric, Next: I18N.LcPrintFormats, Prev: I18N.LcMonetaryISO, Up: I18N + +I18N.LcNumeric +============== + +Defined in namespace I18N +Superclass: I18N.LcPrintFormats +Category: i18n-Printing + Sending either #?, #printString: or #print:on: converts a Number to + a String according to the rules that are used in the given locale. * Menu: -* BLOX.BEdit class-instance creation:: (class) -* BLOX.BEdit-accessing:: (instance) -* BLOX.BEdit-widget protocol:: (instance) +* I18N.LcNumeric class-accessing:: (class) +* I18N.LcNumeric-printing:: (instance)  -File: gst-libs.info, Node: BLOX.BEdit class-instance creation, Next: BLOX.BEdit-accessing, Up: BLOX.BEdit +File: gst-libs.info, Node: I18N.LcNumeric class-accessing, Next: I18N.LcNumeric-printing, Up: I18N.LcNumeric -BLOX.BEdit class: instance creation ------------------------------------ +I18N.LcNumeric class: accessing +------------------------------- + +category + Answer the environment variable used to determine the default + locale -new: parent contents: aString - Answer a new BEdit widget laid inside the given parent widget, - with a default content of aString +selector + Answer the selector that accesses the receiver when sent to a + Locale object.  -File: gst-libs.info, Node: BLOX.BEdit-accessing, Next: BLOX.BEdit-widget protocol, Prev: BLOX.BEdit class-instance creation, Up: BLOX.BEdit +File: gst-libs.info, Node: I18N.LcNumeric-printing, Prev: I18N.LcNumeric class-accessing, Up: I18N.LcNumeric -BLOX.BEdit: accessing ---------------------- +I18N.LcNumeric: printing +------------------------ -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -callback - Answer a DirectedMessage that is sent when the receiver is - modified, or nil if none has been set up. - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a zero- or one-argument selector) when the receiver is modified. - If the method accepts an argument, the receiver is passed. - -contents - Return the contents of the widget - -contents: newText - Set the contents of the widget - -font - Answer the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -font: value - Set the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor - Answer the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -foregroundColor: value - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -selectBackground - Answer the value of the selectBackground option for the widget. - Specifies the background color to use when displaying selected - parts of the widget. - -selectBackground: value - Set the value of the selectBackground option for the widget. - Specifies the background color to use when displaying selected - parts of the widget. - -selectForeground - Answer the value of the selectForeground option for the widget. - Specifies the foreground color to use when displaying selected - parts of the widget. - -selectForeground: value - Set the value of the selectForeground option for the widget. - Specifies the foreground color to use when displaying selected - parts of the widget. - - - -File: gst-libs.info, Node: BLOX.BEdit-widget protocol, Prev: BLOX.BEdit-accessing, Up: BLOX.BEdit - -BLOX.BEdit: widget protocol ---------------------------- - -destroyed - Private - The receiver has been destroyed, clear the corresponding - Tcl variable to avoid memory leaks. - -hasSelection - Answer whether there is selected text in the widget - -insertAtEnd: aString - Clear the selection and append aString at the end of the widget. - -insertText: aString - Insert aString in the widget at the current insertion point, - replacing the currently selected text (if any). - -invokeCallback - Generate a synthetic callback. - -nextPut: aCharacter - Clear the selection and append aCharacter at the end of the widget. - -nextPutAll: aString - Clear the selection and append aString at the end of the widget. - -nl - Clear the selection and append a linefeed character at the end of - the widget. - -replaceSelection: aString - Insert aString in the widget at the current insertion point, - replacing the currently selected text (if any), and leaving the - text selected. - -selectAll - Select the whole contents of the widget. - -selectFrom: first to: last - Sets the selection to include the characters starting with the one - indexed by first (the very first character in the widget having - index 1) and ending with the one just before last. If last refers - to the same character as first or an earlier one, then the - widget's selection is cleared. - -selection - Answer an empty string if the widget has no selection, else answer - the currently selected text - -selectionRange - Answer nil if the widget has no selection, else answer an Interval - object whose first item is the index of the first character in the - selection, and whose last item is the index of the character just - after the last one in the selection. +basicPrint: aNumber on: aStream + Print aNumber on aStream according to the receiver's formatting + conventions, without currency signs or anything like that. This + method must not be overridden. -space - Clear the selection and append a space at the end of the widget. +print: aNumber on: aStream + Print aNumber on aStream according to the receiver's formatting + conventions.  -File: gst-libs.info, Node: BLOX.BEmbeddedImage, Next: BLOX.BEmbeddedText, Prev: BLOX.BEdit, Up: BLOX +File: gst-libs.info, Node: I18N.LcPrintFormats, Next: I18N.LcTime, Prev: I18N.LcNumeric, Up: I18N -BLOX.BEmbeddedImage +I18N.LcPrintFormats =================== -Defined in namespace BLOX -Superclass: BLOX.BBoundingBox -Category: Graphics-Windows - I can draw a colorful image inside the canvas. +Defined in namespace I18N +Superclass: I18N.LocaleConventions +Category: i18n-Messages + LcPrintFormats subclasses have instances that understand #?, + #printString: and #print:on: (the last of which is abstract) which + provide a means to convert miscellaneous objects to Strings + according to the rules that are used in the given locale. * Menu: -* BLOX.BEmbeddedImage-accessing:: (instance) +* I18N.LcPrintFormats-printing:: (instance)  -File: gst-libs.info, Node: BLOX.BEmbeddedImage-accessing, Up: BLOX.BEmbeddedImage +File: gst-libs.info, Node: I18N.LcPrintFormats-printing, Up: I18N.LcPrintFormats -BLOX.BEmbeddedImage: accessing ------------------------------- - -copyInto: aBlox - Answer a new BCanvasObject identical to this but displayed into - another canvas, newCanvas. The new instance is not created at the - time it is returned. +I18N.LcPrintFormats: printing +----------------------------- -data - Answer the data of the image. The result will be a String - containing image data either as Base-64 encoded GIF data, as XPM - data, or as PPM data. +? anObject + Answer how anObject must be printed according to the receiver's + formatting conventions. -data: aString - Set the data of the image. aString may contain the data either as - Base-64 encoded GIF data, as XPM data, or as PPM data. No changes - are visible until you toggle a redraw using the appropriate method. +print: anObject on: aStream + Print anObject on aStream according to the receiver's formatting + conventions. -redraw - Force the object to be displayed in the parent canvas, creating it - if it has not been inserted for real in the parent, and refresh - its position and image data if it has changed. +printString: anObject + Answer how anObject must be printed according to the receiver's + formatting conventions.  -File: gst-libs.info, Node: BLOX.BEmbeddedText, Next: BLOX.BEventSet, Prev: BLOX.BEmbeddedImage, Up: BLOX +File: gst-libs.info, Node: I18N.LcTime, Next: I18N.Locale, Prev: I18N.LcPrintFormats, Up: I18N -BLOX.BEmbeddedText -================== +I18N.LcTime +=========== -Defined in namespace BLOX -Superclass: BLOX.BBoundingBox -Category: Graphics-Windows - I can draw text in all sorts of colors, sizes and fonts. +Defined in namespace I18N +Superclass: I18N.LcPrintFormats +Category: i18n-Printing + Sending either #?, #printString: or #print:on: converts a Date or + Time to a String according to the rules that are used in the given + locale. * Menu: -* BLOX.BEmbeddedText-accessing:: (instance) +* I18N.LcTime class-accessing:: (class) +* I18N.LcTime-printing:: (instance) +* I18N.LcTime-tests:: (instance)  -File: gst-libs.info, Node: BLOX.BEmbeddedText-accessing, Up: BLOX.BEmbeddedText +File: gst-libs.info, Node: I18N.LcTime class-accessing, Next: I18N.LcTime-printing, Up: I18N.LcTime -BLOX.BEmbeddedText: accessing ------------------------------ +I18N.LcTime class: accessing +---------------------------- -font - Answer the value of the font option for the canvas object. - Specifies the font to use when drawing text inside the widget. The - font can be given as either an X font name or a Blox font - description string. X font names are given as many fields, each - led by a minus, and each of which can be replaced by an * to - indicate a default value is ok: foundry, family, weight, slant, - setwidth, addstyle, pixel size, point size (the same as pixel size - for historical reasons), horizontal resolution, vertical - resolution, spacing, width, charset and character encoding. Blox - font description strings have three fields, which must be - separated by a space and of which only the first is mandatory: the - font family, the font size in points (or in pixels if a negative - value is supplied), and a number of styles separated by a space - (valid styles are normal, bold, italic, underline and overstrike). - Examples of valid fonts are "Helvetica 10 Bold", "Times -14", - "Futura Bold Underline". You must enclose the font family in - braces if it is made of two or more words. - -font: font - Set the value of the font option for the canvas object. Specifies - the font to use when drawing text inside the widget. The font can - be given as either an X font name or a Blox font description - string. X font names are given as many fields, each led by a - minus, and each of which can be replaced by an * to indicate a - default value is ok: foundry, family, weight, slant, setwidth, - addstyle, pixel size, point size (the same as pixel size for - historical reasons), horizontal resolution, vertical resolution, - spacing, width, charset and character encoding. Blox font - description strings have three fields, which must be separated by - a space and of which only the first is mandatory: the font family, - the font size in points (or in pixels if a negative value is - supplied), and a number of styles separated by a space (valid - styles are normal, bold, italic, underline and overstrike). - Examples of valid fonts are "Helvetica 10 Bold", "Times -14", - "Futura Bold Underline". You must enclose the font family in - braces if it is made of two or more words. - -justify - Answer how to justify the text within its bounding region. - -justify: aSymbol - Sets how to justify the text within its bounding region. Can be - #left, #right or #center (the default). - -redraw - Force the object to be displayed in the parent canvas, creating it - if it has not been inserted for real in the parent, and refresh - its position. - -text - Answer the text that is printed by the object +category + Answer the environment variable used to determine the default + locale -text: aString - Set the text that is printed by the object +selector + Answer the selector that accesses the receiver when sent to a + Locale object.  -File: gst-libs.info, Node: BLOX.BEventSet, Next: BLOX.BEventTarget, Prev: BLOX.BEmbeddedText, Up: BLOX +File: gst-libs.info, Node: I18N.LcTime-printing, Next: I18N.LcTime-tests, Prev: I18N.LcTime class-accessing, Up: I18N.LcTime -BLOX.BEventSet -============== +I18N.LcTime: printing +--------------------- + +print: aDateOrTimeOrArray on: aStream + Print aDateOrTimeOrArray on aStream according to the receiver's + formatting conventions. It can be a Date, Time, DateTime, or an + array made of a Date and a Time + +print: aDateOrTimeOrArray on: aStream ifFull: fullFmt ifDate: dateFmt ifTime: timeFmt + Print aDateOrTimeOrArray on aStream according to the receiver's + formatting conventions. It can be a Date, Time, DateTime, or an + array made of a Date and a Time: Date is printed with dateFmt and + Time with timeFmt, while in the other cases fullFmt is used. For + information on the formatting codes, see #print:time:format:on:. + +print: aDate time: aTime format: aString on: aStream + Print the specified date and time on aStream according to the + receiver's formatting conventions, using the given format. The + valid abbreviations are the same used by the C function strftime: + abbreviated weekday (%a) weekday + (%A) abbreviated month (%b) month + (%B) date & time (%c) century + (%C) day of the month (%d) date (US) + (%D) day of the month (%e) year for the ISO + week (%g) year for the ISO week (%G) + abbreviated month (%h) hours + (%H) hours (AM/PM) (%I) day of the year + (%j) hours (%k) hours + (AM/PM) (%l) month + (%m) minutes (%M) AM/PM + (%p) lowercase AM/PM (%P) AM/PM + time (%r) time (US) (%R) time_t + (%s) seconds + (%S) time (US) (%T) day of the week + (%u) week number starting at Sun (%U) week number starting + at Thu (%V) day of the week, Sunday=0 (%w) week number + starting at Mon (%W) date (%x) time + (%X) year (2-digit) (%y) + year (4-digit) (%Y). + + + +File: gst-libs.info, Node: I18N.LcTime-tests, Prev: I18N.LcTime-printing, Up: I18N.LcTime + +I18N.LcTime: tests +------------------ + +allFormatsExample + Answer a long string that includes all the possible formats + + + +File: gst-libs.info, Node: I18N.Locale, Next: I18N.LocaleConventions, Prev: I18N.LcTime, Up: I18N + +I18N.Locale +=========== -Defined in namespace BLOX -Superclass: BLOX.BEventTarget -Category: Graphics-Windows - I combine event handlers and let you apply them to many objects. - Basically, you derive a class from me, override the #initialize: - method to establish the handlers, then use the #addEventSet: method - understood by every Blox class to add the event handlers specified - by the receiver to the object. +Defined in namespace I18N +Superclass: I18N.LocaleData +Category: i18n-Messages + This object is an abstract superclass of objects related to the + territory and language in which the program is being used. + Instances of it are asked about information on the current locale, + and provide a means to be asked for things with a common idiom, + the #? binary message. * Menu: -* BLOX.BEventSet class-initializing:: (class) -* BLOX.BEventSet-accessing:: (instance) -* BLOX.BEventSet-initializing:: (instance) +* I18N.Locale class-initialization:: (class) +* I18N.Locale class-instance creation:: (class) +* I18N.Locale-subobjects:: (instance)  -File: gst-libs.info, Node: BLOX.BEventSet class-initializing, Next: BLOX.BEventSet-accessing, Up: BLOX.BEventSet +File: gst-libs.info, Node: I18N.Locale class-initialization, Next: I18N.Locale class-instance creation, Up: I18N.Locale -BLOX.BEventSet class: initializing ----------------------------------- +I18N.Locale class: initialization +--------------------------------- -new - This method should not be called for instances of this class. +rootDirectory + Answer the directory under which locale definition files are found. -new: widget - Private - Create a new event set object that will attach to the - given widget. Answer the object. Note: this method should be - called by #addEventSet:, not directly +rootDirectory: aString + Set under which directory locale definition files are found.  -File: gst-libs.info, Node: BLOX.BEventSet-accessing, Next: BLOX.BEventSet-initializing, Prev: BLOX.BEventSet class-initializing, Up: BLOX.BEventSet +File: gst-libs.info, Node: I18N.Locale class-instance creation, Next: I18N.Locale-subobjects, Prev: I18N.Locale class-initialization, Up: I18N.Locale -BLOX.BEventSet: accessing -------------------------- +I18N.Locale class: instance creation +------------------------------------ + +default + Answer an instance of the receiver that accesses the default + locale. -widget - Answer the widget to which the receiver is attached. +flush + Flush the information on locales that are not valid across an + image save/load. + +fromString: aString + Answer an instance of the receiver that accesses the given locale + (in the form language[_territory][.charset]). + +posix + Answer an instance of the receiver that accesses the POSIX locale.  -File: gst-libs.info, Node: BLOX.BEventSet-initializing, Prev: BLOX.BEventSet-accessing, Up: BLOX.BEventSet +File: gst-libs.info, Node: I18N.Locale-subobjects, Prev: I18N.Locale class-instance creation, Up: I18N.Locale -BLOX.BEventSet: initializing ----------------------------- +I18N.Locale: subobjects +----------------------- + +messages + Answer the LcMessages object for the locale represented by the + receiver. + +monetary + Answer the LcMonetary object for the locale represented by the + receiver. + +monetaryIso + Answer the LcMonetaryISO object for the locale represented by the + receiver. -initialize: aBWidget - Initialize the receiver's event handlers to attach to aBWidget. - You can override this of course, but don't forget to call the - superclass implementation first. +numeric + Answer the LcNumeric object for the locale represented by the + receiver. + +time + Answer the LcTime object for the locale represented by the + receiver.  -File: gst-libs.info, Node: BLOX.BEventTarget, Next: BLOX.BExtended, Prev: BLOX.BEventSet, Up: BLOX +File: gst-libs.info, Node: I18N.LocaleConventions, Next: I18N.LocaleData, Prev: I18N.Locale, Up: I18N -BLOX.BEventTarget -================= +I18N.LocaleConventions +====================== -Defined in namespace BLOX -Superclass: Object -Category: Graphics-Windows - I track all the event handling procedures that you apply to an - object. +Defined in namespace I18N +Superclass: I18N.LocaleData +Category: i18n-Messages + I am an abstract superclass of objects that are referred to by a + Locale object. * Menu: -* BLOX.BEventTarget-intercepting events:: (instance) +* I18N.LocaleConventions class-accessing:: (class) +* I18N.LocaleConventions-accessing:: (instance)  -File: gst-libs.info, Node: BLOX.BEventTarget-intercepting events, Up: BLOX.BEventTarget +File: gst-libs.info, Node: I18N.LocaleConventions class-accessing, Next: I18N.LocaleConventions-accessing, Up: I18N.LocaleConventions + +I18N.LocaleConventions class: accessing +--------------------------------------- + +? anObject + Query the default object, forwarding the message to it. + +default + Answer an instance of the receiver that accesses the default + locale. -BLOX.BEventTarget: intercepting events --------------------------------------- +fromString: aString + Answer an instance of the receiver that accesses the given locale + (in the form language[_territory][.charset]). -addEventSet: aBEventSetSublass - Add to the receiver the event handlers implemented by an instance - of aBEventSetSubclass. Answer the new instance of - aBEventSetSublass. - -onAsciiKeyEventSend: aSelector to: anObject - When an ASCII key is pressed and the receiver has the focus, send - the 1-argument message identified by aSelector to anObject, - passing to it a Character. - -onDestroySend: aSelector to: anObject - When the receiver is destroyed, send the unary message identified - by aSelector to anObject. - -onFocusEnterEventSend: aSelector to: anObject - When the focus enters the receiver, send the unary message - identified by aSelector to anObject. - -onFocusLeaveEventSend: aSelector to: anObject - When the focus leaves the receiver, send the unary message - identified by aSelector to anObject. - -onKeyEvent: key send: aSelector to: anObject - When the given key is pressed and the receiver has the focus, send - the unary message identified by aSelector to anObject. Examples - for key are: 'Ctrl-1', 'Alt-X', 'Meta-plus', 'enter'. The last - two cases include example of special key identifiers; these - include: 'backslash', 'exclam', 'quotedbl', 'dollar', 'asterisk', - 'less', 'greater', 'asciicircum' (caret), 'question', 'equal', - 'parenleft', 'parenright', 'colon', 'semicolon', 'bar' (pipe - sign), 'underscore', 'percent', 'minus', 'plus', 'BackSpace', - 'Delete', 'Insert', 'Return', 'End', 'Home', 'Prior' (Pgup), - 'Next' (Pgdn), 'F1'..'F24', 'Caps_Lock', 'Num_Lock', 'Tab', - 'Left', 'Right', 'Up', 'Down'. There are in addition four special - identifiers which map to platform-specific keys: '', - '', '', '' (all with the angular brackets!). - - test - -onKeyEventSend: aSelector to: anObject - When a key is pressed and the receiver has the focus, send the - 1-argument message identified by aSelector to anObject. The pressed - key will be passed as a String parameter; some of the keys will - send special key identifiers such as those explained in the - documentation for #onKeyEvent:send:to: Look at the #eventTest test - program in the BloxTestSuite to find out the parameters passed to - such an event procedure - - test - -onKeyUpEventSend: aSelector to: anObject - When a key has been released and the receiver has the focus, send - the 1-argument message identified by aSelector to anObject. The - released key will be passed as a String parameter; some of the keys - will send special key identifiers such as those explained in the - documentation for #onKeyEvent:send:to: Look at the #eventTest test - program in the BloxTestSuite to find out the parameters passed to - such an event procedure - -onMouseDoubleEvent: button send: aSelector to: anObject - When the given button is double-clicked on the mouse, send the - 1-argument message identified by aSelector to anObject. The mouse - position will be passed as a Point. - -onMouseDoubleEventSend: aSelector to: anObject - When a button is double-clicked on the mouse, send the 2-argument - message identified by aSelector to anObject. The mouse position - will be passed as a Point in the first parameter, the button - number will be passed as an Integer in the second parameter. - -onMouseDownEvent: button send: aSelector to: anObject - When the given button is pressed on the mouse, send the 1-argument - message identified by aSelector to anObject. The mouse position - will be passed as a Point. - -onMouseDownEventSend: aSelector to: anObject - When a button is pressed on the mouse, send the 2-argument message - identified by aSelector to anObject. The mouse position will be - passed as a Point in the first parameter, the button number will - be passed as an Integer in the second parameter. - -onMouseEnterEventSend: aSelector to: anObject - When the mouse enters the widget, send the unary message - identified by aSelector to anObject. - -onMouseLeaveEventSend: aSelector to: anObject - When the mouse leaves the widget, send the unary message - identified by aSelector to anObject. - -onMouseMoveEvent: button send: aSelector to: anObject - When the mouse is moved while the given button is pressed on the - mouse, send the 1-argument message identified by aSelector to - anObject. The mouse position will be passed as a Point. - -onMouseMoveEventSend: aSelector to: anObject - When the mouse is moved, send the 1-argument message identified by - aSelector to anObject. The mouse position will be passed as a - Point. - -onMouseTripleEvent: button send: aSelector to: anObject - When the given button is triple-clicked on the mouse, send the - 1-argument message identified by aSelector to anObject. The mouse - position will be passed as a Point. - -onMouseTripleEventSend: aSelector to: anObject - When a button is triple-clicked on the mouse, send the 2-argument - message identified by aSelector to anObject. The mouse position - will be passed as a Point in the first parameter, the button - number will be passed as an Integer in the second parameter. - -onMouseUpEvent: button send: aSelector to: anObject - When the given button is released on the mouse, send the - 1-argument message identified by aSelector to anObject. The mouse - position will be passed as a Point. - -onMouseUpEventSend: aSelector to: anObject - When a button is released on the mouse, send the 2-argument - message identified by aSelector to anObject. The mouse position - will be passed as a Point in the first parameter, the button - number will be passed as an Integer in the second parameter. - -onResizeSend: aSelector to: anObject - When the receiver is resized, send the 1-argument message - identified by aSelector to anObject. The new size will be passed - as a Point. +posix + Answer an instance of the receiver that accesses the POSIX locale. + +selector + This method's functionality should be implemented by subclasses of + LocaleConventions  -File: gst-libs.info, Node: BLOX.BExtended, Next: BLOX.BForm, Prev: BLOX.BEventTarget, Up: BLOX +File: gst-libs.info, Node: I18N.LocaleConventions-accessing, Prev: I18N.LocaleConventions class-accessing, Up: I18N.LocaleConventions -BLOX.BExtended -============== +I18N.LocaleConventions: accessing +--------------------------------- + +? anObject + This method's functionality should be implemented by subclasses of + LocaleConventions + + + +File: gst-libs.info, Node: I18N.LocaleData, Next: I18N.RTEAlternativeNode, Prev: I18N.LocaleConventions, Up: I18N + +I18N.LocaleData +=============== -Defined in namespace BLOX -Superclass: BLOX.BWidget -Category: Graphics-Windows - Just like Gui, I serve as a base for complex objects which expose - an individual protocol but internally use a Blox widget for - creating their user interface. Unlike Gui, however, the instances - of my subclasses understand the standard widget protocol. Just - override my newPrimitive method to return another widget, and - you'll get a class which interacts with the user like that widget - (a list box, a text box, or even a label) but exposes a different - protocol. +Defined in namespace I18N +Superclass: Object +Category: i18n-Messages + I am an abstract superclass of objects that represent localization + information. * Menu: -* BLOX.BExtended-accessing:: (instance) -* BLOX.BExtended-customization:: (instance) +* I18N.LocaleData class-accessing:: (class) +* I18N.LocaleData class-database:: (class) +* I18N.LocaleData-accessing:: (instance) +* I18N.LocaleData-initialization:: (instance)  -File: gst-libs.info, Node: BLOX.BExtended-accessing, Next: BLOX.BExtended-customization, Up: BLOX.BExtended +File: gst-libs.info, Node: I18N.LocaleData class-accessing, Next: I18N.LocaleData class-database, Up: I18N.LocaleData -BLOX.BExtended: accessing -------------------------- +I18N.LocaleData class: accessing +-------------------------------- + +category + Answer `nil'. + +default + This method's functionality should be implemented by subclasses of + LocaleData + +flush + Flush the contents of the instances of each subclass of LocaleData. -asPrimitiveWidget - Answer the primitive widget that implements the receiver. +fromString: lang + This method's functionality should be implemented by subclasses of + LocaleData + +language: lang + Answer the local object for the given language. + +language: lang territory: territory + Answer the local object for the given language and territory. + +language: lang territory: territory charset: charset + Answer the local object for the given language, territory and + charset. + +new + This method should not be called for instances of this class. + +posix + This method's functionality should be implemented by subclasses of + LocaleData + +update: aspect + Flush instances of the receiver when an image is loaded.  -File: gst-libs.info, Node: BLOX.BExtended-customization, Prev: BLOX.BExtended-accessing, Up: BLOX.BExtended +File: gst-libs.info, Node: I18N.LocaleData class-database, Next: I18N.LocaleData-accessing, Prev: I18N.LocaleData class-accessing, Up: I18N.LocaleData -BLOX.BExtended: customization ------------------------------ +I18N.LocaleData class: database +------------------------------- + +defaults + Answer the default territory-language and language-charset + associations. + +initialize + Initialize the receiver's class variables. -create - After this method is called (the call is made automatically) the - receiver will be attached to a `primitive' widget (which can be in - turn another extended widget). This method is public not because - you can call it, but because it can be useful to override it, not - forgetting the call to super (which only calls #newPrimitive and - saves the result), to perform some initialization on the primitive - widget just created; overriding #create is in fact more generic - than overriding #newPrimitive. For an example of this, see the - implementation of BButtonLike. - -newPrimitive - Create and answer a new widget on which the implementation of the - receiver will be based. You should not call this method directly; - instead you must override it in BExtended's subclasses. +languages + ISO639 language codes + +territories + ISO3166 territory codes  -File: gst-libs.info, Node: BLOX.BForm, Next: BLOX.BImage, Prev: BLOX.BExtended, Up: BLOX +File: gst-libs.info, Node: I18N.LocaleData-accessing, Next: I18N.LocaleData-initialization, Prev: I18N.LocaleData class-database, Up: I18N.LocaleData -BLOX.BForm -========== +I18N.LocaleData: accessing +-------------------------- -Defined in namespace BLOX -Superclass: BLOX.BPrimitive -Category: Graphics-Windows - I am used to group many widgets together. I leave the heavy task - of managing their position to the user. +charset + Return the charset supported by the receiver. -* Menu: +id + Return the identifier of the locale supported by the receiver. + +isPosixLocale + Answer whether the receiver implements the default POSIX behavior + for a locale. + +language + Return the language supported by the receiver. + +languageDirectory + Answer the directory where data files for the current language + reside. + +languageDirectory: rootDirectory + Answer the directory where data files for the current language + reside, given the root directory of the locale data. + +territory + Return the territory supported by the receiver. + +territoryDirectory + Answer the directory where data files for the current language, + specific to the territory, reside. + +territoryDirectory: rootDirectory + Answer the directory where data files for the current language, + specific to the territory, reside, given the root directory of the + locale data. -* BLOX.BForm-accessing:: (instance)  -File: gst-libs.info, Node: BLOX.BForm-accessing, Up: BLOX.BForm +File: gst-libs.info, Node: I18N.LocaleData-initialization, Prev: I18N.LocaleData-accessing, Up: I18N.LocaleData -BLOX.BForm: accessing ---------------------- +I18N.LocaleData: initialization +------------------------------- + +id: anArray + Private - Set which locale the receiver contains data for -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -defaultHeight - Answer the value of the defaultHeight option for the widget. - Specifies the desired height for the form in pixels. If this option - is less than or equal to zero then the window will not request any - size at all. - -defaultHeight: value - Set the value of the defaultHeight option for the widget. - Specifies the desired height for the form in pixels. If this option - is less than or equal to zero then the window will not request any - size at all. - -defaultWidth - Answer the value of the defaultWidth option for the widget. - Specifies the desired width for the form in pixels. If this option - is less than or equal to zero then the window will not request any - size at all. - -defaultWidth: value - Set the value of the defaultWidth option for the widget. - Specifies the desired width for the form in pixels. If this option - is less than or equal to zero then the window will not request any - size at all. +initialize: aString + Set which locale the receiver contains data for, starting from a + string describing the locale.  -File: gst-libs.info, Node: BLOX.BImage, Next: BLOX.BLabel, Prev: BLOX.BForm, Up: BLOX +File: gst-libs.info, Node: I18N.RTEAlternativeNode, Next: I18N.RTEBinaryNode, Prev: I18N.LocaleData, Up: I18N -BLOX.BImage -=========== +I18N.RTEAlternativeNode +======================= -Defined in namespace BLOX -Superclass: BLOX.BPrimitive -Category: Graphics-Windows - I can display colorful images. +Defined in namespace I18N +Superclass: I18N.RunTimeExpression +Category: i18n-Messages * Menu: -* BLOX.BImage class-arrows:: (class) -* BLOX.BImage class-GNU:: (class) -* BLOX.BImage class-icons:: (class) -* BLOX.BImage class-instance creation:: (class) -* BLOX.BImage class-small icons:: (class) -* BLOX.BImage-accessing:: (instance) -* BLOX.BImage-image management:: (instance) -* BLOX.BImage-widget protocol:: (instance) +* I18N.RTEAlternativeNode class-compiling:: (class) +* I18N.RTEAlternativeNode-computing:: (instance)  -File: gst-libs.info, Node: BLOX.BImage class-arrows, Next: BLOX.BImage class-GNU, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTEAlternativeNode class-compiling, Next: I18N.RTEAlternativeNode-computing, Up: I18N.RTEAlternativeNode + +I18N.RTEAlternativeNode class: compiling +---------------------------------------- + +condition: cond ifTrue: trueNode ifFalse: falseNode + Private - Create a node in the parse tree for the run-time + expression, mapping s to a Smalltalk arithmetic selector -BLOX.BImage class: arrows -------------------------- -downArrow - Answer the XPM representation of a 12x12 arrow pointing downwards. + +File: gst-libs.info, Node: I18N.RTEAlternativeNode-computing, Prev: I18N.RTEAlternativeNode class-compiling, Up: I18N.RTEAlternativeNode + +I18N.RTEAlternativeNode: computing +---------------------------------- -leftArrow - Answer the XPM representation of a 12x12 arrow pointing leftwards. +condition: condNode ifTrue: trueNode ifFalse: falseNode + Initialize the children of the receiver and the conditional + expression to choose between them -rightArrow - Answer the XPM representation of a 12x12 arrow pointing rightwards. +printOn: aStream + Print a representation of the receiver on aStream -upArrow - Answer the XPM representation of a 12x12 arrow pointing upwards. +send: parameter + Evaluate the receiver by conditionally choosing one of its children + and evaluating it  -File: gst-libs.info, Node: BLOX.BImage class-GNU, Next: BLOX.BImage class-icons, Prev: BLOX.BImage class-arrows, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTEBinaryNode, Next: I18N.RTELiteralNode, Prev: I18N.RTEAlternativeNode, Up: I18N -BLOX.BImage class: GNU ----------------------- +I18N.RTEBinaryNode +================== + +Defined in namespace I18N +Superclass: I18N.RunTimeExpression +Category: i18n-Messages -gnu - Answer the XPM representation of a 48x48 GNU. +* Menu: +* I18N.RTEBinaryNode class-compiling:: (class) +* I18N.RTEBinaryNode-compiling:: (instance) +* I18N.RTEBinaryNode-computing:: (instance)  -File: gst-libs.info, Node: BLOX.BImage class-icons, Next: BLOX.BImage class-instance creation, Prev: BLOX.BImage class-GNU, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTEBinaryNode class-compiling, Next: I18N.RTEBinaryNode-compiling, Up: I18N.RTEBinaryNode -BLOX.BImage class: icons ------------------------- +I18N.RTEBinaryNode class: compiling +----------------------------------- -exclaim - Answer the XPM representation of a 32x32 exclamation mark icon. +lhs: lhs op: op rhs: rhs + Private - Create a node in the parse tree for the run-time + expression, mapping s to a Smalltalk arithmetic selector -info - Answer the XPM representation of a 32x32 `information' icon. -question - Answer the XPM representation of a 32x32 question mark icon. + +File: gst-libs.info, Node: I18N.RTEBinaryNode-compiling, Next: I18N.RTEBinaryNode-computing, Prev: I18N.RTEBinaryNode class-compiling, Up: I18N.RTEBinaryNode -stop - Answer the XPM representation of a 32x32 `critical stop' icon. +I18N.RTEBinaryNode: compiling +----------------------------- + +lhs + Answer `lhs'. + +op + Answer `op'. + +rhs + Answer `rhs'.  -File: gst-libs.info, Node: BLOX.BImage class-instance creation, Next: BLOX.BImage class-small icons, Prev: BLOX.BImage class-icons, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTEBinaryNode-computing, Prev: I18N.RTEBinaryNode-compiling, Up: I18N.RTEBinaryNode -BLOX.BImage class: instance creation ------------------------------------- +I18N.RTEBinaryNode: computing +----------------------------- -new: parent data: aString - Answer a new BImage widget laid inside the given parent widget, - loading data from the given string (Base-64 encoded GIF, XPM, PPM - are supported). +lhs: lhsNode op: aSymbol rhs: rhsNode + Initialize the children of the receiver and the operation to be + done between them -new: parent image: aFileStream - Answer a new BImage widget laid inside the given parent widget, - loading data from the given file (GIF, XPM, PPM are supported). +printOn: aStream + Print a representation of the receiver on aStream -new: parent size: aPoint - Answer a new BImage widget laid inside the given parent widget, - showing by default a transparent image of aPoint size. +send: parameter + Private - Evaluate the receiver by evaluating both children and + performing an arithmetic operation between them.  -File: gst-libs.info, Node: BLOX.BImage class-small icons, Next: BLOX.BImage-accessing, Prev: BLOX.BImage class-instance creation, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTELiteralNode, Next: I18N.RTENegationNode, Prev: I18N.RTEBinaryNode, Up: I18N -BLOX.BImage class: small icons +I18N.RTELiteralNode +=================== + +Defined in namespace I18N +Superclass: I18N.RunTimeExpression +Category: i18n-Messages + +* Menu: + +* I18N.RTELiteralNode class-initializing:: (class) +* I18N.RTELiteralNode-computing:: (instance) + + +File: gst-libs.info, Node: I18N.RTELiteralNode class-initializing, Next: I18N.RTELiteralNode-computing, Up: I18N.RTELiteralNode + +I18N.RTELiteralNode class: initializing +--------------------------------------- + +parseFrom: aStream + Parse a literal number from aStream and return a new node + + + +File: gst-libs.info, Node: I18N.RTELiteralNode-computing, Prev: I18N.RTELiteralNode class-initializing, Up: I18N.RTELiteralNode + +I18N.RTELiteralNode: computing ------------------------------ -directory - Answer the Base-64 GIF representation of a `directory folder' icon. +n: value + Set the value of the literal that the node represents -file - Answer the Base-64 GIF representation of a `file' icon. +printOn: aStream + Print a representation of the receiver on aStream + +send: parameter + Answer a fixed value, the literal encoded in the node  -File: gst-libs.info, Node: BLOX.BImage-accessing, Next: BLOX.BImage-image management, Prev: BLOX.BImage class-small icons, Up: BLOX.BImage - -BLOX.BImage: accessing ----------------------- - -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -displayHeight - Answer the value of the displayHeight option for the widget. - Specifies the height of the image in pixels. This is not the - height of the widget, but specifies the area of the widget that - will be taken by the image. - -displayHeight: value - Set the value of the displayHeight option for the widget. - Specifies the height of the image in pixels. This is not the - height of the widget, but specifies the area of the widget that - will be taken by the image. - -displayWidth - Answer the value of the displayWidth option for the widget. - Specifies the width of the image in pixels. This is not the width - of the widget, but specifies the area of the widget that will be - taken by the image. - -displayWidth: value - Set the value of the displayWidth option for the widget. - Specifies the width of the image in pixels. This is not the width - of the widget, but specifies the area of the widget that will be - taken by the image. - -foregroundColor - Answer the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -foregroundColor: value - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -gamma - Answer the value of the gamma option for the widget. Specifies - that the colors allocated for displaying the image widget should - be corrected for a non-linear display with the specified gamma - exponent value. (The intensity produced by most CRT displays is a - power function of the input value, to a good approximation; gamma - is the exponent and is typically around 2). The value specified - must be greater than zero. The default value is one (no - correction). In general, values greater than one will make the - image lighter, and values less than one will make it darker. - -gamma: value - Set the value of the gamma option for the widget. Specifies that - the colors allocated for displaying the image widget should be - corrected for a non-linear display with the specified gamma - exponent value. (The intensity produced by most CRT displays is a - power function of the input value, to a good approximation; gamma - is the exponent and is typically around 2). The value specified - must be greater than zero. The default value is one (no - correction). In general, values greater than one will make the - image lighter, and values less than one will make it darker. +File: gst-libs.info, Node: I18N.RTENegationNode, Next: I18N.RTEParameterNode, Prev: I18N.RTELiteralNode, Up: I18N + +I18N.RTENegationNode +==================== + +Defined in namespace I18N +Superclass: I18N.RunTimeExpression +Category: i18n-Messages +* Menu: + +* I18N.RTENegationNode class-initializing:: (class) +* I18N.RTENegationNode-computing:: (instance)  -File: gst-libs.info, Node: BLOX.BImage-image management, Next: BLOX.BImage-widget protocol, Prev: BLOX.BImage-accessing, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTENegationNode class-initializing, Next: I18N.RTENegationNode-computing, Up: I18N.RTENegationNode -BLOX.BImage: image management ------------------------------ +I18N.RTENegationNode class: initializing +---------------------------------------- -blank - Blank the corresponding image +child: aNode + Answer a new node representing the logical negation of aNode -data: aString - Set the image to be drawn to aString, which can be a GIF in - Base-64 representation or an X pixelmap. - -dither - Recalculate the dithered image in the window where the image is - displayed. The dithering algorithm used in displaying images - propagates quantization errors from one pixel to its neighbors. - If the image data is supplied in pieces, the dithered image may - not be exactly correct. Normally the difference is not - noticeable, but if it is a problem, this command can be used to - fix it. - -fillFrom: origin extent: extent color: color - Fill a rectangle with the given origin and extent, using the given - color. - -fillFrom: origin to: corner color: color - Fill a rectangle between the given corners, using the given color. - -fillRectangle: rectangle color: color - Fill a rectangle having the given bounding box, using the given - color. - -image: aFileStream - Read a GIF or XPM image from aFileStream. The whole contents of - the file are read, not only from the file position. - -imageHeight - Specifies the height of the image, in pixels. This option is - useful primarily in situations where you wish to build up the - contents of the image piece by piece. A value of zero (the - default) allows the image to expand or shrink vertically to fit - the data stored in it. - -imageWidth - Specifies the width of the image, in pixels. This option is useful - primarily in situations where you wish to build up the contents of - the image piece by piece. A value of zero (the default) allows the - image to expand or shrink horizontally to fit the data stored in - it. -lineFrom: origin extent: extent color: color - Draw a line with the given origin and extent, using the given - color. + +File: gst-libs.info, Node: I18N.RTENegationNode-computing, Prev: I18N.RTENegationNode class-initializing, Up: I18N.RTENegationNode -lineFrom: origin to: corner color: color - This method's functionality has not been implemented yet. +I18N.RTENegationNode: computing +------------------------------- -lineFrom: origin toX: endX color: color - Draw an horizontal line between the given corners, using the given - color. +child: value + Set the child of which the receiver will compute the negation -lineFrom: origin toY: endY color: color - Draw a vertical line between the given corners, using the given - color. +printOn: aStream + Print a representation of the receiver on aStream -lineInside: rectangle color: color - Draw a line having the given bounding box, using the given color. +send: parameter + Evaluate the receiver by computing the child's logical negation  -File: gst-libs.info, Node: BLOX.BImage-widget protocol, Prev: BLOX.BImage-image management, Up: BLOX.BImage +File: gst-libs.info, Node: I18N.RTEParameterNode, Next: I18N.RunTimeExpression, Prev: I18N.RTENegationNode, Up: I18N -BLOX.BImage: widget protocol ----------------------------- +I18N.RTEParameterNode +===================== -destroyed - Private - The receiver has been destroyed, clear the corresponding - Tcl image to avoid memory leaks. +Defined in namespace I18N +Superclass: I18N.RunTimeExpression +Category: i18n-Messages +* Menu: + +* I18N.RTEParameterNode-computing:: (instance)  -File: gst-libs.info, Node: BLOX.BLabel, Next: BLOX.BLine, Prev: BLOX.BImage, Up: BLOX +File: gst-libs.info, Node: I18N.RTEParameterNode-computing, Up: I18N.RTEParameterNode -BLOX.BLabel -=========== +I18N.RTEParameterNode: computing +-------------------------------- -Defined in namespace BLOX -Superclass: BLOX.BPrimitive -Category: Graphics-Windows - I am a label showing static text. +printOn: aStream + Print a representation of the receiver on aStream + +send: parameter + Evaluate the receiver by answering the parameter + + + +File: gst-libs.info, Node: I18N.RunTimeExpression, Prev: I18N.RTEParameterNode, Up: I18N + +I18N.RunTimeExpression +====================== + +Defined in namespace I18N +Superclass: Object +Category: i18n-Messages * Menu: -* BLOX.BLabel class-initialization:: (class) -* BLOX.BLabel class-instance creation:: (class) -* BLOX.BLabel-accessing:: (instance) +* I18N.RunTimeExpression class-compiling:: (class) +* I18N.RunTimeExpression class-initializing:: (class) +* I18N.RunTimeExpression class-instance creation:: (class) +* I18N.RunTimeExpression-computing:: (instance)  -File: gst-libs.info, Node: BLOX.BLabel class-initialization, Next: BLOX.BLabel class-instance creation, Up: BLOX.BLabel +File: gst-libs.info, Node: I18N.RunTimeExpression class-compiling, Next: I18N.RunTimeExpression class-initializing, Up: I18N.RunTimeExpression + +I18N.RunTimeExpression class: compiling +--------------------------------------- + +parseExpression: stream + Private - Compile the expression in the stream + +parseOperand: stream + Parse an operand from the stream (i.e. an unary negation, a + parenthesized subexpression, `n' or a number) and answer the + corresponding parse node. + +parseOperator: stream + Answer a Symbol for an operator read from stream, or nil if + something else is found. -BLOX.BLabel class: initialization ---------------------------------- + + +File: gst-libs.info, Node: I18N.RunTimeExpression class-initializing, Next: I18N.RunTimeExpression class-instance creation, Prev: I18N.RunTimeExpression class-compiling, Up: I18N.RunTimeExpression + +I18N.RunTimeExpression class: initializing +------------------------------------------ initialize - Private - Initialize the receiver's class variables. + Private - Initialize internal tables for the parser  -File: gst-libs.info, Node: BLOX.BLabel class-instance creation, Next: BLOX.BLabel-accessing, Prev: BLOX.BLabel class-initialization, Up: BLOX.BLabel +File: gst-libs.info, Node: I18N.RunTimeExpression class-instance creation, Next: I18N.RunTimeExpression-computing, Prev: I18N.RunTimeExpression class-initializing, Up: I18N.RunTimeExpression -BLOX.BLabel class: instance creation ------------------------------------- +I18N.RunTimeExpression class: instance creation +----------------------------------------------- -new: parent label: label - Answer a new BLabel widget laid inside the given parent widget, - showing by default the `label' String. - - - -File: gst-libs.info, Node: BLOX.BLabel-accessing, Prev: BLOX.BLabel class-instance creation, Up: BLOX.BLabel - -BLOX.BLabel: accessing ----------------------- - -alignment - Answer the value of the anchor option for the widget. Specifies - how the information in a widget (e.g. text or a bitmap) is to be - displayed in the widget. Must be one of the symbols #topLeft, - #topCenter, #topRight, #leftCenter, #center, #rightCenter, - #bottomLeft, #bottomCenter, #bottomRight. For example, #topLeft - means display the information such that its top-left corner is at - the top-left corner of the widget. - -alignment: aSymbol - Set the value of the anchor option for the widget. Specifies how - the information in a widget (e.g. text or a bitmap) is to be - displayed in the widget. Must be one of the symbols #topLeft, - #topCenter, #topRight, #leftCenter, #center, #rightCenter, - #bottomLeft, #bottomCenter, #bottomRight. For example, #topLeft - means display the information such that its top-left corner is at - the top-left corner of the widget. - -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -font - Answer the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -font: value - Set the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor - Answer the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -foregroundColor: value - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -label - Answer the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - -label: value - Set the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. +on: aString + Compile aString and answer a RunTimeExpression  -File: gst-libs.info, Node: BLOX.BLine, Next: BLOX.BList, Prev: BLOX.BLabel, Up: BLOX +File: gst-libs.info, Node: I18N.RunTimeExpression-computing, Prev: I18N.RunTimeExpression class-instance creation, Up: I18N.RunTimeExpression -BLOX.BLine -========== +I18N.RunTimeExpression: computing +--------------------------------- -Defined in namespace BLOX -Superclass: BLOX.BBoundingBox -Category: Graphics-Windows - I only draw straight lines but I can do that very well, even - without a ruler... +send: parameter + This method's functionality should be implemented by subclasses of + RunTimeExpression -* Menu: +value: parameter + Evaluate the receiver, and answer its value as an integer -* BLOX.BLine-accessing:: (instance)  -File: gst-libs.info, Node: BLOX.BLine-accessing, Up: BLOX.BLine +File: gst-libs.info, Node: XML, Next: Class index, Prev: I18N, Up: Top -BLOX.BLine: accessing ---------------------- +XML +*** -cap - Answer the way in which caps are to be drawn at the endpoints of - the line. The answer may be #butt (the default), #projecting, or - #round). +_by Thomas Gagne_ -cap: aSymbol - Set the way in which caps are to be drawn at the endpoints of the - line. aSymbol may be #butt (the default), #projecting, or #round). +* Menu: -width - Answer the width with which the line is drawn. +* Building a DOM from XML:: +* Building XML:: +* Using DTDs:: +* XSL Processing:: +* Attributions:: + + +File: gst-libs.info, Node: Building a DOM from XML, Next: Building XML, Up: XML + +Building a DOM from XML +======================= + +If you're like me, the first thing you may be trying to do is build a +Document Object Model (DOM) tree from some kind of XML input. Assuming +you've got the XML in a String the following code will build an XML +Document: + + XML XMLParser processDocumentString: theXMLString + beforeScanDo: [ :p | p validate: false]. + + Though the code above appears as though it should be easy to use, +there's some hidden features you should know about. First, +`theXMLString' can not contain any null bytes. Depending on where your +XML comes from it may have a NULL byte at the end (like mine did). +Many languages implement strings as an array of bytes (usually +printable ones) ending with a null (a character with integer value 0). +In my case, the XML was coming from a remote client written in C using +middleware to send the message to my server. Since the middleware +doesn't assume to know anything about the message it received, it's +received into a String, null-byte and all. To remove it I used: + + XML XMLParser processDocumentString: (aString copyWithout: 0 asCharacter) + beforeScanDo: [ :p | p validate: false]. + + Starting out, I didn't know much about the value of DTDs either +(Document Type Definitions), so I wasn't using them (more on why you +should later). What you need to know is XML comes in two flavors, +(three if you include broken as a flavor) _well-formed_ and _valid_. + + _Well-formed XML_ is simply XML following the basic rules, like only +one top-level (the document's root), no overlapping tags, and a few +other contraints. Valid XML means not only is the XML well-formed, but +it's also compliant with some kind of rule base about which elements +are allowed to follow which other ones, whether or not attributes are +permitted and what their values and defaults should be, etc. + + There's no way to get around well-formedness. Most XML tools +complain vociferously about missing or open tags. What you may not +have lying around, though, is a DTD describing how the XML should be +assembled. If you need to skip validation for any reason you must +include the selector: + + beforeScanDo: [ :p | p validate: false]. + + Now that you have your XML document, you probably want to access its +contents (why else would you want one, right?). Let's take the +following (brief) XML as an example: + + + + 01/04/2000 + + + widget + 1.0000 + + + doodad + 2.0000 + + + + The first thing you probably want to know is how to access the +different tags, and more specifically, how to access the contents of +those tags. First, by way of providing a roadmap to the elements I'll +show you the Smalltalk code for getting different pieces of the +document, assuming the variable you've assigned the document to is +named _doc_. I'll also create instance variables for the various +elements as I go along: + +_Element you want_ _Code to get it_ +porder element `doc root' +porder_head `doc root elementNamed: + 'porder_head'' +order_date (as a String) `(porderHead elementNamed: + 'order_date') characterData' +order_date (as a Date) `(Date readFrom: (porderHead + elementNamed: 'order_date') + characterData readStream)' +a collection with both porder_lines `doc root elementsNamed: + 'porder_line'' + + I've deliberately left-out accessing `porder''s attribute because +accessing them is different from accessing other nodes. You can get an +OrderedCollection of attributes using: + + attributes := doc root attributes. + +but the ordered collection isn't really useful. To access any single +attribute you'd need to look for it in the collection: + + porderNum := (attributes detect: [ :each | each key type = 'porder_num' ]) value. + + But that's not a whole lot of fun, especially if there's a lot you +need to get, and if there's any possibility the attribute may not +exist. Then you have to do the whole `detect:ifNone:' thing, and boy, +does that make the code readable! What I did instead was create a +method in my objects' abstract: + + dictionaryForAttributes: aCollection + ^Dictionary withAll: (aCollection + collect: [ :each | each key type -> each value ]) + + Now what you have is an incrementally more useful method for getting +attributes: + + attributes := self dictionaryForAttributes: doc root attributes. + porderNum := attributes at: 'porder_num'. + + At first this appears like more code, and for a single attribute it +probably is. But if an element includes more than one attribute the +payoff is fairly decent. Of course, you still need to handle the +absence of an attribute in the dictionary but I think it reads a little +better using a Dictionary than an OrderedCollection: + + porderNum := attributes at: 'porder_num' ifAbsent: []. + + +File: gst-libs.info, Node: Building XML, Next: Using DTDs, Prev: Building a DOM from XML, Up: XML + +Building XML +============ + +There's little reason to build an XML document if its not going to be +processed by something down the road. Most XML tools require XML +documents have a document root. A root is a tag inside which all other +tags exist, or put another way, a single parent node from which all +other nodes descend. In my case, a co-worker was attempting to use +Sablot's sabcmd to transform the XML from my server into HTML. So +start your document with the root ready to go: + + replyDoc := XML Document new. + replyDoc addNode: (XML Element tag: 'response'). + + Before doing anything more complex, we can play with our new XML +document. Assuming you're going to want to send the XML text to +someone or write it to a file, you may first want to capture it in a +string. Even if you don't want to first capture it into a string our +example is going to: + + replyStream := String new writeStream. + replyDoc printOn: replyStream. + + If we examine'd the contents of our replyStream (`replyStream +contents') we'd see: + + + + Which is what an empty tag looks like. + + Let's add some text to our XML document now. Let's say we want it +to look like: + + Hello, world! + + Building this actually requires two nodes be added to a new XML +document. The first node (or element) is named `response'. The second +node adds text to the first: + + replyDoc := XML Document new. + replyDoc addNode: (XML Element tag: response). "our root node" + replyDoc root addNode: (XML Text text: 'Hello, world!'). + + Another way of writing it, and the way I've adopted in my code is to +create the whole node before adding it. This is not just to reduce the +appearance of assignments, but it suggests a template for cascading +`#addNode:' messages to an element, which, if you're building any kind +of nontrivial XML, you'll be doing a lot of: + + replyDoc := XML Document new. + replyDoc addNode: ( + (XML Element tag: response) + addNode: (XML Text text: 'Hello, world!') + ). + + Unless you're absolutely sure you'll never accidentally add text +nodes that have an ampersand (&) in them, you'll need to escape it to +get past XML parsers. The way I got around this was to escape them +whenever I added text nodes. To make it easier, I (again) created a +method in my objects' abstract superclass: + + asXMLElement: tag value: aValue + | n | + + n := XML Element tag: tag. + aValue isNil ifFalse: [ + n addNode: (XML Text + text: (aValue displayString copyReplaceAll: '&' with: '&'))]. + ^n + + Calls to `self asXMLElement: 'sometagname' value: +anInstanceVariable' are littered throughout my code. + + Adding attributes to documents is, thankfully, easier than accessing +them. If we wanted to add an attribute to our document above we can do +so with a single statement: + + replyDoc root addAttribute: (XML Attribute name: 'isExample' value: 'yes'). -width: pixels - Set the width with which the line is drawn. + Now, our XML looks like: + Hello, world!  -File: gst-libs.info, Node: BLOX.BList, Next: BLOX.Blox, Prev: BLOX.BLine, Up: BLOX +File: gst-libs.info, Node: Using DTDs, Next: XSL Processing, Prev: Building XML, Up: XML -BLOX.BList +Using DTDs ========== -Defined in namespace BLOX -Superclass: BLOX.BViewport -Category: Graphics-Windows - I represent a list box from which you can choose one or more - elements. +What I didn't appreciate in my first XML project (this one) was how +much error checking I was doing just to verify the format of incoming +XML. During testing I'd go looking for attributes or elements that +_should_ have been there but for various reasons were not. Because I +was coding fast and furious I overlooked some and ignored others. +Testing quickly ferreted out my carelessnes and my application started +throwing exceptions faster than election officials throw chads. + + The cure, at least for formatting, is having a DTD, or Document Type +Definition describing the XML format. You can read more about the +syntax of DTDs in the XML specification. + + There's not a lot programmers are able to do with DTDs in +VisualWorks, except requiring incoming XML to include DOCTYPE +statements. There is something programmers need to do to handle the +exceptions the XML parser throws when it finds errors. + + I'm not an expert at writing Smalltalk exception handling code, and I +haven't decided on what those exceptions should look like to the client +who sent the poorly formatted XML in the first place. The code below +does a decent job of catching the errors and putting the description of +the error into an XML response. It's also a fairly decent example of +XML document building as discussed earlier. + + replyDoc := XML Document new. + replyDoc addNode: (XML Element tag: 'response'). + + [ + doc := XML XMLParser processDocumentString: (anIsdMessage message copyWithout: 0) asString + ] on: Exception do: [ :ex | + replyDoc root + addAttribute: (XML Attribute name: 'type' value: 'Exception'); + addNode: ((XML Element tag: 'description') + addNode: (XML Text text: ex signal description)); + addNode: ((XML Element tag: 'message') + addNode: (XML Text text: ex messageText)) + ]. + + I said before there's not a lot programmers can do with DTDs, but +there are some things I wish VW's XML library would do: + + * I'd like to make sure the documents I build are built correctly. + It would be great if a DTD could be attached to an empty XML + document so that exceptions could be thrown as misplaced elements + were added. + + * It would be great to specify which DTD the XML parser should use + when parsing incoming XML so that the incoming XML wouldn't always + have to include a tag. Though it's fairly easy to add + the tag at the start of XML text, it's really not that simple. + You need to know the XML's root element before adding the + tag but you really don't know that until after you've + parsed the XML You would have to parse the XML, determine the + root tag, then parse the output of the first into a new XML + document with validation turned-on. + + * Another reason to be able to create a DTD document to use with + subsequent parsing is to avoid the overhead of parsing the same + DTD over and over again. In transaction processing systems this + kind of redundant task could be eliminated and the spare CPU + cycles put to better use. + + +File: gst-libs.info, Node: XSL Processing, Next: Attributions, Prev: Using DTDs, Up: XML + +XSL Processing +============== + +I spent a night the other week trying to figure out how to get VW's XSL +libraries to do anything. I no longer need it now, but I did discover +some things others with an immediate need may want to be aware of. + + * Transforming an XML document requires you parse the XSL and XML + documents separately first. After that, you tell the XSL + RuleDatabase to process the XML document. The result is another + XML document with the transformations. + + A code snippet for doing just that appears below. + | rules xmlDoc htmlDoc | + + rules := XSL RuleDatabase new readFileNamed: 'paymentspending.xsl'. + xmlDoc := XML XMLParser + processDocumentInFilename: 'paymentspending.xml' + beforeScanDo: [ :p | p validate: false ]. + htmlDoc := rules process: xmlDoc. + + There is also a `readString:' method which can be used instead of + `readFileNamed:'. + + * VW's XSL library doesn't use the W3-approved stylesheet, but + instead uses the draft version (same one Microsoft uses). + `' + + * The functions `position()' and `count()' aren't implemented, or if + they are, aren't implemented in the way other XSL tools implement + it. + + +File: gst-libs.info, Node: Attributions, Prev: XSL Processing, Up: XML + +Attributions +============ + +Cincom, for supporting Smalltalk and the Smalltalk community by making +an open-source version available. + + Thanks also to Randy Ynchausti, Bijan Parsia, Reinout Heeck, and +Joseph Bacanskas for answering many questions on VW XML. + + +File: gst-libs.info, Node: Class index, Next: Method index, Prev: XML, Up: Top + +Class index +*********** * Menu: -* BLOX.BList-accessing:: (instance) -* BLOX.BList-widget protocol:: (instance) +* BLOX.BArc: BLOX.BArc. +* BLOX.BBalloon: BLOX.BBalloon. +* BLOX.BBoundingBox: BLOX.BBoundingBox. +* BLOX.BButton: BLOX.BButton. +* BLOX.BButtonLike: BLOX.BButtonLike. +* BLOX.BCanvas: BLOX.BCanvas. +* BLOX.BCanvasObject: BLOX.BCanvasObject. +* BLOX.BCheckMenuItem: BLOX.BCheckMenuItem. +* BLOX.BColorButton: BLOX.BColorButton. +* BLOX.BContainer: BLOX.BContainer. +* BLOX.BDialog: BLOX.BDialog. +* BLOX.BDropDown: BLOX.BDropDown. +* BLOX.BDropDownEdit: BLOX.BDropDownEdit. +* BLOX.BDropDownList: BLOX.BDropDownList. +* BLOX.BEdit: BLOX.BEdit. +* BLOX.BEmbeddedImage: BLOX.BEmbeddedImage. +* BLOX.BEmbeddedText: BLOX.BEmbeddedText. +* BLOX.BEventSet: BLOX.BEventSet. +* BLOX.BEventTarget: BLOX.BEventTarget. +* BLOX.BExtended: BLOX.BExtended. +* BLOX.BForm: BLOX.BForm. +* BLOX.BImage: BLOX.BImage. +* BLOX.BLabel: BLOX.BLabel. +* BLOX.BLine: BLOX.BLine. +* BLOX.BList: BLOX.BList. +* BLOX.Blox: BLOX.Blox. +* BLOX.BMenu: BLOX.BMenu. +* BLOX.BMenuBar: BLOX.BMenuBar. +* BLOX.BMenuItem: BLOX.BMenuItem. +* BLOX.BMenuObject: BLOX.BMenuObject. +* BLOX.BOval: BLOX.BOval. +* BLOX.BPolyline: BLOX.BPolyline. +* BLOX.BPopupMenu: BLOX.BPopupMenu. +* BLOX.BPopupWindow: BLOX.BPopupWindow. +* BLOX.BPrimitive: BLOX.BPrimitive. +* BLOX.BProgress: BLOX.BProgress. +* BLOX.BRadioButton: BLOX.BRadioButton. +* BLOX.BRadioGroup: BLOX.BRadioGroup. +* BLOX.BRectangle: BLOX.BRectangle. +* BLOX.BScrolledCanvas: BLOX.BScrolledCanvas. +* BLOX.BSpline: BLOX.BSpline. +* BLOX.BText: BLOX.BText. +* BLOX.BTextAttributes: BLOX.BTextAttributes. +* BLOX.BTextBindings: BLOX.BTextBindings. +* BLOX.BTextTags: BLOX.BTextTags. +* BLOX.BToggle: BLOX.BToggle. +* BLOX.BTransientWindow: BLOX.BTransientWindow. +* BLOX.BViewport: BLOX.BViewport. +* BLOX.BWidget: BLOX.BWidget. +* BLOX.BWindow: BLOX.BWindow. +* BLOX.Gui: BLOX.Gui. +* I18N.BigEndianFileStream: I18N.BigEndianFileStream. +* I18N.EncodedStream: I18N.EncodedStream. +* I18N.Encoder: I18N.Encoder. +* I18N.Encoders.ComposeUCS4BE: I18N.Encoders.ComposeUCS4BE. +* I18N.Encoders.ComposeUCS4LE: I18N.Encoders.ComposeUCS4LE. +* I18N.Encoders.FromUCS4: I18N.Encoders.FromUCS4. +* I18N.Encoders.FromUTF7: I18N.Encoders.FromUTF7. +* I18N.Encoders.Iconv: I18N.Encoders.Iconv. +* I18N.Encoders.SplitUCS4BE: I18N.Encoders.SplitUCS4BE. +* I18N.Encoders.SplitUCS4LE: I18N.Encoders.SplitUCS4LE. +* I18N.Encoders.ToUCS4: I18N.Encoders.ToUCS4. +* I18N.Encoders.ToUTF7: I18N.Encoders.ToUTF7. +* I18N.FileStreamSegment: I18N.FileStreamSegment. +* I18N.IncompleteSequenceError: I18N.IncompleteSequenceError. +* I18N.InvalidCharsetError: I18N.InvalidCharsetError. +* I18N.InvalidSequenceError: I18N.InvalidSequenceError. +* I18N.LcMessages: I18N.LcMessages. +* I18N.LcMessagesCatalog: I18N.LcMessagesCatalog. +* I18N.LcMessagesDomain: I18N.LcMessagesDomain. +* I18N.LcMessagesDummyDomain: I18N.LcMessagesDummyDomain. +* I18N.LcMessagesMoFileVersion0: I18N.LcMessagesMoFileVersion0. +* I18N.LcMessagesTerritoryDomain: I18N.LcMessagesTerritoryDomain. +* I18N.LcMonetary: I18N.LcMonetary. +* I18N.LcMonetaryISO: I18N.LcMonetaryISO. +* I18N.LcNumeric: I18N.LcNumeric. +* I18N.LcPrintFormats: I18N.LcPrintFormats. +* I18N.LcTime: I18N.LcTime. +* I18N.Locale: I18N.Locale. +* I18N.LocaleConventions: I18N.LocaleConventions. +* I18N.LocaleData: I18N.LocaleData. +* I18N.RTEAlternativeNode: I18N.RTEAlternativeNode. +* I18N.RTEBinaryNode: I18N.RTEBinaryNode. +* I18N.RTELiteralNode: I18N.RTELiteralNode. +* I18N.RTENegationNode: I18N.RTENegationNode. +* I18N.RTEParameterNode: I18N.RTEParameterNode. +* I18N.RunTimeExpression: I18N.RunTimeExpression. +* TCP.AbstractSocket: TCP.AbstractSocket. +* TCP.AbstractSocketImpl: TCP.AbstractSocketImpl. +* TCP.Datagram: TCP.Datagram. +* TCP.DatagramSocket: TCP.DatagramSocket. +* TCP.DatagramSocketImpl: TCP.DatagramSocketImpl. +* TCP.ICMPSocketImpl: TCP.ICMPSocketImpl. +* TCP.IPAddress: TCP.IPAddress. +* TCP.MulticastSocket: TCP.MulticastSocket. +* TCP.MulticastSocketImpl: TCP.MulticastSocketImpl. +* TCP.OOBSocketImpl: TCP.OOBSocketImpl. +* TCP.RawSocketImpl: TCP.RawSocketImpl. +* TCP.ReadBuffer: TCP.ReadBuffer. +* TCP.ServerSocket: TCP.ServerSocket. +* TCP.Socket: TCP.Socket. +* TCP.SocketAddress: TCP.SocketAddress. +* TCP.SocketImpl: TCP.SocketImpl. +* TCP.TCPSocketImpl: TCP.TCPSocketImpl. +* TCP.UDPSocketImpl: TCP.UDPSocketImpl. +* TCP.WriteBuffer: TCP.WriteBuffer. + + +File: gst-libs.info, Node: Method index, Next: Cross-reference, Prev: Class index, Up: Top + +Method index +************ + +* Menu: + +* =: TCP.SocketAddress-accessing. +* ? <1>: I18N.LocaleConventions-accessing. +* ? <2>: I18N.LocaleConventions class-accessing. +* ? <3>: I18N.LcPrintFormats-printing. +* ? <4>: I18N.LcMessagesDomain-querying. +* ?: I18N.LcMessages-opening MO files. +* accept: TCP.ServerSocket-accessing. +* accept_ <1>: TCP.ServerSocket-accessing. +* accept_: TCP.AbstractSocketImpl-socket operations. +* activate: BLOX.BWidget-widget protocol. +* activateNext: BLOX.BWidget-widget protocol. +* activatePrevious: BLOX.BWidget-widget protocol. +* active: BLOX.Blox class-utility. +* activeBackground: BLOX.BMenuObject-accessing. +* activeBackground_: BLOX.BMenuObject-accessing. +* activeForeground: BLOX.BMenuObject-accessing. +* activeForeground_: BLOX.BMenuObject-accessing. +* add_: BLOX.BMenuBar-accessing. +* add_afterIndex_ <1>: BLOX.BList-accessing. +* add_afterIndex_: BLOX.BDropDown-list box accessing. +* add_element_afterIndex_ <1>: BLOX.BList-accessing. +* add_element_afterIndex_: BLOX.BDropDown-list box accessing. +* addButton_receiver_index_: BLOX.BDialog-accessing. +* addButton_receiver_message_: BLOX.BDialog-accessing. +* addButton_receiver_message_argument_: BLOX.BDialog-accessing. +* addChild_ <1>: BLOX.BWidget-customization. +* addChild_ <2>: BLOX.BPopupWindow-geometry management. +* addChild_ <3>: BLOX.Blox-customization. +* addChild_: BLOX.BCanvas-geometry management. +* addEventSet_: BLOX.BEventTarget-intercepting events. +* addLast_ <1>: BLOX.BList-accessing. +* addLast_: BLOX.BDropDown-list box accessing. +* addLast_element_ <1>: BLOX.BList-accessing. +* addLast_element_: BLOX.BDropDown-list box accessing. +* addLine: BLOX.BMenu-callback registration. +* addMenuItemFor_notifying_: BLOX.BMenu-callback registration. +* address <1>: TCP.Socket-accessing. +* address <2>: TCP.ServerSocket-accessing. +* address <3>: TCP.DatagramSocket-accessing. +* address <4>: TCP.Datagram-accessing. +* address: TCP.AbstractSocket-accessing. +* address_: TCP.Datagram-accessing. +* addressClass <1>: TCP.UDPSocketImpl class-implementation. +* addressClass <2>: TCP.TCPSocketImpl class-implementation. +* addressClass <3>: TCP.OOBSocketImpl class-implementation. +* addressClass <4>: TCP.IPAddress-accessing. +* addressClass <5>: TCP.ICMPSocketImpl class-implementation. +* addressClass <6>: TCP.AbstractSocketImpl-socket operations. +* addressClass: TCP.AbstractSocketImpl class-abstract. +* addressFamily: TCP.SocketAddress class-accessing. +* addressSize: TCP.IPAddress class-constants. +* alignment: BLOX.BLabel-accessing. +* alignment_: BLOX.BLabel-accessing. +* allByName_: TCP.SocketAddress class-host name lookup. +* allFormatsExample: I18N.LcTime-tests. +* anyLocalAddress: TCP.SocketAddress class-accessing. +* asByteArray <1>: TCP.SocketAddress-accessing. +* asByteArray: TCP.IPAddress-accessing. +* asPrimitiveWidget <1>: BLOX.BPrimitive-accessing. +* asPrimitiveWidget <2>: BLOX.BMenuObject-accessing. +* asPrimitiveWidget <3>: BLOX.Blox-widget protocol. +* asPrimitiveWidget: BLOX.BExtended-accessing. +* associationAt_ <1>: BLOX.BList-accessing. +* associationAt_: BLOX.BDropDown-list box accessing. +* at_ <1>: I18N.LcMessagesDomain-querying. +* at_ <2>: BLOX.Blox class-utility. +* at_ <3>: BLOX.BList-accessing. +* at_ <4>: BLOX.BDropDown-list box accessing. +* at_: BLOX.BCanvas-widget protocol. +* at_cache_: TCP.SocketAddress class-accessing. +* at_plural_with_: I18N.LcMessagesDomain-querying. +* at_put_: I18N.LcMessagesDomain-querying. +* atEnd <1>: I18N.Encoders.ToUTF7-conversion. +* atEnd <2>: I18N.Encoders.SplitUCS4LE-stream operation. +* atEnd <3>: I18N.Encoders.SplitUCS4BE-stream operation. +* atEnd <4>: I18N.Encoders.Iconv-stream operation. +* atEnd <5>: I18N.Encoders.FromUTF7-converting. +* atEnd <6>: I18N.Encoder-stream operations. +* atEnd <7>: TCP.Socket-stream protocol. +* atEnd <8>: TCP.ReadBuffer-buffer handling. +* atEnd: TCP.AbstractSocket-stream protocol. +* atEndOfInput: I18N.Encoder-stream operations. +* atMouse: BLOX.Blox class-utility. +* available <1>: TCP.Socket-stream protocol. +* available: TCP.AbstractSocket-accessing. +* backgroundColor <1>: BLOX.BTextAttributes-setting attributes. +* backgroundColor <2>: BLOX.BText-accessing. +* backgroundColor <3>: BLOX.BProgress-accessing. +* backgroundColor <4>: BLOX.BMenuObject-accessing. +* backgroundColor <5>: BLOX.BList-accessing. +* backgroundColor <6>: BLOX.BLabel-accessing. +* backgroundColor <7>: BLOX.BImage-accessing. +* backgroundColor <8>: BLOX.BForm-accessing. +* backgroundColor <9>: BLOX.BEdit-accessing. +* backgroundColor <10>: BLOX.BDropDown-accessing. +* backgroundColor <11>: BLOX.BCanvas-accessing. +* backgroundColor: BLOX.BButton-accessing. +* backgroundColor_ <1>: BLOX.BTextAttributes-setting attributes. +* backgroundColor_ <2>: BLOX.BTextAttributes class-instance-creation shortcuts. +* backgroundColor_ <3>: BLOX.BText-accessing. +* backgroundColor_ <4>: BLOX.BProgress-accessing. +* backgroundColor_ <5>: BLOX.BMenuObject-accessing. +* backgroundColor_ <6>: BLOX.BList-accessing. +* backgroundColor_ <7>: BLOX.BLabel-accessing. +* backgroundColor_ <8>: BLOX.BImage-accessing. +* backgroundColor_ <9>: BLOX.BForm-accessing. +* backgroundColor_ <10>: BLOX.BEdit-accessing. +* backgroundColor_ <11>: BLOX.BDropDownList-accessing. +* backgroundColor_ <12>: BLOX.BDropDownEdit-accessing. +* backgroundColor_ <13>: BLOX.BDropDown-accessing. +* backgroundColor_ <14>: BLOX.BCanvas-accessing. +* backgroundColor_: BLOX.BButton-accessing. +* balloonDelayTime: BLOX.BBalloon class-accessing. +* balloonDelayTime_: BLOX.BBalloon class-accessing. +* basicAddChild_: BLOX.Blox-customization. +* basicPrint_on_: I18N.LcNumeric-printing. +* beep: BLOX.Blox class-utility. +* between_and_do_: BLOX.BCanvas-widget protocol. +* bindTo_port_: TCP.AbstractSocketImpl-socket operations. +* black <1>: BLOX.BTextAttributes-colors. +* black: BLOX.BTextAttributes class-instance-creation shortcuts. +* blank: BLOX.BImage-image management. +* blox <1>: BLOX.Gui-accessing. +* blox: BLOX.BCanvasObject-accessing. +* blox_: BLOX.Gui-accessing. +* blue <1>: BLOX.BTextAttributes-colors. +* blue: BLOX.BTextAttributes class-instance-creation shortcuts. +* borderWidth: BLOX.BWidget-accessing. +* borderWidth_: BLOX.BWidget-accessing. +* boundingBox <1>: BLOX.BWidget-geometry management. +* boundingBox <2>: BLOX.BPolyline-accessing. +* boundingBox <3>: BLOX.BCanvasObject-accessing. +* boundingBox <4>: BLOX.BCanvas-widget protocol. +* boundingBox: BLOX.BBoundingBox-accessing. +* boundingBox_: BLOX.BWidget-geometry management. +* bringToTop: BLOX.BWidget-widget protocol. +* bufferContents <1>: TCP.Socket-stream protocol. +* bufferContents: TCP.ReadBuffer-buffer handling. +* bufferSize <1>: TCP.DatagramSocketImpl-accessing. +* bufferSize: TCP.DatagramSocket-accessing. +* bufferSize_ <1>: TCP.DatagramSocketImpl-accessing. +* bufferSize_: TCP.DatagramSocket-accessing. +* byName_: TCP.SocketAddress class-host name lookup. +* callback <1>: BLOX.BWindow-accessing. +* callback <2>: BLOX.BText-accessing. +* callback <3>: BLOX.BMenuObject-callback. +* callback <4>: BLOX.BList-widget protocol. +* callback <5>: BLOX.BEdit-accessing. +* callback <6>: BLOX.BDropDown-callbacks. +* callback <7>: BLOX.BButtonLike-accessing. +* callback: BLOX.BButton-accessing. +* callback_message_ <1>: BLOX.BWindow-accessing. +* callback_message_ <2>: BLOX.BToggle-accessing. +* callback_message_ <3>: BLOX.BText-accessing. +* callback_message_ <4>: BLOX.BRadioButton-accessing. +* callback_message_ <5>: BLOX.BMenuObject-callback. +* callback_message_ <6>: BLOX.BList-widget protocol. +* callback_message_ <7>: BLOX.BEdit-accessing. +* callback_message_ <8>: BLOX.BDropDownList-callbacks. +* callback_message_ <9>: BLOX.BDropDown-callbacks. +* callback_message_ <10>: BLOX.BButtonLike-accessing. +* callback_message_: BLOX.BButton-accessing. +* callback_message_argument_: BLOX.BMenuObject-callback. +* callback_using_: BLOX.BMenu-callback registration. +* canRead: TCP.OOBSocketImpl-implementation. +* cap <1>: BLOX.BPolyline-accessing. +* cap: BLOX.BLine-accessing. +* cap_ <1>: BLOX.BPolyline-accessing. +* cap_: BLOX.BLine-accessing. +* category <1>: I18N.LocaleData class-accessing. +* category <2>: I18N.LcTime class-accessing. +* category <3>: I18N.LcNumeric class-accessing. +* category <4>: I18N.LcMonetary class-accessing. +* category: I18N.LcMessages class-accessing. +* center <1>: BLOX.BWindow-widget protocol. +* center <2>: BLOX.BTextAttributes-setting attributes. +* center <3>: BLOX.BTextAttributes class-instance-creation shortcuts. +* center <4>: BLOX.BDialog-widget protocol. +* center: BLOX.BBoundingBox-accessing. +* center_extent_: BLOX.BBoundingBox-accessing. +* centerIn_ <1>: BLOX.BWindow-widget protocol. +* centerIn_: BLOX.BDialog-widget protocol. +* charset: I18N.LocaleData-accessing. +* charsInLine_: BLOX.BText-position & lines. +* checkPeriod: TCP.AbstractSocket class-timed-out operations. +* checkPeriod_: TCP.AbstractSocket class-timed-out operations. +* child_ <1>: I18N.RTENegationNode-computing. +* child_: I18N.RTENegationNode class-initializing. +* child_height_ <1>: BLOX.BWidget-geometry management. +* child_height_ <2>: BLOX.BText-geometry management. +* child_height_ <3>: BLOX.BPopupWindow-geometry management. +* child_height_: BLOX.BCanvas-geometry management. +* child_heightOffset_ <1>: BLOX.BWidget-geometry management. +* child_heightOffset_ <2>: BLOX.BText-geometry management. +* child_heightOffset_ <3>: BLOX.BPopupWindow-geometry management. +* child_heightOffset_: BLOX.BCanvas-geometry management. +* child_stretch_: BLOX.BWidget-geometry management. +* child_width_ <1>: BLOX.BWidget-geometry management. +* child_width_ <2>: BLOX.BText-geometry management. +* child_width_ <3>: BLOX.BPopupWindow-geometry management. +* child_width_: BLOX.BCanvas-geometry management. +* child_widthOffset_ <1>: BLOX.BWidget-geometry management. +* child_widthOffset_ <2>: BLOX.BText-geometry management. +* child_widthOffset_ <3>: BLOX.BPopupWindow-geometry management. +* child_widthOffset_: BLOX.BCanvas-geometry management. +* child_x_ <1>: BLOX.BWidget-geometry management. +* child_x_ <2>: BLOX.BText-geometry management. +* child_x_ <3>: BLOX.BPopupWindow-geometry management. +* child_x_: BLOX.BCanvas-geometry management. +* child_xOffset_ <1>: BLOX.BWidget-geometry management. +* child_xOffset_ <2>: BLOX.BText-geometry management. +* child_xOffset_ <3>: BLOX.BPopupWindow-geometry management. +* child_xOffset_: BLOX.BCanvas-geometry management. +* child_y_ <1>: BLOX.BWidget-geometry management. +* child_y_ <2>: BLOX.BText-geometry management. +* child_y_ <3>: BLOX.BPopupWindow-geometry management. +* child_y_: BLOX.BCanvas-geometry management. +* child_yOffset_ <1>: BLOX.BWidget-geometry management. +* child_yOffset_ <2>: BLOX.BText-geometry management. +* child_yOffset_ <3>: BLOX.BPopupWindow-geometry management. +* child_yOffset_: BLOX.BCanvas-geometry management. +* childrenCount: BLOX.Blox-widget protocol. +* childrenDo_: BLOX.Blox-widget protocol. +* chooseColor_label_default_: BLOX.BDialog class-prompters. +* chooseFileToOpen_label_default_defaultExtension_types_: BLOX.BDialog class-prompters. +* chooseFileToSave_label_default_defaultExtension_types_: BLOX.BDialog class-prompters. +* clearClipboard: BLOX.Blox class-utility. +* clipboard: BLOX.Blox class-utility. +* clipboard_: BLOX.Blox class-utility. +* close <1>: TCP.Socket-stream protocol. +* close: TCP.AbstractSocket-accessing. +* closed: BLOX.BPolyline-accessing. +* closed_: BLOX.BPolyline-accessing. +* color <1>: BLOX.BColorButton-accessing. +* color: BLOX.BCanvasObject-accessing. +* color_ <1>: BLOX.BColorButton-accessing. +* color_: BLOX.BCanvasObject-accessing. +* condition_ifTrue_ifFalse_ <1>: I18N.RTEAlternativeNode-computing. +* condition_ifTrue_ifFalse_: I18N.RTEAlternativeNode class-compiling. +* connected: BLOX.BViewport-accessing. +* connectTo_port_ <1>: TCP.SocketImpl-socket operations. +* connectTo_port_: TCP.AbstractSocketImpl-accessing. +* contents <1>: BLOX.BText-accessing. +* contents <2>: BLOX.BEdit-accessing. +* contents: BLOX.BDialog-accessing. +* contents_ <1>: BLOX.BText-accessing. +* contents_ <2>: BLOX.BList-accessing. +* contents_ <3>: BLOX.BEdit-accessing. +* contents_ <4>: BLOX.BDropDown-list box accessing. +* contents_: BLOX.BDialog-accessing. +* contents_elements_ <1>: BLOX.BList-accessing. +* contents_elements_: BLOX.BDropDown-list box accessing. +* copyInto_ <1>: BLOX.BEmbeddedImage-accessing. +* copyInto_: BLOX.BCanvasObject-accessing. +* copyObject: BLOX.BCanvasObject-accessing. +* corner: BLOX.BBoundingBox-accessing. +* corner_: BLOX.BBoundingBox-accessing. +* create <1>: BLOX.BWidget-customization. +* create <2>: BLOX.BExtended-customization. +* create: BLOX.BCanvasObject-widget protocol. +* createColor_green_blue_: BLOX.Blox class-utility. +* createColor_magenta_yellow_: BLOX.Blox class-utility. +* createColor_magenta_yellow_black_: BLOX.Blox class-utility. +* createColor_saturation_value_: BLOX.Blox class-utility. +* createCopy: BLOX.BCanvasObject-accessing. +* createCopyInto_: BLOX.BCanvasObject-accessing. +* created: BLOX.BCanvasObject-widget protocol. +* createList: BLOX.BDropDown-flexibility. +* createLocalAddress <1>: TCP.SocketAddress class-initialization. +* createLocalAddress: TCP.IPAddress class-initialization. +* createLoopbackHost <1>: TCP.SocketAddress class-initialization. +* createLoopbackHost: TCP.IPAddress class-initialization. +* createTextWidget: BLOX.BDropDown-flexibility. +* createUnknownAddress <1>: TCP.SocketAddress class-initialization. +* createUnknownAddress: TCP.IPAddress class-initialization. +* currentColumn: BLOX.BText-position & lines. +* currentLine: BLOX.BText-position & lines. +* currentPosition: BLOX.BText-position & lines. +* currentPosition_: BLOX.BText-position & lines. +* cursor: BLOX.BWidget-accessing. +* cursor_: BLOX.BWidget-accessing. +* cyan <1>: BLOX.BTextAttributes-colors. +* cyan: BLOX.BTextAttributes class-instance-creation shortcuts. +* darkCyan <1>: BLOX.BTextAttributes-colors. +* darkCyan: BLOX.BTextAttributes class-instance-creation shortcuts. +* darkGreen <1>: BLOX.BTextAttributes-colors. +* darkGreen: BLOX.BTextAttributes class-instance-creation shortcuts. +* darkMagenta <1>: BLOX.BTextAttributes-colors. +* darkMagenta: BLOX.BTextAttributes class-instance-creation shortcuts. +* data <1>: TCP.Datagram-accessing. +* data: BLOX.BEmbeddedImage-accessing. +* data_ <1>: TCP.Datagram-accessing. +* data_ <2>: TCP.Datagram class-instance creation. +* data_ <3>: BLOX.BImage-image management. +* data_: BLOX.BEmbeddedImage-accessing. +* data_address_port_: TCP.Datagram class-instance creation. +* deepCopy <1>: BLOX.Blox-basic. +* deepCopy: BLOX.BCanvasObject-accessing. +* default <1>: I18N.LocaleData class-accessing. +* default <2>: I18N.LocaleConventions class-accessing. +* default: I18N.Locale class-instance creation. +* defaultAddressClass: TCP.AbstractSocket class-defaults. +* defaultAddressClass_: TCP.AbstractSocket class-defaults. +* defaultBufferSize: TCP.DatagramSocket class-accessing. +* defaultBufferSize_: TCP.DatagramSocket class-accessing. +* defaultDatagramSocketImplClass: TCP.SocketAddress class-accessing. +* defaultDatagramSocketImplClass_: TCP.SocketAddress class-accessing. +* defaultHeight: BLOX.BForm-accessing. +* defaultHeight_: BLOX.BForm-accessing. +* defaultImplementationClass <1>: TCP.Socket class-accessing. +* defaultImplementationClass <2>: TCP.DatagramSocket class-accessing. +* defaultImplementationClass: TCP.AbstractSocket class-defaults. +* defaultPortAt_: TCP.Socket class-well known ports. +* defaultPortAt_ifAbsent_: TCP.Socket class-well known ports. +* defaultPortAt_put_: TCP.Socket class-well known ports. +* defaultQueueSize: TCP.ServerSocket class-instance creation. +* defaultRawSocketImplClass: TCP.SocketAddress class-accessing. +* defaultRawSocketImplClass_: TCP.SocketAddress class-accessing. +* defaults: I18N.LocaleData class-database. +* defaultStreamSocketImplClass: TCP.SocketAddress class-accessing. +* defaultStreamSocketImplClass_: TCP.SocketAddress class-accessing. +* defaultWidth: BLOX.BForm-accessing. +* defaultWidth_: BLOX.BForm-accessing. +* description <1>: I18N.InvalidSequenceError-accessing. +* description <2>: I18N.InvalidCharsetError-accessing. +* description: I18N.IncompleteSequenceError-accessing. +* destroy <1>: BLOX.BMenu-callback registration. +* destroy: BLOX.Blox-widget protocol. +* destroyed <1>: BLOX.BRadioGroup-widget protocol. +* destroyed <2>: BLOX.BImage-widget protocol. +* destroyed <3>: BLOX.BEdit-widget protocol. +* destroyed <4>: BLOX.BDialog-widget protocol. +* destroyed: BLOX.BCanvas-widget protocol. +* directory: BLOX.BImage class-small icons. +* dispatchEvents: BLOX.Blox class-event dispatching. +* dispatchEvents_: BLOX.Blox class-event dispatching. +* displayHeight: BLOX.BImage-accessing. +* displayHeight_: BLOX.BImage-accessing. +* displayWidth: BLOX.BImage-accessing. +* displayWidth_: BLOX.BImage-accessing. +* dither: BLOX.BImage-image management. +* do_ <1>: BLOX.BList-accessing. +* do_ <2>: BLOX.BDropDown-list box accessing. +* do_: BLOX.BCanvas-widget protocol. +* domain_: I18N.LcMessages-opening MO files. +* domain_localeDirectory_: I18N.LcMessages-opening MO files. +* downArrow: BLOX.BImage class-arrows. +* drawingArea: BLOX.Blox-widget protocol. +* dropdown: BLOX.BDropDown-widget protocol. +* droppedRows: BLOX.BDropDown-accessing. +* droppedRows_: BLOX.BDropDown-accessing. +* dropRectangle: BLOX.BDropDown-widget protocol. +* effect: BLOX.BWidget-accessing. +* effect_: BLOX.BWidget-accessing. +* elements: BLOX.BList-accessing. +* elements_ <1>: BLOX.BList-accessing. +* elements_: BLOX.BDropDown-list box accessing. +* emacsLike: BLOX.BText class-accessing. +* emacsLike_: BLOX.BText class-accessing. +* empty <1>: BLOX.BMenu-callback registration. +* empty: BLOX.BCanvas-widget protocol. +* enabled: BLOX.Blox-widget protocol. +* enabled_: BLOX.Blox-widget protocol. +* endAngle: BLOX.BArc-accessing. +* endAngle_: BLOX.BArc-accessing. +* ensureReadable <1>: TCP.OOBSocketImpl-implementation. +* ensureReadable: TCP.AbstractSocketImpl-asynchronous operations. +* ensureWriteable: TCP.AbstractSocketImpl-asynchronous operations. +* events: BLOX.BTextAttributes-setting attributes. +* events_ <1>: BLOX.BTextAttributes-setting attributes. +* events_: BLOX.BTextAttributes class-instance-creation shortcuts. +* exclaim: BLOX.BImage class-icons. +* exists: BLOX.Blox-widget protocol. +* extent <1>: BLOX.BWidget-geometry management. +* extent: BLOX.BBoundingBox-accessing. +* extent_ <1>: BLOX.BWidget-geometry management. +* extent_: BLOX.BBoundingBox-accessing. +* extraSpace: BLOX.BCanvas-widget protocol. +* extraSpace_: BLOX.BCanvas-widget protocol. +* file: BLOX.BImage class-small icons. +* fileFormatDescription: I18N.LcMessagesMoFileVersion0 class-documentation. +* fileName: I18N.FileStreamSegment-basic. +* fileOp_: TCP.AbstractSocketImpl-socket operations. +* fileOp_ifFail_: TCP.AbstractSocketImpl-socket operations. +* fileOp_with_: TCP.AbstractSocketImpl-socket operations. +* fileOp_with_ifFail_: TCP.AbstractSocketImpl-socket operations. +* fileOp_with_with_: TCP.AbstractSocketImpl-socket operations. +* fileOp_with_with_ifFail_: TCP.AbstractSocketImpl-socket operations. +* fileOp_with_with_with_: TCP.AbstractSocketImpl-socket operations. +* fileOp_with_with_with_ifFail_: TCP.AbstractSocketImpl-socket operations. +* fill <1>: TCP.Socket-stream protocol. +* fill: TCP.ReadBuffer-buffer handling. +* fillBlock_: TCP.ReadBuffer-buffer handling. +* fillChord: BLOX.BArc-accessing. +* filledColor: BLOX.BProgress-accessing. +* filledColor_: BLOX.BProgress-accessing. +* fillFrom_extent_color_: BLOX.BImage-image management. +* fillFrom_to_color_: BLOX.BImage-image management. +* fillRectangle_color_: BLOX.BImage-image management. +* fillSlice: BLOX.BArc-accessing. +* flush <1>: I18N.LocaleData class-accessing. +* flush <2>: I18N.Locale class-instance creation. +* flush <3>: I18N.LcMessagesMoFileVersion0-flushing the cache. +* flush <4>: I18N.LcMessagesDomain-handling the cache. +* flush <5>: I18N.Encoders.ToUTF7-conversion. +* flush <6>: I18N.Encoders.SplitUCS4LE-stream operation. +* flush <7>: I18N.Encoders.SplitUCS4BE-stream operation. +* flush <8>: I18N.Encoders.FromUTF7-converting. +* flush <9>: TCP.WriteBuffer-buffer handling. +* flush <10>: TCP.SocketAddress class-initialization. +* flush <11>: TCP.Socket-stream protocol. +* flush: TCP.AbstractSocket-accessing. +* flushBlock_: TCP.WriteBuffer-buffer handling. +* font <1>: BLOX.BTextAttributes-setting attributes. +* font <2>: BLOX.BText-accessing. +* font <3>: BLOX.BList-accessing. +* font <4>: BLOX.BLabel-accessing. +* font <5>: BLOX.BEmbeddedText-accessing. +* font <6>: BLOX.BEdit-accessing. +* font <7>: BLOX.BDropDown-accessing. +* font: BLOX.BButton-accessing. +* font_ <1>: BLOX.BTextAttributes-setting attributes. +* font_ <2>: BLOX.BTextAttributes class-instance-creation shortcuts. +* font_ <3>: BLOX.BText-accessing. +* font_ <4>: BLOX.BList-accessing. +* font_ <5>: BLOX.BLabel-accessing. +* font_ <6>: BLOX.BEmbeddedText-accessing. +* font_ <7>: BLOX.BEdit-accessing. +* font_ <8>: BLOX.BDropDownList-accessing. +* font_ <9>: BLOX.BDropDownEdit-accessing. +* font_ <10>: BLOX.BDropDown-accessing. +* font_: BLOX.BButton-accessing. +* fontHeight_: BLOX.Blox-widget protocol. +* fonts: BLOX.Blox class-utility. +* fontWidth_: BLOX.Blox-widget protocol. +* foregroundColor <1>: BLOX.BTextAttributes-setting attributes. +* foregroundColor <2>: BLOX.BText-accessing. +* foregroundColor <3>: BLOX.BProgress-accessing. +* foregroundColor <4>: BLOX.BMenuObject-accessing. +* foregroundColor <5>: BLOX.BList-accessing. +* foregroundColor <6>: BLOX.BLabel-accessing. +* foregroundColor <7>: BLOX.BImage-accessing. +* foregroundColor <8>: BLOX.BEdit-accessing. +* foregroundColor <9>: BLOX.BDropDown-accessing. +* foregroundColor <10>: BLOX.BCanvas-accessing. +* foregroundColor: BLOX.BButton-accessing. +* foregroundColor_ <1>: BLOX.BTextAttributes-setting attributes. +* foregroundColor_ <2>: BLOX.BTextAttributes class-instance-creation shortcuts. +* foregroundColor_ <3>: BLOX.BText-accessing. +* foregroundColor_ <4>: BLOX.BProgress-accessing. +* foregroundColor_ <5>: BLOX.BMenuObject-accessing. +* foregroundColor_ <6>: BLOX.BList-accessing. +* foregroundColor_ <7>: BLOX.BLabel-accessing. +* foregroundColor_ <8>: BLOX.BImage-accessing. +* foregroundColor_ <9>: BLOX.BEdit-accessing. +* foregroundColor_ <10>: BLOX.BDropDownList-accessing. +* foregroundColor_ <11>: BLOX.BDropDownEdit-accessing. +* foregroundColor_ <12>: BLOX.BDropDown-accessing. +* foregroundColor_ <13>: BLOX.BCanvas-accessing. +* foregroundColor_: BLOX.BButton-accessing. +* from: BLOX.BArc-accessing. +* from_: BLOX.BArc-accessing. +* from_to_: BLOX.BArc-accessing. +* fromArray_: TCP.IPAddress class-instance creation. +* fromBytes_: TCP.IPAddress class-instance creation. +* fromSockAddr_port_ <1>: TCP.SocketAddress class-abstract. +* fromSockAddr_port_: TCP.IPAddress class-instance creation. +* fromString_ <1>: I18N.LocaleData class-accessing. +* fromString_ <2>: I18N.LocaleConventions class-accessing. +* fromString_ <3>: I18N.Locale class-instance creation. +* fromString_: TCP.IPAddress class-instance creation. +* gamma: BLOX.BImage-accessing. +* gamma_: BLOX.BImage-accessing. +* get: TCP.Datagram-accessing. +* getPeerName: TCP.SocketImpl-socket operations. +* getSelection: BLOX.BText-accessing. +* getSockName: TCP.AbstractSocketImpl-socket operations. +* getThrough_: TCP.Datagram-accessing. +* gnu: BLOX.BImage class-GNU. +* gotoLine_end_: BLOX.BText-position & lines. +* grayOut: BLOX.BCanvasObject-accessing. +* green <1>: BLOX.BTextAttributes-colors. +* green: BLOX.BTextAttributes class-instance-creation shortcuts. +* hash: TCP.SocketAddress-accessing. +* hasSelection: BLOX.BEdit-widget protocol. +* height <1>: BLOX.BWindow-widget protocol. +* height: BLOX.BWidget-geometry management. +* height_ <1>: BLOX.BWindow-widget protocol. +* height_: BLOX.BWidget-geometry management. +* heightAbsolute <1>: BLOX.BWindow-widget protocol. +* heightAbsolute: BLOX.BWidget-geometry management. +* heightChild_ <1>: BLOX.BWidget-geometry management. +* heightChild_ <2>: BLOX.BText-geometry management. +* heightChild_ <3>: BLOX.BPopupWindow-geometry management. +* heightChild_: BLOX.BCanvas-geometry management. +* heightOffset: BLOX.BWidget-geometry management. +* heightOffset_ <1>: BLOX.BWindow-widget protocol. +* heightOffset_: BLOX.BWidget-geometry management. +* heightPixels_: BLOX.BWidget-geometry management. +* highlight_: BLOX.BList-widget protocol. +* highlightBackground <1>: BLOX.BList-accessing. +* highlightBackground: BLOX.BDropDown-accessing. +* highlightBackground_ <1>: BLOX.BList-accessing. +* highlightBackground_ <2>: BLOX.BDropDownList-accessing. +* highlightBackground_ <3>: BLOX.BDropDownEdit-accessing. +* highlightBackground_: BLOX.BDropDown-accessing. +* highlightForeground <1>: BLOX.BList-accessing. +* highlightForeground: BLOX.BDropDown-accessing. +* highlightForeground_ <1>: BLOX.BList-accessing. +* highlightForeground_ <2>: BLOX.BDropDownList-accessing. +* highlightForeground_ <3>: BLOX.BDropDownEdit-accessing. +* highlightForeground_: BLOX.BDropDown-accessing. +* horizontal: BLOX.BViewport-scrollbars. +* horizontal_: BLOX.BViewport-scrollbars. +* horizontalNeeded: BLOX.BViewport-scrollbars. +* horizontalShown: BLOX.BViewport-scrollbars. +* host: TCP.IPAddress-accessing. +* iconify: BLOX.BWindow-widget protocol. +* id: I18N.LocaleData-accessing. +* id_: I18N.LocaleData-initialization. +* id_on_: I18N.LcMessagesDomain class-opening MO files. +* image_: BLOX.BImage-image management. +* imageHeight: BLOX.BImage-image management. +* imageWidth: BLOX.BImage-image management. +* index <1>: BLOX.BList-accessing. +* index: BLOX.BDropDownList-list box accessing. +* index_: BLOX.BDropDown-list box accessing. +* indexAt_ <1>: BLOX.BText-position & lines. +* indexAt_: BLOX.BList-accessing. +* info: BLOX.BImage class-icons. +* initialize <1>: I18N.RunTimeExpression class-initializing. +* initialize <2>: I18N.LocaleData class-database. +* initialize <3>: I18N.LcMessagesMoFileVersion0 class-plurals. +* initialize <4>: I18N.Encoders.ToUTF7 class-initialization. +* initialize <5>: I18N.Encoders.FromUTF7 class-initialization. +* initialize <6>: I18N.EncodedStream class-initializing. +* initialize <7>: TCP.Socket class-well known ports. +* initialize <8>: TCP.IPAddress class-initialization. +* initialize <9>: TCP.DatagramSocket class-initialization. +* initialize: BLOX.BLabel class-initialization. +* initialize_ <1>: I18N.LocaleData-initialization. +* initialize_ <2>: BLOX.BWidget-customization. +* initialize_ <3>: BLOX.BEventSet-initializing. +* initialize_: BLOX.BBalloon-initializing. +* insertAtEnd_ <1>: BLOX.BText-inserting text. +* insertAtEnd_ <2>: BLOX.BEdit-widget protocol. +* insertAtEnd_: BLOX.BDropDownEdit-text accessing. +* insertAtEnd_attribute_: BLOX.BText-attributes. +* insertImage_: BLOX.BText-images. +* insertImage_at_: BLOX.BText-images. +* insertImageAtEnd_: BLOX.BText-images. +* insertSelectedText_: BLOX.BText-inserting text. +* insertText_ <1>: BLOX.BText-inserting text. +* insertText_: BLOX.BEdit-widget protocol. +* insertText_at_: BLOX.BText-inserting text. +* insertText_attribute_: BLOX.BText-attributes. +* insertTextSelection_: BLOX.BText-inserting text. +* inset_: BLOX.BWidget-geometry management. +* interface: TCP.MulticastSocket-instance creation. +* interface_: TCP.MulticastSocket-instance creation. +* invokeCallback <1>: BLOX.BWindow-accessing. +* invokeCallback <2>: BLOX.BToggle-accessing. +* invokeCallback <3>: BLOX.BText-inserting text. +* invokeCallback <4>: BLOX.BMenuObject-callback. +* invokeCallback <5>: BLOX.BList-widget protocol. +* invokeCallback <6>: BLOX.BEdit-widget protocol. +* invokeCallback <7>: BLOX.BDropDownList-callbacks. +* invokeCallback <8>: BLOX.BDropDown-callbacks. +* invokeCallback <9>: BLOX.BCheckMenuItem-accessing. +* invokeCallback <10>: BLOX.BButtonLike-accessing. +* invokeCallback: BLOX.BButton-accessing. +* invokeCallback_: BLOX.BDialog-widget protocol. +* ipMulticastIf <1>: TCP.UDPSocketImpl-multicasting. +* ipMulticastIf: TCP.MulticastSocketImpl-multicasting. +* ipMulticastIf_ <1>: TCP.UDPSocketImpl-multicasting. +* ipMulticastIf_: TCP.MulticastSocketImpl-multicasting. +* isActive: BLOX.BWidget-widget protocol. +* isCentered: BLOX.BTextAttributes-setting attributes. +* isDigitAddress_: TCP.SocketAddress class-accessing. +* isDropdownVisible: BLOX.BDropDown-widget protocol. +* isEmpty: TCP.ReadBuffer-buffer handling. +* isExternalStream: TCP.AbstractSocket-testing. +* isFull: TCP.ReadBuffer-buffer handling. +* isMapped: BLOX.BWindow-widget protocol. +* isMulticast: TCP.IPAddress-accessing. +* isOpen: TCP.AbstractSocket-accessing. +* isPeerAlive: TCP.Socket-stream protocol. +* isPosixLocale: I18N.LocaleData-accessing. +* isSelected_: BLOX.BList-accessing. +* isStruckout: BLOX.BTextAttributes-setting attributes. +* isUnderlined: BLOX.BTextAttributes-setting attributes. +* isWindow <1>: BLOX.BWindow-widget protocol. +* isWindow: BLOX.Blox-widget protocol. +* itemHeight: BLOX.BDropDown-flexibility. +* items: BLOX.BCanvas-widget protocol. +* join: BLOX.BPolyline-accessing. +* join_ <1>: TCP.UDPSocketImpl-multicasting. +* join_ <2>: TCP.MulticastSocketImpl-multicasting. +* join_ <3>: TCP.MulticastSocket-instance creation. +* join_: BLOX.BPolyline-accessing. +* justify: BLOX.BEmbeddedText-accessing. +* justify_: BLOX.BEmbeddedText-accessing. +* label <1>: BLOX.BWindow-accessing. +* label <2>: BLOX.BMenuItem-accessing. +* label <3>: BLOX.BMenu-accessing. +* label <4>: BLOX.BLabel-accessing. +* label: BLOX.BButton-accessing. +* label_ <1>: BLOX.BWindow-accessing. +* label_ <2>: BLOX.BMenuItem-accessing. +* label_ <3>: BLOX.BMenu-accessing. +* label_ <4>: BLOX.BLabel-accessing. +* label_: BLOX.BButton-accessing. +* labelAt_ <1>: BLOX.BList-accessing. +* labelAt_: BLOX.BDropDown-list box accessing. +* labels: BLOX.BList-accessing. +* labelsDo_ <1>: BLOX.BList-accessing. +* labelsDo_: BLOX.BDropDown-list box accessing. +* language: I18N.LocaleData-accessing. +* language_: I18N.LocaleData class-accessing. +* language_territory_: I18N.LocaleData class-accessing. +* language_territory_charset_: I18N.LocaleData class-accessing. +* languageDirectory <1>: I18N.LocaleData-accessing. +* languageDirectory: I18N.LcMessages-accessing. +* languageDirectory_ <1>: I18N.LocaleData-accessing. +* languageDirectory_: I18N.LcMessages-accessing. +* languages: I18N.LocaleData class-database. +* leave_ <1>: TCP.UDPSocketImpl-multicasting. +* leave_ <2>: TCP.MulticastSocketImpl-multicasting. +* leave_: TCP.MulticastSocket-instance creation. +* left_top_right_bottom_: BLOX.BWidget-geometry management. +* leftArrow: BLOX.BImage class-arrows. +* lhs: I18N.RTEBinaryNode-compiling. +* lhs_op_rhs_ <1>: I18N.RTEBinaryNode-computing. +* lhs_op_rhs_: I18N.RTEBinaryNode class-compiling. +* lineAt_: BLOX.BText-position & lines. +* lineFrom_extent_color_: BLOX.BImage-image management. +* lineFrom_to_color_: BLOX.BImage-image management. +* lineFrom_toX_color_: BLOX.BImage-image management. +* lineFrom_toY_color_: BLOX.BImage-image management. +* lineInside_color_: BLOX.BImage-image management. +* listCallback: BLOX.BDropDown-flexibility. +* listen_: TCP.AbstractSocketImpl-socket operations. +* listSelectAt_: BLOX.BDropDown-flexibility. +* listText: BLOX.BDropDown-flexibility. +* local_port_: TCP.DatagramSocket class-instance creation. +* localAddress <1>: TCP.AbstractSocketImpl-accessing. +* localAddress: TCP.AbstractSocket-accessing. +* localHostName: TCP.SocketAddress class-accessing. +* localPort <1>: TCP.AbstractSocketImpl-accessing. +* localPort: TCP.AbstractSocket-accessing. +* loop: BLOX.BDialog-widget protocol. +* loopbackHost: TCP.SocketAddress class-accessing. +* loopbackTest: TCP.Socket class-tests. +* loopbackTest_: TCP.Socket class-tests. +* lower: BLOX.BCanvasObject-widget protocol. +* magenta <1>: BLOX.BTextAttributes-colors. +* magenta: BLOX.BTextAttributes class-instance-creation shortcuts. +* make_: BLOX.Blox-creating children. +* make_on_: BLOX.Blox-creating children. +* makeChild_on_: BLOX.Blox-creating children. +* map <1>: BLOX.BWindow-widget protocol. +* map: BLOX.BTransientWindow-widget protocol. +* mapPoint_: BLOX.BCanvas-widget protocol. +* menu_: BLOX.BWindow-accessing. +* messages: I18N.Locale-subobjects. +* microTest: TCP.Socket class-tests. +* modalMap: BLOX.BWindow-widget protocol. +* mode: BLOX.BList-accessing. +* mode_: BLOX.BList-accessing. +* monetary: I18N.Locale-subobjects. +* monetaryIso: I18N.Locale-subobjects. +* mousePointer: BLOX.Blox class-utility. +* moveBy_: BLOX.BBoundingBox-accessing. +* n_: I18N.RTELiteralNode-computing. +* name: TCP.SocketAddress-accessing. +* network: TCP.IPAddress-accessing. +* new <1>: I18N.LocaleData class-accessing. +* new <2>: TCP.IPAddress class-instance creation. +* new <3>: TCP.DatagramSocket class-instance creation. +* new <4>: TCP.AbstractSocketImpl class-socket creation. +* new <5>: TCP.AbstractSocket class-instance creation. +* new <6>: BLOX.BWindow class-instance creation. +* new <7>: BLOX.BWidget class-popups. +* new <8>: BLOX.BTransientWindow class-instance creation. +* new <9>: BLOX.BTextBindings class-instance creation. +* new <10>: BLOX.Blox class-instance creation. +* new <11>: BLOX.BEventSet class-initializing. +* new: BLOX.BCanvasObject class-instance creation. +* new_ <1>: TCP.AbstractSocket class-instance creation. +* new_ <2>: BLOX.BWindow class-instance creation. +* new_ <3>: BLOX.BTransientWindow class-instance creation. +* new_ <4>: BLOX.BMenuItem class-instance creation. +* new_ <5>: BLOX.Blox class-instance creation. +* new_ <6>: BLOX.BEventSet class-initializing. +* new_ <7>: BLOX.BDialog class-instance creation. +* new_ <8>: BLOX.BCheckMenuItem class-instance creation. +* new_: BLOX.BCanvasObject class-instance creation. +* new_contents_: BLOX.BEdit class-instance creation. +* new_data_: BLOX.BImage class-instance creation. +* new_image_: BLOX.BImage class-instance creation. +* new_in_: BLOX.BTransientWindow class-instance creation. +* new_label_ <1>: BLOX.BMenuItem class-instance creation. +* new_label_ <2>: BLOX.BMenu class-instance creation. +* new_label_ <3>: BLOX.BLabel class-instance creation. +* new_label_ <4>: BLOX.BDialog class-instance creation. +* new_label_: BLOX.BButton class-instance creation. +* new_label_prompt_: BLOX.BDialog class-instance creation. +* new_size_: BLOX.BImage class-instance creation. +* newPrimitive: BLOX.BExtended-customization. +* newRawSocket: TCP.SocketAddress class-initialization. +* newReadOnly_: BLOX.BText class-instance creation. +* next <1>: I18N.Encoders.ToUTF7-conversion. +* next <2>: I18N.Encoders.SplitUCS4LE-stream operation. +* next <3>: I18N.Encoders.SplitUCS4BE-stream operation. +* next <4>: I18N.Encoders.Iconv-stream operation. +* next <5>: I18N.Encoders.FromUTF7-converting. +* next <6>: I18N.Encoders.ComposeUCS4LE-stream operation. +* next <7>: I18N.Encoders.ComposeUCS4BE-stream operation. +* next <8>: I18N.Encoder-stream operations. +* next <9>: TCP.Socket-stream protocol. +* next <10>: TCP.DatagramSocketImpl-socket operations. +* next <11>: TCP.DatagramSocket-accessing. +* next: TCP.AbstractSocket-stream protocol. +* next_: TCP.Socket-stream protocol. +* nextFrom_port_: TCP.DatagramSocket-direct operations. +* nextHunk: TCP.Socket-stream protocol. +* nextInput: I18N.Encoder-stream operations. +* nextPut_ <1>: TCP.Socket-stream protocol. +* nextPut_ <2>: TCP.DatagramSocketImpl-socket operations. +* nextPut_ <3>: TCP.DatagramSocket-accessing. +* nextPut_ <4>: TCP.AbstractSocket-stream protocol. +* nextPut_ <5>: BLOX.BText-inserting text. +* nextPut_: BLOX.BEdit-widget protocol. +* nextPut_timeToLive_: TCP.MulticastSocket-instance creation. +* nextPutAll_ <1>: TCP.Socket-stream protocol. +* nextPutAll_ <2>: BLOX.BText-inserting text. +* nextPutAll_: BLOX.BEdit-widget protocol. +* nl <1>: BLOX.BText-inserting text. +* nl: BLOX.BEdit-widget protocol. +* notEmpty: TCP.ReadBuffer-buffer handling. +* numberOfLines: BLOX.BText-position & lines. +* numberOfStrings <1>: BLOX.BList-accessing. +* numberOfStrings: BLOX.BDropDown-list box accessing. +* numeric: I18N.Locale-subobjects. +* object_address_port_: TCP.Datagram class-instance creation. +* object_objectDumper_address_port_: TCP.Datagram class-instance creation. +* on_ <1>: I18N.RunTimeExpression class-instance creation. +* on_: TCP.ReadBuffer class-instance creation. +* on_from_: I18N.EncodedStream class-instance creation. +* on_from_to_ <1>: I18N.Encoder class-instance creation. +* on_from_to_: I18N.EncodedStream class-instance creation. +* on_to_: I18N.EncodedStream class-instance creation. +* onAsciiKeyEventSend_to_: BLOX.BEventTarget-intercepting events. +* onDestroySend_to_: BLOX.BEventTarget-intercepting events. +* onFocusEnterEventSend_to_: BLOX.BEventTarget-intercepting events. +* onFocusLeaveEventSend_to_: BLOX.BEventTarget-intercepting events. +* onKeyEvent_send_to_: BLOX.BEventTarget-intercepting events. +* onKeyEventSend_to_: BLOX.BEventTarget-intercepting events. +* onKeyUpEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseDoubleEvent_send_to_: BLOX.BEventTarget-intercepting events. +* onMouseDoubleEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseDownEvent_send_to_: BLOX.BEventTarget-intercepting events. +* onMouseDownEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseEnterEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseLeaveEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseMoveEvent_send_to_: BLOX.BEventTarget-intercepting events. +* onMouseMoveEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseTripleEvent_send_to_: BLOX.BEventTarget-intercepting events. +* onMouseTripleEventSend_to_: BLOX.BEventTarget-intercepting events. +* onMouseUpEvent_send_to_: BLOX.BEventTarget-intercepting events. +* onMouseUpEventSend_to_: BLOX.BEventTarget-intercepting events. +* onResizeSend_to_: BLOX.BEventTarget-intercepting events. +* op: I18N.RTEBinaryNode-compiling. +* optionAt_level_put_: TCP.AbstractSocketImpl-socket options. +* optionAt_level_size_: TCP.AbstractSocketImpl-socket options. +* origin: BLOX.BBoundingBox-accessing. +* origin_: BLOX.BBoundingBox-accessing. +* origin_corner_: BLOX.BBoundingBox-accessing. +* origin_extent_: BLOX.BBoundingBox-accessing. +* outlineColor <1>: BLOX.BRectangle-accessing. +* outlineColor: BLOX.BPolyline-accessing. +* outlineColor_ <1>: BLOX.BRectangle-accessing. +* outlineColor_: BLOX.BPolyline-accessing. +* outOfBand: TCP.Socket-out-of-band data. +* outOfBandImplClass <1>: TCP.TCPSocketImpl-implementation. +* outOfBandImplClass: TCP.SocketImpl-abstract. +* parent: BLOX.Blox-widget protocol. +* parseExpression_: I18N.RunTimeExpression class-compiling. +* parseFrom_: I18N.RTELiteralNode class-initializing. +* parseOperand_: I18N.RunTimeExpression class-compiling. +* parseOperator_: I18N.RunTimeExpression class-compiling. +* pastEnd: TCP.ReadBuffer-buffer handling. +* peek <1>: TCP.Socket-stream protocol. +* peek <2>: TCP.DatagramSocketImpl-socket operations. +* peek: TCP.DatagramSocket-accessing. +* peek_ <1>: TCP.DatagramSocketImpl-socket operations. +* peek_: TCP.DatagramSocket-accessing. +* peekFor_: TCP.Socket-stream protocol. +* platform: BLOX.Blox class-utility. +* pluralExpressionFor_ifAbsent_: I18N.LcMessagesMoFileVersion0 class-plurals. +* points: BLOX.BPolyline-accessing. +* points_: BLOX.BPolyline-accessing. +* popup: BLOX.BPopupMenu-widget protocol. +* popup_ <1>: BLOX.BWindow class-instance creation. +* popup_: BLOX.BWidget class-popups. +* port <1>: TCP.Socket-accessing. +* port <2>: TCP.ServerSocket-accessing. +* port <3>: TCP.DatagramSocket-accessing. +* port <4>: TCP.Datagram-accessing. +* port: TCP.AbstractSocket-accessing. +* port_ <1>: TCP.ServerSocket class-instance creation. +* port_ <2>: TCP.DatagramSocket class-instance creation. +* port_: TCP.Datagram-accessing. +* port_bindTo_: TCP.ServerSocket class-instance creation. +* port_queueSize_: TCP.ServerSocket class-instance creation. +* port_queueSize_bindTo_ <1>: TCP.ServerSocket-initializing. +* port_queueSize_bindTo_: TCP.ServerSocket class-instance creation. +* portCmdServer: TCP.Socket class-well known ports. +* portDayTime: TCP.Socket class-well known ports. +* portDiscard: TCP.Socket class-well known ports. +* portDNS: TCP.Socket class-well known ports. +* portEcho: TCP.Socket class-well known ports. +* portExecServer: TCP.Socket class-well known ports. +* portFinger: TCP.Socket class-well known ports. +* portFTP: TCP.Socket class-well known ports. +* portGopher: TCP.Socket class-well known ports. +* portHTTP: TCP.Socket class-well known ports. +* portLoginServer: TCP.Socket class-well known ports. +* portNetStat: TCP.Socket class-well known ports. +* portNNTP: TCP.Socket class-well known ports. +* portPOP3: TCP.Socket class-well known ports. +* portReserved: TCP.Socket class-well known ports. +* portSMTP: TCP.Socket class-well known ports. +* portSSH: TCP.Socket class-well known ports. +* portSystat: TCP.Socket class-well known ports. +* portTelnet: TCP.Socket class-well known ports. +* portTimeServer: TCP.Socket class-well known ports. +* portWhois: TCP.Socket class-well known ports. +* pos_: BLOX.BWidget-geometry management. +* posHoriz_: BLOX.BWidget-geometry management. +* posix <1>: I18N.LocaleData class-accessing. +* posix <2>: I18N.LocaleConventions class-accessing. +* posix: I18N.Locale class-instance creation. +* posVert_: BLOX.BWidget-geometry management. +* pressed <1>: BLOX.BColorButton-accessing. +* pressed: BLOX.BButtonLike-accessing. +* primAccept_: TCP.ServerSocket-accessing. +* primary_secondary_: I18N.LcMessagesTerritoryDomain class-instance creation. +* primJoinLeave_option_: TCP.UDPSocketImpl-multicasting. +* print_on_ <1>: I18N.LcTime-printing. +* print_on_ <2>: I18N.LcPrintFormats-printing. +* print_on_ <3>: I18N.LcNumeric-printing. +* print_on_: I18N.LcMonetary-printing. +* print_on_currency_parentheses_: I18N.LcMonetary-printing. +* print_on_ifFull_ifDate_ifTime_: I18N.LcTime-printing. +* print_time_format_on_: I18N.LcTime-printing. +* printOn_ <1>: I18N.RTEParameterNode-computing. +* printOn_ <2>: I18N.RTENegationNode-computing. +* printOn_ <3>: I18N.RTELiteralNode-computing. +* printOn_ <4>: I18N.RTEBinaryNode-computing. +* printOn_ <5>: I18N.RTEAlternativeNode-computing. +* printOn_ <6>: TCP.Socket-printing. +* printOn_ <7>: TCP.IPAddress-printing. +* printOn_: TCP.AbstractSocket-printing. +* printString_: I18N.LcPrintFormats-printing. +* producerConsumerTest: TCP.Socket class-tests. +* protocol: TCP.AbstractSocketImpl class-abstract. +* question: BLOX.BImage class-icons. +* queueSize_: TCP.ServerSocket class-instance creation. +* queueSize_bindTo_: TCP.ServerSocket class-instance creation. +* raise: BLOX.BCanvasObject-widget protocol. +* readBufferSize: TCP.Socket class-accessing. +* readBufferSize_ <1>: TCP.Socket-stream protocol. +* readBufferSize_: TCP.Socket class-accessing. +* receive_ <1>: TCP.DatagramSocketImpl-socket operations. +* receive_: TCP.DatagramSocket-accessing. +* receive_datagram_: TCP.DatagramSocketImpl-socket operations. +* red <1>: BLOX.BTextAttributes-colors. +* red: BLOX.BTextAttributes class-instance-creation shortcuts. +* redraw <1>: BLOX.BEmbeddedText-accessing. +* redraw <2>: BLOX.BEmbeddedImage-accessing. +* redraw: BLOX.BCanvasObject-widget protocol. +* refuseTabs: BLOX.BText-inserting text. +* registerEncoderFor_toUCS4_fromUCS4_: I18N.EncodedStream class-initializing. +* registerImage_: BLOX.BText-images. +* release: BLOX.Blox-basic. +* remote_port_: TCP.Socket class-instance creation. +* remote_port_local_port_ <1>: TCP.Socket class-instance creation. +* remote_port_local_port_: TCP.DatagramSocket class-instance creation. +* remoteAddress <1>: TCP.AbstractSocketImpl-accessing. +* remoteAddress: TCP.AbstractSocket-accessing. +* remotePort <1>: TCP.AbstractSocketImpl-accessing. +* remotePort: TCP.AbstractSocket-accessing. +* remove: BLOX.BCanvasObject-widget protocol. +* remove_: BLOX.BMenuBar-accessing. +* removeAtIndex_ <1>: BLOX.BList-accessing. +* removeAtIndex_: BLOX.BDropDown-list box accessing. +* removeAttributes: BLOX.BText-attributes. +* removeAttributesFrom_to_: BLOX.BText-attributes. +* replaceSelection_ <1>: BLOX.BText-inserting text. +* replaceSelection_ <2>: BLOX.BEdit-widget protocol. +* replaceSelection_: BLOX.BDropDownEdit-text accessing. +* resizable: BLOX.BWindow-accessing. +* resizable_: BLOX.BWindow-accessing. +* rhs: I18N.RTEBinaryNode-compiling. +* rightArrow: BLOX.BImage class-arrows. +* rootDirectory: I18N.Locale class-initialization. +* rootDirectory_: I18N.Locale class-initialization. +* screenOrigin: BLOX.Blox class-utility. +* screenResolution: BLOX.Blox class-utility. +* screenSize: BLOX.Blox class-utility. +* searchString_: BLOX.BText-inserting text. +* select_: BLOX.BList-widget protocol. +* selectAll <1>: BLOX.BEdit-widget protocol. +* selectAll: BLOX.BDropDownEdit-text accessing. +* selectBackground <1>: BLOX.BText-accessing. +* selectBackground: BLOX.BEdit-accessing. +* selectBackground_ <1>: BLOX.BText-accessing. +* selectBackground_: BLOX.BEdit-accessing. +* selectForeground <1>: BLOX.BText-accessing. +* selectForeground: BLOX.BEdit-accessing. +* selectForeground_ <1>: BLOX.BText-accessing. +* selectForeground_: BLOX.BEdit-accessing. +* selectFrom_to_ <1>: BLOX.BText-position & lines. +* selectFrom_to_ <2>: BLOX.BEdit-widget protocol. +* selectFrom_to_: BLOX.BDropDownEdit-text accessing. +* selection <1>: BLOX.BEdit-widget protocol. +* selection: BLOX.BDropDownEdit-text accessing. +* selectionRange <1>: BLOX.BEdit-widget protocol. +* selectionRange: BLOX.BDropDownEdit-text accessing. +* selector <1>: I18N.LocaleConventions class-accessing. +* selector <2>: I18N.LcTime class-accessing. +* selector <3>: I18N.LcNumeric class-accessing. +* selector <4>: I18N.LcMonetaryISO class-accessing. +* selector <5>: I18N.LcMonetary class-accessing. +* selector: I18N.LcMessages class-accessing. +* send_ <1>: I18N.RunTimeExpression-computing. +* send_ <2>: I18N.RTEParameterNode-computing. +* send_ <3>: I18N.RTENegationNode-computing. +* send_ <4>: I18N.RTELiteralNode-computing. +* send_ <5>: I18N.RTEBinaryNode-computing. +* send_: I18N.RTEAlternativeNode-computing. +* send_to_port_: TCP.DatagramSocketImpl-socket operations. +* sendTest: TCP.Socket class-tests. +* sendTest_: TCP.Socket class-tests. +* sendToBack: BLOX.BWidget-widget protocol. +* setAttributes_from_to_: BLOX.BText-attributes. +* setInitialSize: BLOX.BWidget-customization. +* setToEnd: BLOX.BText-position & lines. +* setVerticalLayout_: BLOX.BContainer-accessing. +* shallowCopy <1>: BLOX.Blox-basic. +* shallowCopy: BLOX.BCanvasObject-accessing. +* shouldCache <1>: I18N.LcMessagesMoFileVersion0-flushing the cache. +* shouldCache: I18N.LcMessagesDomain-handling the cache. +* show: BLOX.BCanvasObject-widget protocol. +* show_: BLOX.BList-widget protocol. +* shown <1>: BLOX.BBalloon-accessing. +* shown: BLOX.BBalloon class-accessing. +* size <1>: BLOX.BList-accessing. +* size: BLOX.BDropDown-list box accessing. +* smoothness: BLOX.BSpline-accessing. +* smoothness_: BLOX.BSpline-accessing. +* socketType <1>: TCP.SocketImpl class-parameters. +* socketType <2>: TCP.RawSocketImpl class-parameters. +* socketType <3>: TCP.DatagramSocketImpl class-parameters. +* socketType: TCP.AbstractSocketImpl class-abstract. +* soError: TCP.AbstractSocketImpl-socket options. +* soLinger <1>: TCP.AbstractSocketImpl-socket options. +* soLinger: TCP.AbstractSocket-socket options. +* soLinger_ <1>: TCP.AbstractSocketImpl-socket options. +* soLinger_: TCP.AbstractSocket-socket options. +* soLingerOff: TCP.AbstractSocket-socket options. +* soReuseAddr: TCP.AbstractSocketImpl-socket options. +* soReuseAddr_: TCP.AbstractSocketImpl-socket options. +* space <1>: BLOX.BText-inserting text. +* space: BLOX.BEdit-widget protocol. +* species <1>: I18N.Encoders.ToUCS4-stream operation. +* species <2>: I18N.Encoders.Iconv-stream operation. +* species <3>: I18N.Encoders.FromUCS4-stream operation. +* species <4>: I18N.Encoder-stream operations. +* species: TCP.AbstractSocket-socket options. +* startAngle: BLOX.BArc-accessing. +* startAngle_: BLOX.BArc-accessing. +* state <1>: BLOX.BWindow-widget protocol. +* state: BLOX.Blox-accessing. +* state_ <1>: BLOX.BWindow-widget protocol. +* state_: BLOX.Blox-accessing. +* stop: BLOX.BImage class-icons. +* stretch_: BLOX.BWidget-geometry management. +* strikeout <1>: BLOX.BTextAttributes-setting attributes. +* strikeout: BLOX.BTextAttributes class-instance-creation shortcuts. +* subnet: TCP.IPAddress-accessing. +* sweepAngle: BLOX.BArc-accessing. +* sweepAngle_: BLOX.BArc-accessing. +* tabStop: BLOX.BWidget-accessing. +* tabStop_: BLOX.BWidget-accessing. +* terminateMainLoop: BLOX.Blox class-event dispatching. +* territories: I18N.LocaleData class-database. +* territory: I18N.LocaleData-accessing. +* territoryDirectory <1>: I18N.LocaleData-accessing. +* territoryDirectory: I18N.LcMessages-accessing. +* territoryDirectory_ <1>: I18N.LocaleData-accessing. +* territoryDirectory_: I18N.LcMessages-accessing. +* text <1>: BLOX.BEmbeddedText-accessing. +* text <2>: BLOX.BDropDownList-accessing. +* text <3>: BLOX.BDropDownEdit-accessing-overrides. +* text <4>: BLOX.BDropDown-flexibility. +* text: BLOX.BBalloon-accessing. +* text_ <1>: BLOX.BEmbeddedText-accessing. +* text_ <2>: BLOX.BDropDownEdit-text accessing. +* text_ <3>: BLOX.BDropDown-flexibility. +* text_: BLOX.BBalloon-accessing. +* time: I18N.Locale-subobjects. +* timeout: TCP.AbstractSocket class-timed-out operations. +* timeout_: TCP.AbstractSocket class-timed-out operations. +* timeToLive <1>: TCP.UDPSocketImpl-multicasting. +* timeToLive <2>: TCP.MulticastSocketImpl-multicasting. +* timeToLive: TCP.MulticastSocket-instance creation. +* timeToLive_ <1>: TCP.UDPSocketImpl-multicasting. +* timeToLive_ <2>: TCP.MulticastSocketImpl-multicasting. +* timeToLive_: TCP.MulticastSocket-instance creation. +* to: BLOX.BArc-accessing. +* to_: BLOX.BArc-accessing. +* toggle: BLOX.BDropDown-widget protocol. +* toplevel: BLOX.Blox-widget protocol. +* translatorInformation: I18N.LcMessagesDomain-querying. +* translatorInformationAt_: I18N.LcMessagesDomain-querying. +* translatorInformationAt_at_: I18N.LcMessagesDomain-querying. +* tweakedLoopbackTest: TCP.Socket class-tests. +* udpLoopbackTest: TCP.Socket class-tests. +* underline <1>: BLOX.BTextAttributes-setting attributes. +* underline: BLOX.BTextAttributes class-instance-creation shortcuts. +* unhighlight: BLOX.BList-widget protocol. +* unknownAddress: TCP.SocketAddress class-accessing. +* unmap: BLOX.BWindow-widget protocol. +* unmapList: BLOX.BDropDown-widget protocol. +* unselect_: BLOX.BList-widget protocol. +* upArrow: BLOX.BImage class-arrows. +* update_ <1>: I18N.LocaleData class-accessing. +* update_ <2>: TCP.SocketAddress class-initialization. +* update_: BLOX.Blox class-event dispatching. +* value <1>: BLOX.BToggle-accessing. +* value <2>: BLOX.BRadioGroup-accessing. +* value <3>: BLOX.BRadioButton-accessing. +* value <4>: BLOX.BProgress-accessing. +* value: BLOX.BCheckMenuItem-accessing. +* value_ <1>: I18N.RunTimeExpression-computing. +* value_ <2>: BLOX.BToggle-accessing. +* value_ <3>: BLOX.BRadioGroup-accessing. +* value_ <4>: BLOX.BRadioButton-accessing. +* value_ <5>: BLOX.BProgress-accessing. +* value_: BLOX.BCheckMenuItem-accessing. +* variable_: BLOX.BToggle-accessing. +* version: TCP.IPAddress class-constants. +* vertical: BLOX.BViewport-scrollbars. +* vertical_: BLOX.BViewport-scrollbars. +* verticalNeeded: BLOX.BViewport-scrollbars. +* verticalShown: BLOX.BViewport-scrollbars. +* waitForConnection: TCP.ServerSocket-accessing. +* waitForException: TCP.AbstractSocketImpl-asynchronous operations. +* white <1>: BLOX.BTextAttributes-colors. +* white: BLOX.BTextAttributes class-instance-creation shortcuts. +* widget: BLOX.BEventSet-accessing. +* width <1>: BLOX.BWindow-widget protocol. +* width <2>: BLOX.BWidget-geometry management. +* width <3>: BLOX.BRectangle-accessing. +* width <4>: BLOX.BPolyline-accessing. +* width: BLOX.BLine-accessing. +* width_ <1>: BLOX.BWindow-widget protocol. +* width_ <2>: BLOX.BWidget-geometry management. +* width_ <3>: BLOX.BRectangle-accessing. +* width_ <4>: BLOX.BPolyline-accessing. +* width_: BLOX.BLine-accessing. +* width_height_ <1>: BLOX.BWindow-widget protocol. +* width_height_: BLOX.BWidget-geometry management. +* widthAbsolute <1>: BLOX.BWindow-widget protocol. +* widthAbsolute: BLOX.BWidget-geometry management. +* widthChild_ <1>: BLOX.BWidget-geometry management. +* widthChild_ <2>: BLOX.BText-geometry management. +* widthChild_ <3>: BLOX.BPopupWindow-geometry management. +* widthChild_: BLOX.BCanvas-geometry management. +* widthOffset: BLOX.BWidget-geometry management. +* widthOffset_ <1>: BLOX.BWindow-widget protocol. +* widthOffset_: BLOX.BWidget-geometry management. +* widthPixels_: BLOX.BWidget-geometry management. +* window <1>: BLOX.BWindow-widget protocol. +* window: BLOX.Blox-widget protocol. +* with_with_with_with_: TCP.IPAddress class-instance creation. +* withChildrenDo_: BLOX.Blox-widget protocol. +* withFileDo_: I18N.FileStreamSegment-basic. +* wrap: BLOX.BText-accessing. +* wrap_: BLOX.BText-accessing. +* writeBufferSize: TCP.Socket class-accessing. +* writeBufferSize_ <1>: TCP.Socket-stream protocol. +* writeBufferSize_: TCP.Socket class-accessing. +* x <1>: BLOX.BWindow-widget protocol. +* x: BLOX.BWidget-geometry management. +* x_ <1>: BLOX.BWindow-widget protocol. +* x_: BLOX.BWidget-geometry management. +* x_y_ <1>: BLOX.BWindow-widget protocol. +* x_y_: BLOX.BWidget-geometry management. +* x_y_width_height_ <1>: BLOX.BWindow-widget protocol. +* x_y_width_height_: BLOX.BWidget-geometry management. +* xAbsolute <1>: BLOX.BWindow-widget protocol. +* xAbsolute: BLOX.BWidget-geometry management. +* xChild_ <1>: BLOX.BWidget-geometry management. +* xChild_ <2>: BLOX.BText-geometry management. +* xChild_ <3>: BLOX.BPopupWindow-geometry management. +* xChild_: BLOX.BCanvas-geometry management. +* xOffset: BLOX.BWidget-geometry management. +* xOffset_ <1>: BLOX.BWindow-widget protocol. +* xOffset_: BLOX.BWidget-geometry management. +* xPixels_: BLOX.BWidget-geometry management. +* xRoot: BLOX.BWidget-geometry management. +* y <1>: BLOX.BWindow-widget protocol. +* y: BLOX.BWidget-geometry management. +* y_ <1>: BLOX.BWindow-widget protocol. +* y_: BLOX.BWidget-geometry management. +* yAbsolute <1>: BLOX.BWindow-widget protocol. +* yAbsolute: BLOX.BWidget-geometry management. +* yChild_ <1>: BLOX.BWidget-geometry management. +* yChild_ <2>: BLOX.BText-geometry management. +* yChild_ <3>: BLOX.BPopupWindow-geometry management. +* yChild_: BLOX.BCanvas-geometry management. +* yellow <1>: BLOX.BTextAttributes-colors. +* yellow: BLOX.BTextAttributes class-instance-creation shortcuts. +* yOffset: BLOX.BWidget-geometry management. +* yOffset_ <1>: BLOX.BWindow-widget protocol. +* yOffset_: BLOX.BWidget-geometry management. +* yPixels_: BLOX.BWidget-geometry management. +* yRoot: BLOX.BWidget-geometry management. + + +File: gst-libs.info, Node: Cross-reference, Prev: Method index, Up: Top + +Selector cross-reference +************************ + +* Menu: + +* [131: TCP.IPAddress class-instance creation. +* accept: TCP.ServerSocket class-instance creation. +* addChild_: BLOX.Blox-customization. +* addEventSet_: BLOX.BEventSet class-initializing. +* addMenuItemFor_notifying_: BLOX.BMenu-callback registration. +* at_ <1>: BLOX.BList-accessing. +* at_: BLOX.BDropDown-list box accessing. +* backgroundColor_: BLOX.Blox-creating children. +* basicAddChild_ <1>: BLOX.BPopupWindow-geometry management. +* basicAddChild_ <2>: BLOX.Blox-customization. +* basicAddChild_: BLOX.BCanvas-geometry management. +* bevel: BLOX.BPolyline-accessing. +* bottomCenter: BLOX.BLabel-accessing. +* bottomLeft: BLOX.BLabel-accessing. +* bottomRight: BLOX.BLabel-accessing. +* butt <1>: BLOX.BPolyline-accessing. +* butt: BLOX.BLine-accessing. +* center <1>: BLOX.BLabel-accessing. +* center: BLOX.BEmbeddedText-accessing. +* char: BLOX.BText-accessing. +* copy: BLOX.BCanvasObject-accessing. +* copyObject: BLOX.BCanvasObject-accessing. +* create <1>: BLOX.BPolyline-accessing. +* create <2>: BLOX.BExtended-customization. +* create: BLOX.BBoundingBox-accessing. +* createLocalAddress: TCP.SocketAddress class-initialization. +* destroy: BLOX.BWidget class-popups. +* dispatch_: BLOX.BDialog-accessing. +* dispatchEvents: BLOX.Blox class-event dispatching. +* eventTest: BLOX.BEventTarget-intercepting events. +* font <1>: BLOX.Blox-widget protocol. +* font: BLOX.BDropDown-flexibility. +* fromString_ <1>: TCP.SocketAddress class-host name lookup. +* fromString_: TCP.IPAddress-accessing. +* height: BLOX.BWidget-geometry management. +* height_ <1>: BLOX.BWidget-geometry management. +* height_: BLOX.Blox-creating children. +* heightOffset_: BLOX.BWidget-geometry management. +* initialize_: BLOX.BWidget-customization. +* inset_: BLOX.BWidget-geometry management. +* left: BLOX.BEmbeddedText-accessing. +* leftCenter: BLOX.BLabel-accessing. +* loopbackHost: TCP.IPAddress class-instance creation. +* macintosh: BLOX.Blox class-utility. +* make_: BLOX.Blox-creating children. +* map: BLOX.BWindow-widget protocol. +* miter: BLOX.BPolyline-accessing. +* modalMap: BLOX.BDialog-widget protocol. +* new_: BLOX.BWidget-customization. +* newPrimitive: BLOX.BExtended-customization. +* next: I18N.EncodedStream class-initializing. +* none: BLOX.BText-accessing. +* object_address_port_: TCP.Datagram-accessing. +* object_objectDumper_address_port_ <1>: TCP.Datagram-accessing. +* object_objectDumper_address_port_: TCP.Datagram class-instance creation. +* onKeyEvent_send_to_: BLOX.BEventTarget-intercepting events. +* print_time_format_on_: I18N.LcTime-printing. +* projecting <1>: BLOX.BPolyline-accessing. +* projecting: BLOX.BLine-accessing. +* redraw <1>: BLOX.BPolyline-accessing. +* redraw: BLOX.BBoundingBox-accessing. +* registerImage_: BLOX.BText-images. +* right: BLOX.BEmbeddedText-accessing. +* rightCenter: BLOX.BLabel-accessing. +* round <1>: BLOX.BPolyline-accessing. +* round: BLOX.BLine-accessing. +* state: BLOX.Blox-widget protocol. +* state_: BLOX.Blox-widget protocol. +* tabStop_: BLOX.BWidget-widget protocol. +* terminateMainLoop: BLOX.Blox class-event dispatching. +* topCenter: BLOX.BLabel-accessing. +* topLeft: BLOX.BLabel-accessing. +* toplevel: BLOX.Blox-widget protocol. +* topRight: BLOX.BLabel-accessing. +* unix: BLOX.Blox class-utility. +* unmap: BLOX.BWindow-widget protocol. +* width: BLOX.BWidget-geometry management. +* width_ <1>: BLOX.BWidget-geometry management. +* width_: BLOX.Blox-creating children. +* widthOffset_: BLOX.BWidget-geometry management. +* windows: BLOX.Blox class-utility. +* word: BLOX.BText-accessing. +* x: BLOX.BWidget-geometry management. +* x_: BLOX.BWidget-geometry management. +* xOffset_: BLOX.BWidget-geometry management. +* y: BLOX.BWidget-geometry management. +* y_: BLOX.BWidget-geometry management. +* yOffset_: BLOX.BWidget-geometry management. +* {Blox: BLOX.Blox-creating children. + diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-3 smalltalk-2.1.7/doc/gst-libs.info-3 --- smalltalk-2.1.6/doc/gst-libs.info-3 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-3 1970-01-01 01:00:00.000000000 +0100 @@ -1,1403 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: BLOX.BList-accessing, Next: BLOX.BList-widget protocol, Up: BLOX.BList - -BLOX.BList: accessing ---------------------- - -add: anObject afterIndex: index - Add an element with the given value after another element whose - index is contained in the index parameter. The label displayed in - the widget is anObject's displayString. Answer anObject. - -add: aString element: anObject afterIndex: index - Add an element with the aString label after another element whose - index is contained in the index parameter. This method allows the - client to decide autonomously the label that the widget will - display. If anObject is nil, then string is used as the element - as well. If aString is nil, then the element's displayString is - used as the label. Answer anObject or, if it is nil, aString. - -addLast: anObject - Add an element with the given value at the end of the listbox. - The label displayed in the widget is anObject's displayString. - Answer anObject. - -addLast: aString element: anObject - Add an element with the given value at the end of the listbox. - This method allows the client to decide autonomously the label - that the widget will display. If anObject is nil, then string is - used as the element as well. If aString is nil, then the - element's displayString is used as the label. Answer anObject or, - if it is nil, aString. - -associationAt: anIndex - Answer an association whose key is the item at the given position - in the listbox and whose value is the label used to display that - item. - -at: anIndex - Answer the element displayed at the given position in the list box. - -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -contents: elementList - Set the elements displayed in the listbox, and set the labels to - be their displayStrings. - -contents: stringCollection elements: elementList - Set the elements displayed in the listbox to be those in - elementList, and set the labels to be the corresponding elements - in stringCollection. The two collections must have the same size. - -do: aBlock - Iterate over each element of the listbox and pass it to aBlock. - -elements - Answer the collection of objects that represent the elements - displayed by the list box. - -elements: elementList - Set the elements displayed in the listbox, and set the labels to - be their displayStrings. - -font - Answer the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -font: value - Set the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor - Answer the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -foregroundColor: value - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -highlightBackground - Answer the value of the highlightBackground option for the widget. - Specifies the background color to use when displaying selected - items in the widget. - -highlightBackground: value - Set the value of the highlightBackground option for the widget. - Specifies the background color to use when displaying selected - items in the widget. - -highlightForeground - Answer the value of the highlightForeground option for the widget. - Specifies the foreground color to use when displaying selected - items in the widget. - -highlightForeground: value - Set the value of the highlightForeground option for the widget. - Specifies the foreground color to use when displaying selected - items in the widget. - -index - Answer the value of the index option for the widget. Indicates - the element that has the location cursor. This item will be - displayed in the highlightForeground color, and with the - corresponding background color. - -indexAt: point - Answer the index of the element that covers the point in the - listbox window specified by x and y (in pixel coordinates). If no - element covers that point, then the closest element to that point - is used. - -isSelected: index - Answer whether the element indicated by index is currently - selected. - -labelAt: anIndex - Answer the label displayed at the given position in the list box. - -labels - Answer the labels displayed by the list box. - -labelsDo: aBlock - Iterate over each listbox element's label and pass it to aBlock. - -mode - Answer the value of the mode option for the widget. Specifies one - of several styles for manipulating the selection. The value of the - option may be either single, browse, multiple, or extended. If - the selection mode is single or browse, at most one element can be - selected in the listbox at once. Clicking button 1 on an - unselected element selects it and deselects any other selected - item, while clicking on a selected element has no effect. In - browse mode it is also possible to drag the selection with button - 1. That is, moving the mouse while button 1 is pressed keeps the - item under the cursor selected. If the selection mode is multiple - or extended, any number of elements may be selected at once, - including discontiguous ranges. In multiple mode, clicking button - 1 on an element toggles its selection state without affecting any - other elements. In extended mode, pressing button 1 on an element - selects it, deselects everything else, and sets the anchor to the - element under the mouse; dragging the mouse with button 1 down - extends the selection to include all the elements between the - anchor and the element under the mouse, inclusive. In extended - mode, the selected range can be adjusted by pressing button 1 with - the Shift key down: this modifies the selection to consist of the - elements between the anchor and the element under the mouse, - inclusive. The un-anchored end of this new selection can also be - dragged with the button down. Also in extended mode, pressing - button 1 with the Control key down starts a toggle operation: the - anchor is set to the element under the mouse, and its selection - state is reversed. The selection state of other elements is not - changed. If the mouse is dragged with button 1 down, then the - selection state of all elements between the anchor and the element - under the mouse is set to match that of the anchor element; the - selection state of all other elements remains what it was before - the toggle operation began. Most people will probably want to use - browse mode for single selections and extended mode for multiple - selections; the other modes appear to be useful only in special - situations. - -mode: value - Set the value of the mode option for the widget. Specifies one of - several styles for manipulating the selection. The value of the - option may be either single, browse, multiple, or extended. If - the selection mode is single or browse, at most one element can be - selected in the listbox at once. Clicking button 1 on an - unselected element selects it and deselects any other selected - item, while clicking on a selected element has no effect. In - browse mode it is also possible to drag the selection with button - 1. That is, moving the mouse while button 1 is pressed keeps the - item under the cursor selected. If the selection mode is multiple - or extended, any number of elements may be selected at once, - including discontiguous ranges. In multiple mode, clicking button - 1 on an element toggles its selection state without affecting any - other elements. In extended mode, pressing button 1 on an element - selects it, deselects everything else, and sets the anchor to the - element under the mouse; dragging the mouse with button 1 down - extends the selection to include all the elements between the - anchor and the element under the mouse, inclusive. In extended - mode, the selected range can be adjusted by pressing button 1 with - the Shift key down: this modifies the selection to consist of the - elements between the anchor and the element under the mouse, - inclusive. The un-anchored end of this new selection can also be - dragged with the button down. Also in extended mode, pressing - button 1 with the Control key down starts a toggle operation: the - anchor is set to the element under the mouse, and its selection - state is reversed. The selection state of other elements is not - changed. If the mouse is dragged with button 1 down, then the - selection state of all elements between the anchor and the element - under the mouse is set to match that of the anchor element; the - selection state of all other elements remains what it was before - the toggle operation began. Most people will probably want to use - browse mode for single selections and extended mode for multiple - selections; the other modes appear to be useful only in special - situations. - -numberOfStrings - Answer the number of items in the list box - - would - -removeAtIndex: index - Remove the item at the given index in the list box, answering the - object associated to the element (i.e. the value that #at: would - have returned for the given index) - -size - Answer the number of items in the list box - - - -File: gst-libs.info, Node: BLOX.BList-widget protocol, Prev: BLOX.BList-accessing, Up: BLOX.BList - -BLOX.BList: widget protocol ---------------------------- - -callback - Answer a DirectedMessage that is sent when the active item in the - receiver changes, or nil if none has been set up. - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a selector with at most two arguemtnts) when the active item in - the receiver changegs. If the method accepts two arguments, the - receiver is passed as the first parameter. If the method accepts - one or two arguments, the selected index is passed as the last - parameter. - -highlight: index - Highlight the item at the given position in the listbox. - -invokeCallback - Generate a synthetic callback. - -select: index - Highlight the item at the given position in the listbox, without - unhighlighting other items. This is meant for multiple- or - extended-mode listboxes, but can be used with other selection mode - in particular cases. - -show: index - Ensure that the item at the given position in the listbox is - visible. - -unhighlight - Unhighlight all the items in the listbox. - -unselect: index - Unhighlight the item at the given position in the listbox, without - affecting the state of the other items. - - - -File: gst-libs.info, Node: BLOX.Blox, Next: BLOX.BMenu, Prev: BLOX.BList, Up: BLOX - -BLOX.Blox -========= - -Defined in namespace BLOX -Superclass: BLOX.BEventTarget -Category: Graphics-Windows - I am the superclass for every visible user interface object - (excluding canvas items, which are pretty different). I provide - common methods and a simple Tcl interface for internal use. In - addition, I expose class methods that do many interesting - event-handling things. - - NOTE: some of the methods (notably geometry methods) may not be - suitable for all Blox subclasses and may be included only for - backwards compatibility towards 1.1.5 BLOX. You should use - geometry methods only for subclasses of BWidget. - -* Menu: - -* BLOX.Blox class-event dispatching:: (class) -* BLOX.Blox class-instance creation:: (class) -* BLOX.Blox class-utility:: (class) -* BLOX.Blox-accessing:: (instance) -* BLOX.Blox-basic:: (instance) -* BLOX.Blox-creating children:: (instance) -* BLOX.Blox-customization:: (instance) -* BLOX.Blox-widget protocol:: (instance) - - -File: gst-libs.info, Node: BLOX.Blox class-event dispatching, Next: BLOX.Blox class-instance creation, Up: BLOX.Blox - -BLOX.Blox class: event dispatching ----------------------------------- - - balances - -dispatchEvents - If this is the outermost dispatching loop that is started, - dispatch events until the number of calls to #terminateMainLoop - balances the number of calls to #dispatchEvents; return instantly - if this is not the outermost dispatching loop that is started. - - upon - -dispatchEvents: mainWindow - Dispatch some events; return instantly if this is not the outermost - dispatching loop that is started, else loop until the number of - calls to #dispatchEvents balance the number of calls to - #terminateMainLoop. In addition, set up an event handler that - will call #terminateMainLoop upon destruction of the `mainWindow' - widget (which can be any kind of BWidget, but will be typically a - BWindow). - - balances - -terminateMainLoop - Terminate the event dispatching loop if this call to - #terminateMainLoop balances the number of calls to - #dispatchEvents. Answer whether the calls are balanced. - -update: aspect - Initialize the Tcl and Blox environments; executed automatically - on startup. - - - -File: gst-libs.info, Node: BLOX.Blox class-instance creation, Next: BLOX.Blox class-utility, Prev: BLOX.Blox class-event dispatching, Up: BLOX.Blox - -BLOX.Blox class: instance creation ----------------------------------- - -new - This method should not be called for instances of this class. - -new: parent - Create a new widget of the type identified by the receiver, inside - the given parent widget. Answer the new widget - - - -File: gst-libs.info, Node: BLOX.Blox class-utility, Next: BLOX.Blox-accessing, Prev: BLOX.Blox class-instance creation, Up: BLOX.Blox - -BLOX.Blox class: utility ------------------------- - -active - Answer the currently active Blox, or nil if the focus does not - belong to a Smalltalk window. - -at: aPoint - Answer the Blox containing the given point on the screen, or nil - if no Blox contains the given point (either because no Smalltalk - window is there or because it is covered by another window). - -atMouse - Answer the Blox under the mouse cursor's hot spot, or nil if no - Blox contains the given point (either because no Smalltalk window - is there or because it is covered by another window). - -beep - Produce a bell - -clearClipboard - Clear the clipboard, answer its old contents. - -clipboard - Retrieve the text in the clipboard. - -clipboard: aString - Set the contents of the clipboard to aString (or empty the - clipboard if aString is nil). - -createColor: red green: green blue: blue - Answer a color that can be passed to methods such as - `backgroundColor:'. The color will have the given RGB components - (range is 0~65535). - -createColor: cyan magenta: magenta yellow: yellow - Answer a color that can be passed to methods such as - `backgroundColor:'. The color will have the given CMY components - (range is 0~65535). - -createColor: cyan magenta: magenta yellow: yellow black: black - Answer a color that can be passed to methods such as - `backgroundColor:'. The color will have the given CMYK components - (range is 0~65535). - -createColor: hue saturation: sat value: value - Answer a color that can be passed to methods such as - `backgroundColor:'. The color will have the given HSV components - (range is 0~65535). - -fonts - Answer the names of the font families in the system. Additionally, - `Times', `Courier' and `Helvetica' are always made available. - -mousePointer - If the mouse pointer is on the same screen as the application's - windows, returns a Point containing the pointer's x and y - coordinates measured in pixels in the screen's root window (under - X, if a virtual root window is in use on the screen, the position - is computed in the whole desktop, not relative to the top-left - corner of the currently shown portion). If the mouse pointer - isn't on the same screen as window then answer nil. - -platform - Answer the platform on which Blox is running; it can be either - #unix, #macintosh or #windows. - -screenOrigin - Answer a Point indicating the coordinates of the upper left point - of the screen in the virtual root window on which the - application's windows are drawn (under Windows and the Macintosh, - that's always 0 @ 0) - -screenResolution - Answer a Point containing the resolution in dots per inch of the - screen, in the x and y directions. - -screenSize - Answer a Point containing the size of the virtual root window on - which the application's windows are drawn (under Windows and the - Macintosh, that's the size of the screen) - - - -File: gst-libs.info, Node: BLOX.Blox-accessing, Next: BLOX.Blox-basic, Prev: BLOX.Blox class-utility, Up: BLOX.Blox - -BLOX.Blox: accessing --------------------- - -state - Answer the value of the state option for the widget. Specifies - one of three states for the button: normal, active, or disabled. - In normal state the button is displayed using the foreground and - background options. The active state is typically used when the - pointer is over the button. In active state the button is - displayed using the activeForeground and activeBackground options. - Disabled state means that the button should be insensitive: the - application will refuse to activate the widget and will ignore - mouse button presses. - -state: value - Set the value of the state option for the widget. Specifies one - of three states for the button: normal, active, or disabled. In - normal state the button is displayed using the foreground and - background options. The active state is typically used when the - pointer is over the button. In active state the button is - displayed using the activeForeground and activeBackground options. - Disabled state means that the button should be insensitive: the - application will refuse to activate the widget and will ignore - mouse button presses. - - - -File: gst-libs.info, Node: BLOX.Blox-basic, Next: BLOX.Blox-creating children, Prev: BLOX.Blox-accessing, Up: BLOX.Blox - -BLOX.Blox: basic ----------------- - -deepCopy - It does not make sense to make a copy, because it would make data - inconsistent across different objects; so answer the receiver - -release - Destroy the receiver if it still exists, then perform the usual - task of removing the dependency links - -shallowCopy - It does not make sense to make a copy, because it would make data - inconsistent across different objects; so answer the receiver - - - -File: gst-libs.info, Node: BLOX.Blox-creating children, Next: BLOX.Blox-customization, Prev: BLOX.Blox-basic, Up: BLOX.Blox - -BLOX.Blox: creating children ----------------------------- - -make: array - Create children of the receiver. Answer a Dictionary of the - children. Each element of array is an Array including: a string - which becomes the Dictionary's key, a binding like #{Blox.BWindow} - identifying the class name, an array with the parameters to be set - (for example #(#width: 50 #height: 30 #backgroundColor: 'blue')), - and afterwards the children of the widget, described as arrays - with this same format. - -make: array on: result - Private - Create children of the receiver, adding them to result; - answer result. array has the format described in the comment to - #make: - -makeChild: each on: result - Private - Create a child of the receiver, adding them to result; - each is a single element of the array described in the comment to - #make: - - - -File: gst-libs.info, Node: BLOX.Blox-customization, Next: BLOX.Blox-widget protocol, Prev: BLOX.Blox-creating children, Up: BLOX.Blox - -BLOX.Blox: customization ------------------------- - -addChild: child - The widget identified by child has been added to the receiver. - This method is public not because you can call it, but because it - can be useful to override it, not forgetting the call to either - the superclass implementation or #basicAddChild:, to perform some - initialization on the children just added. Answer the new child. - -basicAddChild: child - The widget identified by child has been added to the receiver. - Add it to the children collection and answer the new child. This - method is public because you can call it from #addChild:. - - - -File: gst-libs.info, Node: BLOX.Blox-widget protocol, Prev: BLOX.Blox-customization, Up: BLOX.Blox - -BLOX.Blox: widget protocol --------------------------- - -asPrimitiveWidget - Answer the primitive widget that implements the receiver. - -childrenCount - Answer how many children the receiver has - -childrenDo: aBlock - Evaluate aBlock once for each of the receiver's child widgets, - passing the widget to aBlock as a parameter - -destroy - Destroy the receiver - -drawingArea - Answer a Rectangle identifying the receiver's drawing area. The - rectangle's corners specify the upper-left and lower-right corners - of the client area. Because coordinates are relative to the - upper-left corner of a window's drawing area, the coordinates of - the rectangle's corner are (0,0). - -enabled - Answer whether the receiver is enabled to input. Although defined - here, this method is only used for widgets that define a #state - method - -enabled: enabled - Set whether the receiver is enabled to input (enabled is a - boolean). Although defined here, this method is only used for - widgets that define a #state: method - -exists - Answer whether the receiver has been destroyed or not (answer false - in the former case, true in the latter). - -fontHeight: aString - Answer the height of aString in pixels, when displayed in the same - font as the receiver. Although defined here, this method is only - used for widgets that define a #font method - -fontWidth: aString - Answer the width of aString in pixels, when displayed in the same - font as the receiver. Although defined here, this method is only - used for widgets that define a #font method - -isWindow - Answer whether the receiver represents a window on the screen. - -parent - Answer the receiver's parent (or nil for a top-level window). - -toplevel - Answer the top-level object (typically a BWindow or BPopupWindow) - connected to the receiver. - -window - Answer the window in which the receiver stays. Note that while - #toplevel won't answer a BTransientWindow, this method will. - -withChildrenDo: aBlock - Evaluate aBlock passing the receiver, and then once for each of the - receiver's child widgets. - - - -File: gst-libs.info, Node: BLOX.BMenu, Next: BLOX.BMenuBar, Prev: BLOX.Blox, Up: BLOX - -BLOX.BMenu -========== - -Defined in namespace BLOX -Superclass: BLOX.BMenuObject -Category: Graphics-Windows - I am a Menu that is part of a menu bar. - -* Menu: - -* BLOX.BMenu class-instance creation:: (class) -* BLOX.BMenu-accessing:: (instance) -* BLOX.BMenu-callback registration:: (instance) - - -File: gst-libs.info, Node: BLOX.BMenu class-instance creation, Next: BLOX.BMenu-accessing, Up: BLOX.BMenu - -BLOX.BMenu class: instance creation ------------------------------------ - -new: parent label: label - Add a new menu to the parent window's menu bar, with `label' as - its caption (for popup menus, parent is the widget over which the - menu pops up as the right button is pressed). - - - -File: gst-libs.info, Node: BLOX.BMenu-accessing, Next: BLOX.BMenu-callback registration, Prev: BLOX.BMenu class-instance creation, Up: BLOX.BMenu - -BLOX.BMenu: accessing ---------------------- - -label - Answer the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - -label: value - Set the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - - - -File: gst-libs.info, Node: BLOX.BMenu-callback registration, Prev: BLOX.BMenu-accessing, Up: BLOX.BMenu - -BLOX.BMenu: callback registration ---------------------------------- - -addLine - Add a separator item at the end of the menu - -addMenuItemFor: anArray notifying: receiver - Add a menu item described by anArray at the end of the menu. If - anArray is empty, insert a separator line. If anArray has a - single item, a menu item is created without a callback. If - anArray has two or three items, the second one is used as the - selector sent to receiver, and the third one (if present) is - passed to the selector. - -callback: receiver using: selectorPairs - Add menu items described by anArray at the end of the menu. Each - element of selectorPairs must be in the format described in - BMenu>>#addMenuItemFor:notifying:. All the callbacks will be sent - to receiver. - -destroy - Destroy the menu widget; that is, simply remove ourselves from the - parent menu bar. - -empty - Empty the menu widget; that is, remove all the children - - - -File: gst-libs.info, Node: BLOX.BMenuBar, Next: BLOX.BMenuItem, Prev: BLOX.BMenu, Up: BLOX - -BLOX.BMenuBar -============= - -Defined in namespace BLOX -Superclass: BLOX.BMenuObject -Category: Graphics-Windows - I am the Menu Bar, the top widget in a full menu structure. - -* Menu: - -* BLOX.BMenuBar-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BMenuBar-accessing, Up: BLOX.BMenuBar - -BLOX.BMenuBar: accessing ------------------------- - -add: aMenu - Add aMenu to the menu bar - -remove: aMenu - Remove aMenu from the menu bar - - - -File: gst-libs.info, Node: BLOX.BMenuItem, Next: BLOX.BMenuObject, Prev: BLOX.BMenuBar, Up: BLOX - -BLOX.BMenuItem -============== - -Defined in namespace BLOX -Superclass: BLOX.BMenuObject -Category: Graphics-Windows - I am the tiny and humble Menu Item, a single command choice in the - menu structure. But if it wasn't for me, nothing could be done... - eh eh eh!! - -* Menu: - -* BLOX.BMenuItem class-instance creation:: (class) -* BLOX.BMenuItem-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BMenuItem class-instance creation, Next: BLOX.BMenuItem-accessing, Up: BLOX.BMenuItem - -BLOX.BMenuItem class: instance creation ---------------------------------------- - -new: parent - Add a new separator item to the specified menu. - -new: parent label: label - Add a new menu item to the specified menu (parent) , with `label' - as its caption. - - - -File: gst-libs.info, Node: BLOX.BMenuItem-accessing, Prev: BLOX.BMenuItem class-instance creation, Up: BLOX.BMenuItem - -BLOX.BMenuItem: accessing -------------------------- - -label - Answer the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - -label: value - Set the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - - - -File: gst-libs.info, Node: BLOX.BMenuObject, Next: BLOX.BOval, Prev: BLOX.BMenuItem, Up: BLOX - -BLOX.BMenuObject -================ - -Defined in namespace BLOX -Superclass: BLOX.Blox -Category: Graphics-Windows - I am an abstract superclass for widgets which make up a menu - structure. - -* Menu: - -* BLOX.BMenuObject-accessing:: (instance) -* BLOX.BMenuObject-callback:: (instance) - - -File: gst-libs.info, Node: BLOX.BMenuObject-accessing, Next: BLOX.BMenuObject-callback, Up: BLOX.BMenuObject - -BLOX.BMenuObject: accessing ---------------------------- - -activeBackground - Answer the value of the activeBackground option for the widget. - Specifies background color to use when drawing active elements. An - element (a widget or portion of a widget) is active if the mouse - cursor is positioned over the element and pressing a mouse button - will cause some action to occur. For some elements on Windows and - Macintosh systems, the active color will only be used while mouse - button 1 is pressed over the element. - -activeBackground: value - Set the value of the activeBackground option for the widget. - Specifies background color to use when drawing active elements. An - element (a widget or portion of a widget) is active if the mouse - cursor is positioned over the element and pressing a mouse button - will cause some action to occur. For some elements on Windows and - Macintosh systems, the active color will only be used while mouse - button 1 is pressed over the element. - -activeForeground - Answer the value of the activeForeground option for the widget. - Specifies foreground color to use when drawing active elements. - See above for definition of active elements. - -activeForeground: value - Set the value of the activeForeground option for the widget. - Specifies foreground color to use when drawing active elements. - See above for definition of active elements. - -asPrimitiveWidget - Answer the primitive widget that implements the receiver. - -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -foregroundColor - Answer the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -foregroundColor: value - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - - - -File: gst-libs.info, Node: BLOX.BMenuObject-callback, Prev: BLOX.BMenuObject-accessing, Up: BLOX.BMenuObject - -BLOX.BMenuObject: callback --------------------------- - -callback - Answer a DirectedMessage that is sent when the receiver is - modified, or nil if none has been set up. - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a zero- or one-argument selector) when the receiver is clicked. - If the method accepts an argument, the receiver is passed. - -callback: aReceiver message: aSymbol argument: anObject - Set up so that aReceiver is sent the aSymbol message (the name of - a one- or two-argument selector) when the receiver is clicked. If - the method accepts two argument, the receiver is passed together - with anObject; if it accepts a single one, instead, only anObject - is passed. - -invokeCallback - Generate a synthetic callback - - - -File: gst-libs.info, Node: BLOX.BOval, Next: BLOX.BPolyline, Prev: BLOX.BMenuObject, Up: BLOX - -BLOX.BOval -========== - -Defined in namespace BLOX -Superclass: BLOX.BRectangle -Category: Graphics-Windows - I can draw ovals (ok, if you're a mathematic, they're really - ellipses), or even circles. - -* Menu: - - -File: gst-libs.info, Node: BLOX.BPolyline, Next: BLOX.BPopupMenu, Prev: BLOX.BOval, Up: BLOX - -BLOX.BPolyline -============== - -Defined in namespace BLOX -Superclass: BLOX.BCanvasObject -Category: Graphics-Windows - I can draw closed or open polylines, and even fill them! - -* Menu: - -* BLOX.BPolyline-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BPolyline-accessing, Up: BLOX.BPolyline - -BLOX.BPolyline: accessing -------------------------- - -boundingBox - Answer `boundingBox'. - -cap - Answer the way in which caps are to be drawn at the endpoints of - the line. This option is only available for open polylines. If - you want to set it for a closed polylines, draw an open one on top - of it. - -cap: aSymbol - Set the way in which caps are to be drawn at the endpoints of the - line. aSymbol may be #butt (the default), #projecting, or #round). - This option is only available for open polylines. If you want to - set it for a closed polylines, draw an open one on top of it. - -closed - Answer whether the polyline is an open or a closed one. - -closed: aBoolean - Set whether the polyline is an open or a closed one. This option - may be set only once. - -join - Answer the way in which joints are to be drawn at the vertices of - the line. This option is only available for open polylines. If - you want to set it for a closed polylines, draw an open one on top - of it. - -join: aSymbol - Answer the way in which joints are to be drawn at the vertices of - the line. aSymbol can be #bevel, #miter (the default) or #round. - This option is only available for open polylines. If you want to - set it for a closed polylines, draw an open one on top of it. - -outlineColor - Answer the color with which the outline of the polyline is drawn. - This option is only available for closed polylines. - -outlineColor: color - Set the color with which the outline of the polyline is drawn. - This option is only available for closed polylines. - -points - Answer the points that are vertices of the polyline. - - method - -points: arrayOfPointsOrArrays - Set the points that are vertices of the polyline. Each of the - items of arrayOfPointsOrArrays can be a Point or a two-element - Array. Note that no changes take place until you invoke the - #create (if the object has not been inserted in the canvas yet) or - the #redraw method. - -width - Answer the width with which the polyline (or its outline if it is - a closed one) is drawn. - -width: pixels - Set the width with which the polyline (or its outline if it is a - closed one) is drawn. - - - -File: gst-libs.info, Node: BLOX.BPopupMenu, Next: BLOX.BPopupWindow, Prev: BLOX.BPolyline, Up: BLOX - -BLOX.BPopupMenu -=============== - -Defined in namespace BLOX -Superclass: BLOX.BMenu -Category: Graphics-Windows - I am a class that provides the ability to show popup menus when the - right button (Button 3) is clicked on another window. - -* Menu: - -* BLOX.BPopupMenu-widget protocol:: (instance) - - -File: gst-libs.info, Node: BLOX.BPopupMenu-widget protocol, Up: BLOX.BPopupMenu - -BLOX.BPopupMenu: widget protocol --------------------------------- - -popup - Generate a synthetic menu popup event - - - -File: gst-libs.info, Node: BLOX.BPopupWindow, Next: BLOX.BPrimitive, Prev: BLOX.BPopupMenu, Up: BLOX - -BLOX.BPopupWindow -================= - -Defined in namespace BLOX -Superclass: BLOX.BWindow -Category: Graphics-Windows - I am a pseudo-window that has no decorations and no ability to - interact with the user. My main usage, as my name says, is to - provide pop-up functionality for other widgets. Actually there - should be no need to directly use me - always rely on the #new and - #popup: class methods. - -* Menu: - -* BLOX.BPopupWindow-geometry management:: (instance) - - -File: gst-libs.info, Node: BLOX.BPopupWindow-geometry management, Up: BLOX.BPopupWindow - -BLOX.BPopupWindow: geometry management --------------------------------------- - -addChild: w - Private - The widget identified by child has been added to the - receiver. This method is public not because you can call it, but - because it can be useful to override it, not forgetting the call - to either the superclass implementation or #basicAddChild:, to - perform some initialization on the children just added. Answer the - new child. - -child: child height: value - Set the given child's height. This is done by setting its parent - window's (that is, our) height. - -child: child heightOffset: value - This method should not be called for instances of this class. - -child: child width: value - Set the given child's width. This is done by setting its parent - window's (that is, our) width. - -child: child widthOffset: value - This method should not be called for instances of this class. - -child: child x: value - Set the x coordinate of the given child's top-left corner. This - is done by setting its parent window's (that is, our) x. - -child: child xOffset: value - This method should not be called for instances of this class. - -child: child y: value - Set the y coordinate of the given child's top-left corner. This - is done by setting its parent window's (that is, our) y. - -child: child yOffset: value - This method should not be called for instances of this class. - -heightChild: child - Answer the given child's height, which is the height that was - imposed on the popup window. - -widthChild: child - Answer the given child's width in pixels, which is the width that - was imposed on the popup window. - -xChild: child - Answer the x coordinate of the given child's top-left corner, - which is desumed by the position of the popup window. - -yChild: child - Answer the y coordinate of the given child's top-left corner, - which is desumed by the position of the popup window. - - - -File: gst-libs.info, Node: BLOX.BPrimitive, Next: BLOX.BProgress, Prev: BLOX.BPopupWindow, Up: BLOX - -BLOX.BPrimitive -=============== - -Defined in namespace BLOX -Superclass: BLOX.BWidget -Category: Graphics-Windows - I am the superclass for every widget (except menus) directly - provided by the underlying GUI system. - -* Menu: - -* BLOX.BPrimitive-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BPrimitive-accessing, Up: BLOX.BPrimitive - -BLOX.BPrimitive: accessing --------------------------- - -asPrimitiveWidget - Answer the primitive widget that implements the receiver. - - - -File: gst-libs.info, Node: BLOX.BProgress, Next: BLOX.BRadioButton, Prev: BLOX.BPrimitive, Up: BLOX - -BLOX.BProgress -============== - -Defined in namespace BLOX -Superclass: BLOX.BExtended -Category: Graphics-Examples - I show how much of a task has been completed. - -* Menu: - -* BLOX.BProgress-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BProgress-accessing, Up: BLOX.BProgress - -BLOX.BProgress: accessing -------------------------- - -backgroundColor - Answer the background color of the widget. This is used for the - background of the non-filled part, as well as for the foreground - of the filled part. - -backgroundColor: aColor - Set the background color of the widget. This is used for the - background of the non-filled part, as well as for the foreground - of the filled part. - -filledColor - Answer the background color of the widget's filled part. - -filledColor: aColor - Set the background color of the widget's filled part. - -foregroundColor - Set the foreground color of the widget. This is used for the - non-filled part, while the background color also works as the - foreground of the filled part. - -foregroundColor: aColor - Set the foreground color of the widget. This is used for the - non-filled part, while the background color also works as the - foreground of the filled part. - -value - Answer the filled percentage of the receiver (0..1) - -value: newValue - Set the filled percentage of the receiver and update the - appearance. newValue must be between 0 and 1. - - - -File: gst-libs.info, Node: BLOX.BRadioButton, Next: BLOX.BRadioGroup, Prev: BLOX.BProgress, Up: BLOX - -BLOX.BRadioButton -================= - -Defined in namespace BLOX -Superclass: BLOX.BButton -Category: Graphics-Windows - I am just one in a group of mutually exclusive buttons. - -* Menu: - -* BLOX.BRadioButton-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BRadioButton-accessing, Up: BLOX.BRadioButton - -BLOX.BRadioButton: accessing ----------------------------- - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a selector accepting at most two arguments) when the receiver is - clicked. If the method accepts two arguments, the receiver is - passed as the first parameter. If the method accepts one or two - arguments, true is passed as the last parameter for - interoperability with BToggle widgets. - -value - Answer whether this widget is the selected one in its radio button - group. - -value: aBoolean - Answer whether this widget is the selected one in its radio button - group. Setting this property to false for a group's currently - selected button unhighlights all the buttons in that group. - - - -File: gst-libs.info, Node: BLOX.BRadioGroup, Next: BLOX.BRectangle, Prev: BLOX.BRadioButton, Up: BLOX - -BLOX.BRadioGroup -================ - -Defined in namespace BLOX -Superclass: BLOX.BContainer -Category: Graphics-Windows - I am used to group many mutually-exclusive radio buttons together. - In addition, just like every BContainer I can perform simple - management by putting widgets next to each other, from left to - right or (which is more useful in this particular case...) from - top to bottom. - -* Menu: - -* BLOX.BRadioGroup-accessing:: (instance) -* BLOX.BRadioGroup-widget protocol:: (instance) - - -File: gst-libs.info, Node: BLOX.BRadioGroup-accessing, Next: BLOX.BRadioGroup-widget protocol, Up: BLOX.BRadioGroup - -BLOX.BRadioGroup: accessing ---------------------------- - -value - Answer the index of the button that is currently selected, 1 being - the first button added to the radio button group. 0 means that no - button is selected - -value: value - Force the value-th button added to the radio button group to be - the selected one. - - - -File: gst-libs.info, Node: BLOX.BRadioGroup-widget protocol, Prev: BLOX.BRadioGroup-accessing, Up: BLOX.BRadioGroup - -BLOX.BRadioGroup: widget protocol ---------------------------------- - -destroyed - Private - The receiver has been destroyed, clear the corresponding - Tcl variable to avoid memory leaks. - - - -File: gst-libs.info, Node: BLOX.BRectangle, Next: BLOX.BScrolledCanvas, Prev: BLOX.BRadioGroup, Up: BLOX - -BLOX.BRectangle -=============== - -Defined in namespace BLOX -Superclass: BLOX.BBoundingBox -Category: Graphics-Windows - I only draw rectangles but I can do that very well. - -* Menu: - -* BLOX.BRectangle-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BRectangle-accessing, Up: BLOX.BRectangle - -BLOX.BRectangle: accessing --------------------------- - -outlineColor - Answer the color with which the outline of the rectangle is drawn. - -outlineColor: color - Set the color with which the outline of the rectangle is drawn. - -width - Answer the width with which the outline of the rectangle is drawn. - -width: pixels - Set the width with which the outline of the rectangle is drawn. - - - -File: gst-libs.info, Node: BLOX.BScrolledCanvas, Next: BLOX.BSpline, Prev: BLOX.BRectangle, Up: BLOX - -BLOX.BScrolledCanvas -==================== - -Defined in namespace BLOX -Superclass: BLOX.BCanvas -Category: Graphics-Windows - I am much similar to BCanvas, but I sport, in addition, two fancy - scroll bars. This is just a convenience, since it could be easily - done when creating the canvas... - -* Menu: - - -File: gst-libs.info, Node: BLOX.BSpline, Next: BLOX.BText, Prev: BLOX.BScrolledCanvas, Up: BLOX - -BLOX.BSpline -============ - -Defined in namespace BLOX -Superclass: BLOX.BPolyline -Category: Graphics-Windows - Unlike my father BPolyline, I am more smooth at doing my job. - -* Menu: - -* BLOX.BSpline-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BSpline-accessing, Up: BLOX.BSpline - -BLOX.BSpline: accessing ------------------------ - -smoothness - Answer the degree of smoothness desired for curves. Each spline - will be approximated with this number of line segments. - -smoothness: anInteger - Set the degree of smoothness desired for curves. Each spline will - be approximated with this number of line segments. - - - -File: gst-libs.info, Node: BLOX.BText, Next: BLOX.BTextAttributes, Prev: BLOX.BSpline, Up: BLOX - -BLOX.BText -========== - -Defined in namespace BLOX -Superclass: BLOX.BViewport -Category: Graphics-Windows - I represent a text viewer with pretty good formatting options. - -* Menu: - -* BLOX.BText class-accessing:: (class) -* BLOX.BText class-instance creation:: (class) -* BLOX.BText-accessing:: (instance) -* BLOX.BText-attributes:: (instance) -* BLOX.BText-geometry management:: (instance) -* BLOX.BText-images:: (instance) -* BLOX.BText-inserting text:: (instance) -* BLOX.BText-position & lines:: (instance) - - -File: gst-libs.info, Node: BLOX.BText class-accessing, Next: BLOX.BText class-instance creation, Up: BLOX.BText - -BLOX.BText class: accessing ---------------------------- - -emacsLike - Answer whether we are using Emacs or Motif key bindings. - -emacsLike: aBoolean - Set whether we are using Emacs or Motif key bindings. - - - -File: gst-libs.info, Node: BLOX.BText class-instance creation, Next: BLOX.BText-accessing, Prev: BLOX.BText class-accessing, Up: BLOX.BText - -BLOX.BText class: instance creation ------------------------------------ - -newReadOnly: parent - Answer a new read-only text widget (read-only is achieved simply - by setting its state to be disabled) - - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-4 smalltalk-2.1.7/doc/gst-libs.info-4 --- smalltalk-2.1.6/doc/gst-libs.info-4 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-4 1970-01-01 01:00:00.000000000 +0100 @@ -1,989 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: BLOX.BText-accessing, Next: BLOX.BText-attributes, Prev: BLOX.BText class-instance creation, Up: BLOX.BText - -BLOX.BText: accessing ---------------------- - -backgroundColor - Answer the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -backgroundColor: value - Set the value of the backgroundColor option for the widget. - Specifies the normal background color to use when displaying the - widget. - -callback - Answer a DirectedMessage that is sent when the receiver is - modified, or nil if none has been set up. - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a zero- or one-argument selector) when the receiver is modified. - If the method accepts an argument, the receiver is passed. - -contents - Return the contents of the widget - -contents: aString - Set the contents of the widget - -font - Answer the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -font: value - Set the value of the font option for the widget. Specifies the - font to use when drawing text inside the widget. The font can be - given as either an X font name or a Blox font description string. - X font names are given as many fields, each led by a minus, and - each of which can be replaced by an * to indicate a default value - is ok: foundry, family, weight, slant, setwidth, addstyle, pixel - size, point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor - Answer the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -foregroundColor: value - Set the value of the foregroundColor option for the widget. - Specifies the normal foreground color to use when displaying the - widget. - -getSelection - Answer an empty string if the widget has no selection, else answer - the currently selected text - -selectBackground - Answer the value of the selectBackground option for the widget. - Specifies the background color to use when displaying selected - parts of the widget. - -selectBackground: value - Set the value of the selectBackground option for the widget. - Specifies the background color to use when displaying selected - parts of the widget. - -selectForeground - Answer the value of the selectForeground option for the widget. - Specifies the foreground color to use when displaying selected - parts of the widget. - -selectForeground: value - Set the value of the selectForeground option for the widget. - Specifies the foreground color to use when displaying selected - parts of the widget. - -wrap - Answer the value of the wrap option for the widget. Specifies how - to handle lines in the text that are too long to be displayed in a - single line of the text's window. The value must be #none or #char - or #word. A wrap mode of none means that each line of text appears - as exactly one line on the screen; extra characters that do not - fit on the screen are not displayed. In the other modes each line - of text will be broken up into several screen lines if necessary - to keep all the characters visible. In char mode a screen line - break may occur after any character; in word mode a line break - will only be made at word boundaries. - -wrap: value - Set the value of the wrap option for the widget. Specifies how to - handle lines in the text that are too long to be displayed in a - single line of the text's window. The value must be #none or #char - or #word. A wrap mode of none means that each line of text appears - as exactly one line on the screen; extra characters that do not - fit on the screen are not displayed. In the other modes each line - of text will be broken up into several screen lines if necessary - to keep all the characters visible. In char mode a screen line - break may occur after any character; in word mode a line break - will only be made at word boundaries. - - - -File: gst-libs.info, Node: BLOX.BText-attributes, Next: BLOX.BText-geometry management, Prev: BLOX.BText-accessing, Up: BLOX.BText - -BLOX.BText: attributes ----------------------- - -insertAtEnd: aString attribute: attr - Clear the selection and append aString at the end of the widget. - Use the given attributes to format the text. - -insertText: aString attribute: attr - Insert aString in the widget at the current insertion point, - replacing the currently selected text (if any). Use the given - attributes to format the text. - -removeAttributes - Remove any kind of formatting from the text in the widget - -removeAttributesFrom: aPoint to: endPoint - Remove any kind of formatting from the text in the widget between - the given endpoints. The two endpoints are Point objects in which - both coordinates are 1-based: the first line is line 1, and the - first character in the first line is character 1. - -setAttributes: attr from: aPoint to: endPoint - Add the formatting given by attr to the text in the widget between - the given endpoints. The two endpoints are Point objects in which - both coordinates are 1-based: the first line is line 1, and the - first character in the first line is character 1. - - - -File: gst-libs.info, Node: BLOX.BText-geometry management, Next: BLOX.BText-images, Prev: BLOX.BText-attributes, Up: BLOX.BText - -BLOX.BText: geometry management -------------------------------- - -child: child height: value - Set the height of the given child to be `value' pixels. - -child: child heightOffset: value - Adjust the height of the given child to be given by `value' more - pixels. - -child: child width: value - Set the width of the given child to be `value' pixels. - -child: child widthOffset: value - Adjust the width of the given child to be given by `value' more - pixels. - -child: child x: value - Never fail and do nothing, the children stay where the text ended - at the time each child was added in the widget - -child: child xOffset: value - This method should not be called for instances of this class. - -child: child y: value - Never fail and do nothing, the children stay where the text ended - at the time each child was added in the widget - -child: child yOffset: value - This method should not be called for instances of this class. - -heightChild: child - Answer the given child's height in pixels. - -widthChild: child - Answer the given child's width in pixels. - -xChild: child - Answer the given child's top-left border's x coordinate. We - always answer 0 since the children actually move when the text - widget scrolls - -yChild: child - Answer the given child's top-left border's y coordinate. We - always answer 0 since the children actually move when the text - widget scrolls - - - -File: gst-libs.info, Node: BLOX.BText-images, Next: BLOX.BText-inserting text, Prev: BLOX.BText-geometry management, Up: BLOX.BText - -BLOX.BText: images ------------------- - -insertImage: anObject - Insert an image where the insertion point currently lies in the - widget. anObject can be a String containing image data (either - Base-64 encoded GIF data, XPM data, or PPM data), or the result or - registering an image with #registerImage: - -insertImage: anObject at: position - Insert an image at the given position in the widget. The position - is a Point object in which both coordinates are 1-based: the first - line is line 1, and the first character in the first line is - character 1. anObject can be a String containing image data - (either Base-64 encoded GIF data, XPM data, or PPM data), or the - result or registering an image with #registerImage: - -insertImageAtEnd: anObject - Insert an image at the end of the widgets text. anObject can be a - String containing image data (either Base-64 encoded GIF data, XPM - data, or PPM data), or the result or registering an image with - #registerImage: - -registerImage: anObject - Register an image (whose data is in anObject, a String including - Base-64 encoded GIF data, XPM data, or PPM data) to be used in the - widget. If the same image must be used a lot of times, it is - better to register it once and then pass the result of - #registerImage: to the image insertion methods. Registered image - are private within each BText widget. Registering an image with a - widget and using it with another could give unpredictable results. - - - -File: gst-libs.info, Node: BLOX.BText-inserting text, Next: BLOX.BText-position & lines, Prev: BLOX.BText-images, Up: BLOX.BText - -BLOX.BText: inserting text --------------------------- - -insertAtEnd: aString - Clear the selection and append aString at the end of the widget. - -insertSelectedText: aString - Insert aString in the widget at the current insertion point, - leaving the currently selected text (if any) in place, and - selecting the text. - -insertText: aString - Insert aString in the widget at the current insertion point, - replacing the currently selected text (if any). - -insertText: aString at: position - Insert aString in the widget at the given position, replacing the - currently selected text (if any). The position is a Point object - in which both coordinates are 1-based: the first line is line 1, - and the first character in the first line is character 1. - -insertTextSelection: aString - Insert aString in the widget after the current selection, leaving - the currently selected text (if any) intact. - -invokeCallback - Generate a synthetic callback. - -nextPut: aCharacter - Clear the selection and append aCharacter at the end of the widget. - -nextPutAll: aString - Clear the selection and append aString at the end of the widget. - -nl - Clear the selection and append a linefeed character at the end of - the widget. - -refuseTabs - Arrange so that Tab characters, instead of being inserted in the - widget, traverse the widgets in the parent window. - -replaceSelection: aString - Insert aString in the widget at the current insertion point, - replacing the currently selected text (if any), and leaving the - text selected. - -searchString: aString - Search aString in the widget. If it is not found, answer zero, - else answer the 1-based line number and move the insertion point - to the place where the string was found. - -space - Clear the selection and append a space at the end of the widget. - - - -File: gst-libs.info, Node: BLOX.BText-position & lines, Prev: BLOX.BText-inserting text, Up: BLOX.BText - -BLOX.BText: position & lines ----------------------------- - -charsInLine: number - Answer how many characters are there in the number-th line - -currentColumn - Answer the 1-based column number where the insertion point - currently lies. - -currentLine - Answer the 1-based line number where the insertion point currently - lies. - -currentPosition - Answer a Point representing where the insertion point currently - lies. Both coordinates in the answer are 1-based: the first line - is line 1, and the first character in the first line is character - 1. - -currentPosition: aPoint - Move the insertion point to the position given by aPoint. Both - coordinates in aPoint are interpreted as 1-based: the first line - is line 1, and the first character in the first line is character - 1. - -gotoLine: line end: aBoolean - If aBoolean is true, move the insertion point to the last - character of the line-th line (1 being the first line in the - widget); if aBoolean is false, move it to the start of the line-th - line. - -indexAt: point - Answer the position of the character that covers the pixel whose - coordinates within the text's window are given by the supplied - Point object. - -lineAt: number - Answer the number-th line of text in the widget - -numberOfLines - Answer the number of lines in the widget - -selectFrom: first to: last - Select the text between the given endpoints. The two endpoints - are Point objects in which both coordinates are 1-based: the first - line is line 1, and the first character in the first line is - character 1. - -setToEnd - Move the insertion point to the end of the widget - - - -File: gst-libs.info, Node: BLOX.BTextAttributes, Next: BLOX.BTextBindings, Prev: BLOX.BText, Up: BLOX - -BLOX.BTextAttributes -==================== - -Defined in namespace BLOX -Superclass: Object -Category: Graphics-Windows - I help you creating wonderful, colorful BTexts. - -* Menu: - -* BLOX.BTextAttributes class-instance-creation shortcuts:: (class) -* BLOX.BTextAttributes-colors:: (instance) -* BLOX.BTextAttributes-setting attributes:: (instance) - - -File: gst-libs.info, Node: BLOX.BTextAttributes class-instance-creation shortcuts, Next: BLOX.BTextAttributes-colors, Up: BLOX.BTextAttributes - -BLOX.BTextAttributes class: instance-creation shortcuts -------------------------------------------------------- - -backgroundColor: color - Create a new BTextAttributes object resulting in text with the - given background color. - -black - Create a new BTextAttributes object resulting in black text. - -blue - Create a new BTextAttributes object resulting in blue text. - -center - Create a new BTextAttributes object resulting in centered - paragraphs. - -cyan - Create a new BTextAttributes object resulting in cyan text. - -darkCyan - Create a new BTextAttributes object resulting in dark cyan text. - -darkGreen - Create a new BTextAttributes object resulting in dark green text. - -darkMagenta - Create a new BTextAttributes object resulting in dark purple text. - -events: aBTextBindings - Create a new BTextAttributes object for text that responds to - events according to the callbacks established in aBTextBindings. - -font: font - Create a new BTextAttributes object resulting in text with the - given font. The font can be given as either an X font name or a - Blox font description string. X font names are given as many - fields, each led by a minus, and each of which can be replaced by - an * to indicate a default value is ok: foundry, family, weight, - slant, setwidth, addstyle, pixel size, point size (the same as - pixel size for historical reasons), horizontal resolution, - vertical resolution, spacing, width, charset and character - encoding. Blox font description strings have three fields, which - must be separated by a space and of which only the first is - mandatory: the font family, the font size in points (or in pixels - if a negative value is supplied), and a number of styles separated - by a space (valid styles are normal, bold, italic, underline and - overstrike). Examples of valid fonts are "Helvetica 10 Bold", - "Times -14", "Futura Bold Underline". You must enclose the font - family in braces if it is made of two or more words. - -foregroundColor: color - Create a new BTextAttributes object resulting in text with the - given foreground color. - -green - Create a new BTextAttributes object resulting in green text. - -magenta - Create a new BTextAttributes object resulting in magenta text. - -red - Create a new BTextAttributes object resulting in red text. - -strikeout - Create a new BTextAttributes object resulting in struck-out text. - -underline - Create a new BTextAttributes object resulting in underlined text. - -white - Create a new BTextAttributes object resulting in white text. - -yellow - Create a new BTextAttributes object resulting in yellow text. - - - -File: gst-libs.info, Node: BLOX.BTextAttributes-colors, Next: BLOX.BTextAttributes-setting attributes, Prev: BLOX.BTextAttributes class-instance-creation shortcuts, Up: BLOX.BTextAttributes - -BLOX.BTextAttributes: colors ----------------------------- - -black - Set the receiver so that applying it results in black text. - -blue - Set the receiver so that applying it results in blue text. - -cyan - Set the receiver so that applying it results in cyan text. - -darkCyan - Set the receiver so that applying it results in dark cyan text. - -darkGreen - Set the receiver so that applying it results in dark green text. - -darkMagenta - Set the receiver so that applying it results in dark magenta text. - -green - Set the receiver so that applying it results in green text. - -magenta - Set the receiver so that applying it results in magenta text. - -red - Set the receiver so that applying it results in red text. - -white - Set the receiver so that applying it results in white text. - -yellow - Set the receiver so that applying it results in black text. - - - -File: gst-libs.info, Node: BLOX.BTextAttributes-setting attributes, Prev: BLOX.BTextAttributes-colors, Up: BLOX.BTextAttributes - -BLOX.BTextAttributes: setting attributes ----------------------------------------- - -backgroundColor - Answer the value of the backgroundColor option for the text. - Specifies the background color to use when displaying text with - these attributes. nil indicates that the default value is not - overridden. - -backgroundColor: color - Set the value of the backgroundColor option for the text. - Specifies the background color to use when displaying text with - these attributes. nil indicates that the default value is not - overridden. - -center - Center the text to which these attributes are applied - -events - Answer the event bindings which apply to text subject to these - attributes - -events: aBTextBindings - Set the event bindings which apply to text subject to these - attributes - -font - Answer the value of the font option for the text. The font can be - given as either an X font name or a Blox font description string, - or nil if you want the widget's default font to apply. X font - names are given as many fields, each led by a minus, and each of - which can be replaced by an * to indicate a default value is ok: - foundry, family, weight, slant, setwidth, addstyle, pixel size, - point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -font: fontName - Set the value of the font option for the text. The font can be - given as either an X font name or a Blox font description string, - or nil if you want the widget's default font to apply. X font - names are given as many fields, each led by a minus, and each of - which can be replaced by an * to indicate a default value is ok: - foundry, family, weight, slant, setwidth, addstyle, pixel size, - point size (the same as pixel size for historical reasons), - horizontal resolution, vertical resolution, spacing, width, - charset and character encoding. Blox font description strings - have three fields, which must be separated by a space and of which - only the first is mandatory: the font family, the font size in - points (or in pixels if a negative value is supplied), and a number - of styles separated by a space (valid styles are normal, bold, - italic, underline and overstrike). Examples of valid fonts are - "Helvetica 10 Bold", "Times -14", "Futura Bold Underline". You - must enclose the font family in braces if it is made of two or - more words. - -foregroundColor - Answer the value of the foregroundColor option for the text. - Specifies the foreground color to use when displaying text with - these attributes. nil indicates that the default value is not - overridden. - -foregroundColor: color - Set the value of the foregroundColor option for the text. - Specifies the foreground color to use when displaying text with - these attributes. nil indicates that the default value is not - overridden. - -isCentered - Answer whether the text to which these attributes are applied is - centered - -isStruckout - Answer whether the text to which these attributes are applied is - struckout - -isUnderlined - Answer whether the text to which these attributes are applied is - underlined - -strikeout - Strike out the text to which these attributes are applied - -underline - Underline the text to which these attributes are applied - - - -File: gst-libs.info, Node: BLOX.BTextBindings, Next: BLOX.BTextTags, Prev: BLOX.BTextAttributes, Up: BLOX - -BLOX.BTextBindings -================== - -Defined in namespace BLOX -Superclass: BLOX.BEventTarget -Category: Graphics-Windows - This object is used to assign event handlers to particular - sections of text in a BText widget. To use it, you simply have to - add event handlers to it, and then create a BTextAttributes object - that refers to it. - -* Menu: - -* BLOX.BTextBindings class-instance creation:: (class) - - -File: gst-libs.info, Node: BLOX.BTextBindings class-instance creation, Up: BLOX.BTextBindings - -BLOX.BTextBindings class: instance creation -------------------------------------------- - -new - Create a new instance of the receiver. - - - -File: gst-libs.info, Node: BLOX.BTextTags, Next: BLOX.BToggle, Prev: BLOX.BTextBindings, Up: BLOX - -BLOX.BTextTags -============== - -Defined in namespace BLOX -Superclass: Object -Category: Graphics-Windows - I am a private class. I sit between a BText and BTextAttributes, - helping the latter in telling the former which attributes to use. - -* Menu: - - -File: gst-libs.info, Node: BLOX.BToggle, Next: BLOX.BTransientWindow, Prev: BLOX.BTextTags, Up: BLOX - -BLOX.BToggle -============ - -Defined in namespace BLOX -Superclass: BLOX.BButton -Category: Graphics-Windows - I represent a button whose choice can be included (by checking me) - or excluded (by leaving me unchecked). - -* Menu: - -* BLOX.BToggle-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.BToggle-accessing, Up: BLOX.BToggle - -BLOX.BToggle: accessing ------------------------ - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a selector accepting at most two arguments) when the receiver is - clicked. If the method accepts two arguments, the receiver is - passed as the first parameter. If the method accepts one or two - arguments, the state of the widget (true if it is selected, false - if it is not) is passed as the last parameter. - -invokeCallback - Generate a synthetic callback. - -value - Answer whether the button is in a selected (checked) state. - -value: aBoolean - Set whether the button is in a selected (checked) state and - generates a callback accordingly. - -variable: value - Set the value of Tk's variable option for the widget. - - - -File: gst-libs.info, Node: BLOX.BTransientWindow, Next: BLOX.BViewport, Prev: BLOX.BToggle, Up: BLOX - -BLOX.BTransientWindow -===================== - -Defined in namespace BLOX -Superclass: BLOX.BWindow -Category: Graphics-Windows - I am almost a boss. I represent a window which is logically linked - to another which sits higher in the widget hierarchy, e.g. a dialog - box - -* Menu: - -* BLOX.BTransientWindow class-instance creation:: (class) -* BLOX.BTransientWindow-widget protocol:: (instance) - - -File: gst-libs.info, Node: BLOX.BTransientWindow class-instance creation, Next: BLOX.BTransientWindow-widget protocol, Up: BLOX.BTransientWindow - -BLOX.BTransientWindow class: instance creation ----------------------------------------------- - -new - This method should not be called for instances of this class. - -new: parentWindow - Answer a new transient window attached to the given parent window - and with nothing in its title bar caption. - -new: label in: parentWindow - Answer a new transient window attached to the given parent window - and with `label' as its title bar caption. - - - -File: gst-libs.info, Node: BLOX.BTransientWindow-widget protocol, Prev: BLOX.BTransientWindow class-instance creation, Up: BLOX.BTransientWindow - -BLOX.BTransientWindow: widget protocol --------------------------------------- - -map - Map the window and inform the windows manager that the receiver is - a transient window working on behalf of its parent. The window is - also put in its parent window's window group: the window manager - might use this information, for example, to unmap all of the - windows in a group when the group's leader is iconified. - - - -File: gst-libs.info, Node: BLOX.BViewport, Next: BLOX.BWidget, Prev: BLOX.BTransientWindow, Up: BLOX - -BLOX.BViewport -============== - -Defined in namespace BLOX -Superclass: BLOX.BPrimitive -Category: Graphics-Windows - I represent an interface which is common to widgets that can be - scrolled, like list boxes or text widgets. - -* Menu: - -* BLOX.BViewport-accessing:: (instance) -* BLOX.BViewport-scrollbars:: (instance) - - -File: gst-libs.info, Node: BLOX.BViewport-accessing, Next: BLOX.BViewport-scrollbars, Up: BLOX.BViewport - -BLOX.BViewport: accessing -------------------------- - -connected - Private - Answer the name of Tk widget for the connected widget. - - - -File: gst-libs.info, Node: BLOX.BViewport-scrollbars, Prev: BLOX.BViewport-accessing, Up: BLOX.BViewport - -BLOX.BViewport: scrollbars --------------------------- - -horizontal - Answer whether an horizontal scrollbar is drawn in the widget if - needed. - -horizontal: aBoolean - Set whether an horizontal scrollbar is drawn in the widget if - needed. - -horizontalNeeded - Answer whether an horizontal scrollbar is needed to show all the - information in the widget. - -horizontalShown - Answer whether an horizontal scrollbar is drawn in the widget. - -vertical - Answer whether a vertical scrollbar is drawn in the widget if - needed. - -vertical: aBoolean - Set whether a vertical scrollbar is drawn in the widget if needed. - -verticalNeeded - Answer whether a vertical scrollbar is needed to show all the - information in the widget. - -verticalShown - Answer whether a vertical scrollbar is drawn in the widget. - - - -File: gst-libs.info, Node: BLOX.BWidget, Next: BLOX.BWindow, Prev: BLOX.BViewport, Up: BLOX - -BLOX.BWidget -============ - -Defined in namespace BLOX -Superclass: BLOX.Blox -Category: Graphics-Windows - I am the superclass for every widget except those related to - menus. I provide more common methods and geometry management - -* Menu: - -* BLOX.BWidget class-popups:: (class) -* BLOX.BWidget-accessing:: (instance) -* BLOX.BWidget-customization:: (instance) -* BLOX.BWidget-geometry management:: (instance) -* BLOX.BWidget-widget protocol:: (instance) - - -File: gst-libs.info, Node: BLOX.BWidget class-popups, Next: BLOX.BWidget-accessing, Up: BLOX.BWidget - -BLOX.BWidget class: popups --------------------------- - -new - Create an instance of the receiver inside a BPopupWindow; do not - map the window, answer the new widget. The created widget will - become a child of the window and be completely attached to it - (e.g. the geometry methods will modify the window's geometry). - Note that while the widget *seems* to be directly painted on the - root window, it actually belongs to the BPopupWindow; so don't - send #destroy to the widget to remove it, but rather to the window. - -popup: initializationBlock - Create an instance of the receiver inside a BPopupWindow; before - returning, pass the widget to the supplied initializationBlock, - then map the window. Answer the new widget. The created widget - will become a child of the window and be completely attached to it - (e.g. the geometry methods will modify the window's geometry). - Note that while the widget *seems* to be directly painted on the - root window, it actually belongs to the BPopupWindow; so don't - send #destroy to the widget to remove it, but rather to the window. - - - -File: gst-libs.info, Node: BLOX.BWidget-accessing, Next: BLOX.BWidget-customization, Prev: BLOX.BWidget class-popups, Up: BLOX.BWidget - -BLOX.BWidget: accessing ------------------------ - -borderWidth - Answer the value of the borderWidth option for the widget. - Specifies a non-negative value indicating the width of the 3-D - border to draw around the outside of the widget (if such a border - is being drawn; the effect option typically determines this). The - value may also be used when drawing 3-D effects in the interior of - the widget. The value is measured in pixels. - -borderWidth: value - Set the value of the borderWidth option for the widget. Specifies - a non-negative value indicating the width of the 3-D border to - draw around the outside of the widget (if such a border is being - drawn; the effect option typically determines this). The value may - also be used when drawing 3-D effects in the interior of the - widget. The value is measured in pixels. - -cursor - Answer the value of the cursor option for the widget. Specifies - the mouse cursor to be used for the widget. The value of the - option is given by the standard X cursor cursor, i.e., any of the - names defined in cursorcursor.h, without the leading XC_. - -cursor: value - Set the value of the cursor option for the widget. Specifies the - mouse cursor to be used for the widget. The value of the option is - given by the standard X cursor cursor, i.e., any of the names - defined in cursorcursor.h, without the leading XC_. - -effect - Answer the value of the effect option for the widget. Specifies - the effect desired for the widget's border. Acceptable values are - raised, sunken, flat, ridge, solid, and groove. The value - indicates how the interior of the widget should appear relative to - its exterior; for example, raised means the interior of the widget - should appear to protrude from the screen, relative to the - exterior of the widget. Raised and sunken give the traditional 3-D - appearance (for example, that of Xaw3D), while ridge and groove - give a "chiseled" appearance like that of Swing or GTK+'s Metal - theme. Flat and solid are not 3-D. - -effect: value - Set the value of the effect option for the widget. Specifies the - effect desired for the widget's border. Acceptable values are - raised, sunken, flat, ridge, solid, and groove. The value - indicates how the interior of the widget should appear relative to - its exterior; for example, raised means the interior of the widget - should appear to protrude from the screen, relative to the - exterior of the widget. Raised and sunken give the traditional 3-D - appearance (for example, that of Xaw3D), while ridge and groove - give a "chiseled" appearance like that of Swing or GTK+'s Metal - theme. Flat and solid are not 3-D. - -tabStop - Answer the value of the tabStop option for the widget. Determines - whether the window accepts the focus during keyboard traversal - (e.g., Tab and Shift-Tab). Before setting the focus to a window, - Blox consults the value of the tabStop option. A value of false - means that the window should be skipped entirely during keyboard - traversal. true means that the window should receive the input - focus as long as it is viewable (it and all of its ancestors are - mapped). If you do not set this option, Blox makes the decision - about whether or not to focus on the window: the current algorithm - is to skip the window if it is disabled, it has no key bindings, - or if it is not viewable. Of the standard widgets, BForm, - BContainer, BLabel and BImage have no key bindings by default. - -tabStop: value - Set the value of the tabStop option for the widget. Determines - whether the window accepts the focus during keyboard traversal - (e.g., Tab and Shift-Tab). Before setting the focus to a window, - Blox consults the value of the tabStop option. A value of false - means that the window should be skipped entirely during keyboard - traversal. true means that the window should receive the input - focus as long as it is viewable (it and all of its ancestors are - mapped). If you do not set this option, Blox makes the decision - about whether or not to focus on the window: the current algorithm - is to skip the window if it is disabled, it has no key bindings, - or if it is not viewable. Of the standard widgets, BForm, - BContainer, BLabel and BImage have no key bindings by default. - - - -File: gst-libs.info, Node: BLOX.BWidget-customization, Next: BLOX.BWidget-geometry management, Prev: BLOX.BWidget-accessing, Up: BLOX.BWidget - -BLOX.BWidget: customization ---------------------------- - -addChild: child - The widget identified by child has been added to the receiver. - This method is public not because you can call it, but because it - can be useful to override it, not forgetting the call to - basicAddChild, to perform some initialization on the children just - added. Answer the new child. - -create - Make the receiver able to respond to its widget protocol. This - method is public not because you can call it, but because it can - be useful to override it, not forgetting the call to super, to - perform some initialization on the primitive widget just created; - for an example of this, see the implementation of BButtonLike. - -initialize: parentWidget - This is called by #new: to initialize the widget (as the name - says...). The default implementation calls all the other methods - in the `customization' protocol and some private ones that take - care of making the receiver's status consistent, so you should - usually call it instead of doing everything by hand. This method - is public not because you can call it, but because it might be - useful to override it. Always answer the receiver. - -setInitialSize - This is called by #initialize: to set the widget's initial size. - The whole area is occupied by default. This method is public not - because you can call it, but because it can be useful to override - it. - - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-5 smalltalk-2.1.7/doc/gst-libs.info-5 --- smalltalk-2.1.6/doc/gst-libs.info-5 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-5 1970-01-01 01:00:00.000000000 +0100 @@ -1,1386 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: BLOX.BWidget-geometry management, Next: BLOX.BWidget-widget protocol, Prev: BLOX.BWidget-customization, Up: BLOX.BWidget - -BLOX.BWidget: geometry management ---------------------------------- - -boundingBox - Answer a Rectangle containing the bounding box of the receiver - -boundingBox: rect - Set the bounding box of the receiver to rect (a Rectangle). - -child: child height: value - Set the given child's height to value. The default implementation - of this method uses `rubber-sheet' geometry management as - explained in the comment to BWidget's #height method. You should - not use this method, which is automatically called by the child's - #height: method, but you might want to override it. The child's - property slots whose name ends with `Geom' are reserved for this - method. This method should never fail - if it doesn't apply to the - kind of geometry management that the receiver does, just do - nothing. - -child: child heightOffset: value - Adjust the given child's height by a fixed amount of value pixel. - This is meaningful for the default implementation, using - `rubber-sheet' geometry management as explained in the comment to - BWidget's #height and #heightOffset: methods. You should not use - this method, which is automatically called by the child's - #heightOffset: method, but you might want to override it. if it - doesn't apply to the kind of geometry management that the receiver - does, just add value to the current height of the widget. - -child: child stretch: aBoolean - This method is only used when on the path from the receiver to its - toplevel there is a BContainer. It decides whether child is among - the widgets that are stretched to fill the entire width of the - BContainer; if this has not been set for this widget, it is - propagated along the widget hierarchy. - -child: child width: value - Set the given child's width to value. The default implementation - of this method uses `rubber-sheet' geometry management as - explained in the comment to BWidget's #width method. You should - not use this method, which is automatically called by the child's - #width: method, but you might want to override it. The child's - property slots whose name ends with `Geom' are reserved for this - method. This method should never fail - if it doesn't apply to the - kind of geometry management that the receiver does, just do - nothing. - -child: child widthOffset: value - Adjust the given child's width by a fixed amount of value pixel. - This is meaningful for the default implementation, using - `rubber-sheet' geometry management as explained in the comment to - BWidget's #width and #widthOffset: methods. You should not use - this method, which is automatically called by the child's - #widthOffset: method, but you might want to override it. if it - doesn't apply to the kind of geometry management that the receiver - does, just add value to the current width of the widget. - -child: child x: value - Set the given child's x to value. The default implementation of - this method uses `rubber-sheet' geometry management as explained in - the comment to BWidget's #x method. You should not use this - method, which is automatically called by the child's #x: method, - but you might want to override it. The child's property slots - whose name ends with `Geom' are reserved for this method. This - method should never fail - if it doesn't apply to the kind of - geometry management that the receiver does, just do nothing. - -child: child xOffset: value - Adjust the given child's x by a fixed amount of value pixel. This - is meaningful for the default implementation, using `rubber-sheet' - geometry management as explained in the comment to BWidget's #x and - #xOffset: methods. You should not use this method, which is - automatically called by the child's #xOffset: method, but you - might want to override it. if it doesn't apply to the kind of - geometry management that the receiver does, just add value to the - current x of the widget. - -child: child y: value - Set the given child's y to value. The default implementation of - this method uses `rubber-sheet' geometry management as explained in - the comment to BWidget's #y method. You should not use this - method, which is automatically called by the child's #y: method, - but you might want to override it. The child's property slots - whose name ends with `Geom' are reserved for this method. This - method should never fail - if it doesn't apply to the kind of - geometry management that the receiver does, just do nothing. - -child: child yOffset: value - Adjust the given child's y by a fixed amount of value pixel. This - is meaningful for the default implementation, using `rubber-sheet' - geometry management as explained in the comment to BWidget's #y and - #yOffset: methods. You should not use this method, which is - automatically called by the child's #yOffset: method, but you - might want to override it. if it doesn't apply to the kind of - geometry management that the receiver does, just add value to the - current y of the widget. - -extent - Answer a Point containing the receiver's size - -extent: extent - Set the receiver's size to the width and height contained in extent - (a Point). - -height - Answer the `variable' part of the receiver's height within the - parent widget. The value returned does not include any fixed - amount of pixels indicated by #heightOffset: and must be - interpreted in a relative fashion: the ratio of the returned value - to the current size of the parent will be preserved upon resize. - This apparently complicated method is known as `rubber sheet' - geometry management. Behavior if the left or right edges are not - within the client area of the parent is not defined - the window - might be clamped or might be positioned according to the - specification. - -height: value - Set to `value' the height of the widget within the parent widget. - The value is specified in a relative fashion as an integer, so - that the ratio of `value' to the current size of the parent will be - preserved upon resize. This apparently complicated method is known - as `rubber sheet' geometry management. - -heightAbsolute - Force a recalculation of the layout of widgets in the receiver's - parent, then answer the current height of the receiver in pixels. - -heightChild: child - Answer the given child's height. The default implementation of - this method uses `rubber-sheet' geometry management as explained in - the comment to BWidget's #height method. You should not use this - method, which is automatically called by the child's #height - method, but you might want to override. The child's property - slots whose name ends with `Geom' are reserved for this method. - This method should never fail - if it doesn't apply to the kind of - geometry management that the receiver does, just return 0. - -heightOffset - Private - Answer the pixels to be added or subtracted to the height - of the receiver, with respect to the value set in a relative - fashion through the #height: method. - - and - -heightOffset: value - Add or subtract to the height of the receiver a fixed amount of - `value' pixels, with respect to the value set in a relative - fashion through the #height: method. Usage of this method is - deprecated; use #inset: and BContainers instead. - -heightPixels: value - Set the current height of the receiver to `value' pixels. Note - that, after calling this method, #height will answer 0, which is - logical considering that there is no `variable' part of the size - (refer to #height and #height: for more explanations). - -inset: pixels - Inset the receiver's bounding box by the specified amount. - -left: left top: top right: right bottom: bottom - Set the bounding box of the receiver through its components. - -pos: position - Set the receiver's origin to the width and height contained in - position (a Point). - -posHoriz: aBlox - Position the receiver immediately to the right of aBlox. - -posVert: aBlox - Position the receiver just below aBlox. - -stretch: aBoolean - This method is only considered when on the path from the receiver - to its toplevel there is a BContainer. It decides whether we are - among the widgets that are stretched to fill the entire width of - the BContainer. - -width - Answer the `variable' part of the receiver's width within the - parent widget. The value returned does not include any fixed - amount of pixels indicated by #widthOffset: and must be - interpreted in a relative fashion: the ratio of the returned value - to the current size of the parent will be preserved upon resize. - This apparently complicated method is known as `rubber sheet' - geometry management. Behavior if the left or right edges are not - within the client area of the parent is not defined - the window - might be clamped or might be positioned according to the - specification. - -width: value - Set to `value' the width of the widget within the parent widget. - The value is specified in a relative fashion as an integer, so - that the ratio of `value' to the current size of the parent will be - preserved upon resize. This apparently complicated method is known - as `rubber sheet' geometry management. - -width: xSize height: ySize - Set the size of the receiver through its components xSize and - ySize. - -widthAbsolute - Force a recalculation of the layout of widgets in the receiver's - parent, then answer the current width of the receiver in pixels. - -widthChild: child - Answer the given child's width. The default implementation of this - method uses `rubber-sheet' geometry management as explained in the - comment to BWidget's #width method. You should not use this - method, which is automatically called by the child's #width method, - but you might want to override. The child's property slots whose - name ends with `Geom' are reserved for this method. This method - should never fail - if it doesn't apply to the kind of geometry - management that the receiver does, just return 0. - -widthOffset - Private - Answer the pixels to be added or subtracted to the width - of the receiver, with respect to the value set in a relative - fashion through the #width: method. - - and - -widthOffset: value - Add or subtract to the width of the receiver a fixed amount of - `value' pixels, with respect to the value set in a relative - fashion through the #width: method. Usage of this method is - deprecated; use #inset: and BContainers instead. - -widthPixels: value - Set the current width of the receiver to `value' pixels. Note that, - after calling this method, #width will answer 0, which is logical - considering that there is no `variable' part of the size (refer to - #width and #width: for more explanations). - -x - Answer the `variable' part of the receiver's x within the parent - widget. The value returned does not include any fixed amount of - pixels indicated by #xOffset: and must be interpreted in a relative - fashion: the ratio of the returned value to the current size of the - parent will be preserved upon resize. This apparently complicated - method is known as `rubber sheet' geometry management. Behavior - if the left or right edges are not within the client area of the - parent is not defined - the window might be clamped or might be - positioned according to the specification. - -x: value - Set to `value' the x of the widget within the parent widget. The - value is specified in a relative fashion as an integer, so that the - ratio of `value' to the current size of the parent will be - preserved upon resize. This apparently complicated method is known - as `rubber sheet' geometry management. - -x: xPos y: yPos - Set the origin of the receiver through its components xPos and - yPos. - -x: xPos y: yPos width: xSize height: ySize - Set the bounding box of the receiver through its origin and size. - -xAbsolute - Force a recalculation of the layout of widgets in the receiver's - parent, then answer the current x of the receiver in pixels. - -xChild: child - Answer the given child's x. The default implementation of this - method uses `rubber-sheet' geometry management as explained in the - comment to BWidget's #x method. You should not use this method, - which is automatically called by the child's #x method, but you - might want to override. The child's property slots whose name - ends with `Geom' are reserved for this method. This method should - never fail - if it doesn't apply to the kind of geometry - management that the receiver does, just return 0. - -xOffset - Private - Answer the pixels to be added or subtracted to the x of - the receiver, with respect to the value set in a relative fashion - through the #x: method. - - and - -xOffset: value - Add or subtract to the x of the receiver a fixed amount of `value' - pixels, with respect to the value set in a relative fashion through - the #x: method. Usage of this method is deprecated; use #inset: - and BContainers instead. - -xPixels: value - Set the current x of the receiver to `value' pixels. Note that, - after calling this method, #x will answer 0, which is logical - considering that there is no `variable' part of the size (refer to - #x and #x: for more explanations). - -xRoot - Answer the x position of the receiver with respect to the top-left - corner of the desktop (including the offset of the virtual root - window under X). - -y - Answer the `variable' part of the receiver's y within the parent - widget. The value returned does not include any fixed amount of - pixels indicated by #yOffset: and must be interpreted in a relative - fashion: the ratio of the returned value to the current size of the - parent will be preserved upon resize. This apparently complicated - method is known as `rubber sheet' geometry management. Behavior - if the left or right edges are not within the client area of the - parent is not defined - the window might be clamped or might be - positioned according to the specification. - -y: value - Set to `value' the y of the widget within the parent widget. The - value is specified in a relative fashion as an integer, so that the - ratio of `value' to the current size of the parent will be - preserved upon resize. This apparently complicated method is known - as `rubber sheet' geometry management. - -yAbsolute - Force a recalculation of the layout of widgets in the receiver's - parent, then answer the current y of the receiver in pixels. - -yChild: child - Answer the given child's y. The default implementation of this - method uses `rubber-sheet' geometry management as explained in the - comment to BWidget's #y method. You should not use this method, - which is automatically called by the child's #y method, but you - might want to override. The child's property slots whose name - ends with `Geom' are reserved for this method. This method should - never fail - if it doesn't apply to the kind of geometry - management that the receiver does, just return 0. - -yOffset - Private - Answer the pixels to be added or subtracted to the y of - the receiver, with respect to the value set in a relative fashion - through the #y: method. - - and - -yOffset: value - Add or subtract to the y of the receiver a fixed amount of `value' - pixels, with respect to the value set in a relative fashion through - the #y: method. Usage of this method is deprecated; use #inset: - and BContainers instead. - -yPixels: value - Set the current y of the receiver to `value' pixels. Note that, - after calling this method, #y will answer 0, which is logical - considering that there is no `variable' part of the size (refer to - #y and #y: for more explanations). - -yRoot - Answer the y position of the receiver with respect to the top-left - corner of the desktop (including the offset of the virtual root - window under X). - - - -File: gst-libs.info, Node: BLOX.BWidget-widget protocol, Prev: BLOX.BWidget-geometry management, Up: BLOX.BWidget - -BLOX.BWidget: widget protocol ------------------------------ - -activate - At any given time, one window on each display is designated as the - focus window; any key press or key release events for the display - are sent to that window. This method allows one to choose which - window will have the focus in the receiver's display If the - application currently has the input focus on the receiver's - display, this method resets the input focus for the receiver's - display to the receiver. If the application doesn't currently have - the input focus on the receiver's display, Blox will remember the - receiver as the focus for its top-level; the next time the focus - arrives at the top-level, it will be redirected to the receiver - (this is because most window managers will set the focus only to - top-level windows, leaving it up to the application to redirect - the focus among the children of the top-level). - -activateNext - Activate the next widget in the focus `tabbing' order. The focus - order depends on the widget creation order; you can set which - widgets are in the order with the #tabStop: method. - -activatePrevious - Activate the previous widget in the focus `tabbing' order. The - focus order depends on the widget creation order; you can set - which widgets are in the order with the #tabStop: method. - -bringToTop - Raise the receiver so that it is above all of its siblings in the - widgets' z-order; the receiver will not be obscured by any - siblings and will obscure any siblings that overlap it. - -isActive - Return whether the receiver is the window that currently owns the - focus on its display. - -sendToBack - Lower the receiver so that it is below all of its siblings in the - widgets' z-order; the receiver will be obscured by any siblings - that overlap it and will not obscure any siblings. - - - -File: gst-libs.info, Node: BLOX.BWindow, Next: BLOX.Gui, Prev: BLOX.BWidget, Up: BLOX - -BLOX.BWindow -============ - -Defined in namespace BLOX -Superclass: BLOX.BForm -Category: Graphics-Windows - I am the boss. Nothing else could be viewed or interacted with if - it wasn't for me... )):-> - -* Menu: - -* BLOX.BWindow class-instance creation:: (class) -* BLOX.BWindow-accessing:: (instance) -* BLOX.BWindow-widget protocol:: (instance) - - -File: gst-libs.info, Node: BLOX.BWindow class-instance creation, Next: BLOX.BWindow-accessing, Up: BLOX.BWindow - -BLOX.BWindow class: instance creation -------------------------------------- - -new - Answer a new top-level window. - -new: label - Answer a new top-level window with `label' as its title bar - caption. - -popup: initializationBlock - This method should not be called for instances of this class. - - - -File: gst-libs.info, Node: BLOX.BWindow-accessing, Next: BLOX.BWindow-widget protocol, Prev: BLOX.BWindow class-instance creation, Up: BLOX.BWindow - -BLOX.BWindow: accessing ------------------------ - -callback - Answer a DirectedMessage that is sent to verify whether the - receiver must be destroyed when the user asks to unmap it. - -callback: aReceiver message: aSymbol - Set up so that aReceiver is sent the aSymbol message (the name of - a zero- or one-argument selector) when the user asks to unmap the - receiver. If the method accepts an argument, the receiver is - passed. If the method returns true, the window and its children - are destroyed (which is the default action, taken if no callback is - set up). If the method returns false, the window is left in place. - -invokeCallback - Generate a synthetic callback, destroying the window if no - callback was set up or if the callback method answers true. - -label - Answer the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - -label: value - Set the value of the label option for the widget. Specifies a - string to be displayed inside the widget. The way in which the - string is displayed depends on the particular widget and may be - determined by other options, such as anchor. For windows, this is - the title of the window. - -menu: value - Set the value of the menu option for the widget. Specifies a menu - widget to be used as a menubar. On the Macintosh, the menubar will - be displayed accross the top of the main monitor. On Microsoft - Windows and all UNIX platforms, the menu will appear accross the - toplevel window as part of the window dressing maintained by the - window manager. - -resizable - Answer the value of the resizable option for the widget. Answer - whether the user can be resize the window or not. If resizing is - disabled, then the window's size will be the size from the most - recent interactive resize or geometry-setting method. If there has - been no such operation then the window's natural size will be used. - -resizable: value - Set the value of the resizable option for the widget. Answer - whether the user can be resize the window or not. If resizing is - disabled, then the window's size will be the size from the most - recent interactive resize or geometry-setting method. If there has - been no such operation then the window's natural size will be used. - - - -File: gst-libs.info, Node: BLOX.BWindow-widget protocol, Prev: BLOX.BWindow-accessing, Up: BLOX.BWindow - -BLOX.BWindow: widget protocol ------------------------------ - -center - Center the window in the screen - -centerIn: view - Center the window in the given widget - -height - Answer the height of the window, as deduced from the geometry that - the window manager imposed on the window. - -height: anInteger - Ask the window manager to give the given height to the window. - -heightAbsolute - Answer the height of the window, as deduced from the geometry that - the window manager imposed on the window. - -heightOffset: value - This method should not be called for instances of this class. - -iconify - Map a window and in iconified state. If a window has not been - mapped yet, this is achieved by mapping the window in withdrawn - state first, and then iconifying it. - -isMapped - Answer whether the window is mapped - -isWindow - Answer `true'. - -map - Map the window and bring it to the topmost position in the Z-order. - -modalMap - Map the window while establishing an application-local grab for it. - An event loop is started that ends only after the window has been - destroyed. When a grab is set for a particular window, all - pointer events are restructed to the grab window and its - descendants in Blox's window hierarchy. Whenever the pointer is - within the grab window's subtree, the pointer will behave exactly - the same as if there had been no grab grab at all and all events - will be reported in the normal fashion. When the pointer is - outside the window's tree, button presses and releases and mouse - motion events are reported to the grabbing window, and window - entry and window exit events are ignored. In other words, windows - outside the grab subtree will be visible on the screen but they - will be insensitive until the grab is released. The tree of - windows underneath the grab window can include top-level windows, - in which case all of those top-level windows and their descendants - will continue to receive mouse events during the grab. Keyboard - events (key presses and key releases) are delivered as usual: the - window manager controls which application receives keyboard - events, and if they are sent to any window in the grabbing - application then they are redirected to the window owning the - focus. - -state - Set the value of the state option for the window. Specifies one - of four states for the window: either normal, iconic, withdrawn, - or (Windows only) zoomed. - -state: aSymbol - Raise an error. To set a BWindow's state, use #map and #unmap. - -unmap - Unmap a window, causing it to be forgotten about by the window - manager - -width - Answer the width of the window, as deduced from the geometry that - the window manager imposed on the window. - -width: anInteger - Ask the window manager to give the given width to the window. - -width: xSize height: ySize - Ask the window manager to give the given width and height to the - window. - -widthAbsolute - Answer the width of the window, as deduced from the geometry that - the window manager imposed on the window. - -widthOffset: value - This method should not be called for instances of this class. - -window - Answer the receiver. - -x - Answer the x coordinate of the window's top-left corner, as - deduced from the geometry that the window manager imposed on the - window. - -x: anInteger - Ask the window manager to move the window's left border to the - given x coordinate, keeping the size unchanged - -x: xPos y: yPos - Ask the window manager to move the window's top-left corner to the - given coordinates, keeping the size unchanged - -x: xPos y: yPos width: xSize height: ySize - Ask the window manager to give the requested geometry to the - window. - -xAbsolute - Answer the x coordinate of the window's top-left corner, as - deduced from the geometry that the window manager imposed on the - window. - -xOffset: value - This method should not be called for instances of this class. - -y - Answer the y coordinate of the window's top-left corner, as - deduced from the geometry that the window manager imposed on the - window. - -y: anInteger - Ask the window manager to move the window's left border to the - given y coordinate, keeping the size unchanged - -yAbsolute - Answer the y coordinate of the window's top-left corner, as - deduced from the geometry that the window manager imposed on the - window. - -yOffset: value - This method should not be called for instances of this class. - - - -File: gst-libs.info, Node: BLOX.Gui, Prev: BLOX.BWindow, Up: BLOX - -BLOX.Gui -======== - -Defined in namespace BLOX -Superclass: Object -Category: Graphics-Windows - I am a small class which serves as a base for complex objects which - expose an individual protocol but internally use a Blox widget for - creating their user interface. - -* Menu: - -* BLOX.Gui-accessing:: (instance) - - -File: gst-libs.info, Node: BLOX.Gui-accessing, Up: BLOX.Gui - -BLOX.Gui: accessing -------------------- - -blox - Return instance of blox subclass which implements window - -blox: aBlox - Set instance of blox subclass which implements window - - - -File: gst-libs.info, Node: TCP, Next: I18N, Prev: BLOX, Up: Top - -TCP -*** - -* Menu: - - -Alphabetic list: -* TCP.AbstractSocket:: -* TCP.AbstractSocketImpl:: -* TCP.Datagram:: -* TCP.DatagramSocket:: -* TCP.DatagramSocketImpl:: -* TCP.ICMPSocketImpl:: -* TCP.IPAddress:: -* TCP.MulticastSocket:: -* TCP.MulticastSocketImpl:: -* TCP.OOBSocketImpl:: -* TCP.RawSocketImpl:: -* TCP.ReadBuffer:: -* TCP.ServerSocket:: -* TCP.Socket:: -* TCP.SocketAddress:: -* TCP.SocketImpl:: -* TCP.TCPSocketImpl:: -* TCP.UDPSocketImpl:: -* TCP.WriteBuffer:: - - -Class tree: - (Object) - (Stream) - (PositionableStream) - (ReadStream) -* TCP.ReadBuffer:: - (WriteStream) - (ReadWriteStream) - (ByteStream) - (FileDescriptor) -* TCP.AbstractSocketImpl:: -* TCP.DatagramSocketImpl:: -* TCP.MulticastSocketImpl:: -* TCP.UDPSocketImpl:: -* TCP.OOBSocketImpl:: -* TCP.RawSocketImpl:: -* TCP.ICMPSocketImpl:: -* TCP.SocketImpl:: -* TCP.TCPSocketImpl:: -* TCP.WriteBuffer:: -* TCP.AbstractSocket:: -* TCP.DatagramSocket:: -* TCP.MulticastSocket:: -* TCP.ServerSocket:: -* TCP.Socket:: -* TCP.Datagram:: -* TCP.SocketAddress:: -* TCP.IPAddress:: - - -File: gst-libs.info, Node: TCP.AbstractSocket, Next: TCP.AbstractSocketImpl, Up: TCP - -TCP.AbstractSocket -================== - -Defined in namespace TCP -Superclass: Stream -Category: Sockets-Streams - -* Menu: - -* TCP.AbstractSocket class-defaults:: (class) -* TCP.AbstractSocket class-instance creation:: (class) -* TCP.AbstractSocket class-timed-out operations:: (class) -* TCP.AbstractSocket-accessing:: (instance) -* TCP.AbstractSocket-printing:: (instance) -* TCP.AbstractSocket-socket options:: (instance) -* TCP.AbstractSocket-stream protocol:: (instance) -* TCP.AbstractSocket-testing:: (instance) - - -File: gst-libs.info, Node: TCP.AbstractSocket class-defaults, Next: TCP.AbstractSocket class-instance creation, Up: TCP.AbstractSocket - -TCP.AbstractSocket class: defaults ----------------------------------- - -defaultAddressClass - Answer the default address family to be used. In the library, the - address family is represented by a subclass of SocketAddress which - is by default IPAddress. - -defaultAddressClass: class - Set the default address family to be used. In the library, the - address family is represented by a subclass of SocketAddress which - is by default IPAddress. - -defaultImplementationClass - Answer the default implementation class. Depending on the - subclass, this might be the default stream socket implementation - class of the default address class, or rather its default datagram - socket implementation class - - - -File: gst-libs.info, Node: TCP.AbstractSocket class-instance creation, Next: TCP.AbstractSocket class-timed-out operations, Prev: TCP.AbstractSocket class-defaults, Up: TCP.AbstractSocket - -TCP.AbstractSocket class: instance creation -------------------------------------------- - -new - This method should not be called for instances of this class. - -new: implementation - Answer a new instance of the receiver, using as the underlying - layer the object passed as the `implementation' parameter; the - object is probably going to be some kind of AbstractSocketImpl. - - - -File: gst-libs.info, Node: TCP.AbstractSocket class-timed-out operations, Next: TCP.AbstractSocket-accessing, Prev: TCP.AbstractSocket class-instance creation, Up: TCP.AbstractSocket - -TCP.AbstractSocket class: timed-out operations ----------------------------------------------- - -checkPeriod - Answer the period that is to elapse between socket polls if data - data is not ready and the connection is still open (in - milliseconds) - -checkPeriod: anInteger - Set the period that is to elapse between socket polls if data data - is not ready and the connection is still open (in milliseconds) - -timeout - Answer the period that is to elapse between the request for (yet - unavailable) data and the moment when the connection is considered - dead (in milliseconds) - -timeout: anInteger - Set the period that is to elapse between the request for (yet - unavailable) data and the moment when the connection is considered - dead (in milliseconds) - - - -File: gst-libs.info, Node: TCP.AbstractSocket-accessing, Next: TCP.AbstractSocket-printing, Prev: TCP.AbstractSocket class-timed-out operations, Up: TCP.AbstractSocket - -TCP.AbstractSocket: accessing ------------------------------ - -address - Answer an IP address that is of common interest (this can be either - the local or the remote address, according to the definition in the - subclass). - -available - Answer whether there is data available on the socket. - -close - Close the socket represented by the receiver. - -flush - Flush any buffers used by the receiver. - -isOpen - Answer whether the connection between the receiver and the remote - endpoint is still alive. - -localAddress - Answer the local IP address of the socket. - -localPort - Answer the local IP port of the socket. - -port - Answer an IP port that is of common interest (this can be the port - for either the local or remote endpoint, according to the - definitions in the subclass - -remoteAddress - Answer the IP address of the socket's remote endpoint. - -remotePort - Answer the IP port of the socket's remote endpoint. - - - -File: gst-libs.info, Node: TCP.AbstractSocket-printing, Next: TCP.AbstractSocket-socket options, Prev: TCP.AbstractSocket-accessing, Up: TCP.AbstractSocket - -TCP.AbstractSocket: printing ----------------------------- - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-libs.info, Node: TCP.AbstractSocket-socket options, Next: TCP.AbstractSocket-stream protocol, Prev: TCP.AbstractSocket-printing, Up: TCP.AbstractSocket - -TCP.AbstractSocket: socket options ----------------------------------- - -soLinger - Answer the number of seconds that the socket is allowed to wait if - it promises reliable delivery but has unacknowledged/untransmitted - packets when it is closed, or nil if those packets are left to - their destiny or discarded. - -soLinger: linger - Set the number of seconds that the socket is allowed to wait if it - promises reliable delivery but has unacknowledged/untransmitted - packets when it is closed. - -soLingerOff - Specify that, even if the socket promises reliable delivery, any - packets that are unacknowledged/untransmitted when it is closed - are to be left to their destiny or discarded. - -species - Answer `String'. - - - -File: gst-libs.info, Node: TCP.AbstractSocket-stream protocol, Next: TCP.AbstractSocket-testing, Prev: TCP.AbstractSocket-socket options, Up: TCP.AbstractSocket - -TCP.AbstractSocket: stream protocol ------------------------------------ - -atEnd - By default, answer whether the connection is still open. - -next - Read another character from the socket, failing if the connection - is dead. - -nextPut: char - Write `char' to the socket, failing if the connection is dead. The - SIGPIPE signal is automatically caught and ignored by the system. - - - -File: gst-libs.info, Node: TCP.AbstractSocket-testing, Prev: TCP.AbstractSocket-stream protocol, Up: TCP.AbstractSocket - -TCP.AbstractSocket: testing ---------------------------- - -isExternalStream - Answer whether the receiver streams on a file or socket. - - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl, Next: TCP.Datagram, Prev: TCP.AbstractSocket, Up: TCP - -TCP.AbstractSocketImpl -====================== - -Defined in namespace TCP -Superclass: FileDescriptor -Category: Sockets-Protocols - -* Menu: - -* TCP.AbstractSocketImpl class-abstract:: (class) -* TCP.AbstractSocketImpl class-socket creation:: (class) -* TCP.AbstractSocketImpl-accessing:: (instance) -* TCP.AbstractSocketImpl-asynchronous operations:: (instance) -* TCP.AbstractSocketImpl-socket operations:: (instance) -* TCP.AbstractSocketImpl-socket options:: (instance) - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl class-abstract, Next: TCP.AbstractSocketImpl class-socket creation, Up: TCP.AbstractSocketImpl - -TCP.AbstractSocketImpl class: abstract --------------------------------------- - -addressClass - Answer the class responsible for handling addresses for the - receiver - -protocol - Answer the protocol parameter for `create' - -socketType - Answer the socket type parameter for `create'. - - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl class-socket creation, Next: TCP.AbstractSocketImpl-accessing, Prev: TCP.AbstractSocketImpl class-abstract, Up: TCP.AbstractSocketImpl - -TCP.AbstractSocketImpl class: socket creation ---------------------------------------------- - -new - Create a socket for the receiver. - - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl-accessing, Next: TCP.AbstractSocketImpl-asynchronous operations, Prev: TCP.AbstractSocketImpl class-socket creation, Up: TCP.AbstractSocketImpl - -TCP.AbstractSocketImpl: accessing ---------------------------------- - -connectTo: ipAddress port: port - Connect the receiver to the given IP address and port. `Connecting' - means attaching the remote endpoint of the socket. - -localAddress - Answer the address of the local endpoint of the socket (even if IP - is not being used, this identifies the machine that is bound to the - socket). - -localPort - Answer the port of the local endpoint of the socket (even if IP is - not being used, this identifies the service or process that is - bound to the socket). - -remoteAddress - Answer the address of the remote endpoint of the socket (even if IP - is not being used, this identifies the machine to which the socket - is connected). - -remotePort - Answer the port of the remote endpoint of the socket (even if IP - is not being used, this identifies the service or process to which - the socket is connected). - - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl-asynchronous operations, Next: TCP.AbstractSocketImpl-socket operations, Prev: TCP.AbstractSocketImpl-accessing, Up: TCP.AbstractSocketImpl - -TCP.AbstractSocketImpl: asynchronous operations ------------------------------------------------ - -ensureReadable - If the file is open, wait until data can be read from it. The wait - allows other Processes to run. - -ensureWriteable - If the file is open, wait until we can write to it. The wait - allows other Processes to run. - -waitForException - If the file is open, wait until an exceptional condition (such as - presence of out of band data) has occurred on it. The wait allows - other Processes to run. - - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl-socket operations, Next: TCP.AbstractSocketImpl-socket options, Prev: TCP.AbstractSocketImpl-asynchronous operations, Up: TCP.AbstractSocketImpl - -TCP.AbstractSocketImpl: socket operations ------------------------------------------ - -accept: implementationClass - Accept a connection on the receiver, and create a new instance of - implementationClass that will deal with the newly created active - server socket. - -addressClass - Answer the class responsible for handling addresses for the - receiver - -bindTo: ipAddress port: port - Bind the receiver to the given IP address and port. `Binding' means - attaching the local endpoint of the socket. - -fileOp: ioFuncIndex - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -fileOp: ioFuncIndex with: arg1 - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex with: arg1 ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -fileOp: ioFuncIndex with: arg1 with: arg2 - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex with: arg1 with: arg2 ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 - Private - Used to limit the number of primitives used by - FileStreams - -fileOp: ioFuncIndex with: arg1 with: arg2 with: arg3 ifFail: aBlock - Private - Used to limit the number of primitives used by - FileStreams. - -getSockName - Retrieve a ByteArray containing a sockaddr_in struct for the local - endpoint of the socket. - -listen: backlog - Make the receiver a passive server socket with a pending - connections queue of the given size. - - - -File: gst-libs.info, Node: TCP.AbstractSocketImpl-socket options, Prev: TCP.AbstractSocketImpl-socket operations, Up: TCP.AbstractSocketImpl - -TCP.AbstractSocketImpl: socket options --------------------------------------- - -optionAt: opt level: level put: anObject - Modify the value of a socket option. The option identifier is in - `opt' and the level is in `level'. anObject can be a boolean, - integer, socket address or ByteArray. A layer over this method is - provided for the most common socket options, so this will be rarely - used. - -optionAt: opt level: level size: size - Answer in a ByteArray of the given size the value of a socket - option. The option identifier is in `opt' and the level is in - `level'. A layer over this method is provided for the most common - socket options, so this will be rarely used. - -soError - Answer the pending error on the socket, or 0 if none - -soLinger - Answer the number of seconds by which a `close' operation can block - to ensure that all the packets have reliably reached the - destination, or nil if those packets are left to their destiny. - -soLinger: linger - Set the number of seconds by which a `close' operation can block - to ensure that all the packets have reliably reached the - destination. If linger is nil, those packets are left to their - destiny. - -soReuseAddr - Answer whether another socket can be bound the same local address - as this one. If you enable this option, you can actually have two - sockets with the same Internet port number; but the system won't - allow you to use the two identically-named sockets in a way that - would confuse the Internet. The reason for this option is that - some higher-level Internet protocols, including FTP, require you - to keep reusing the same socket number. - -soReuseAddr: aBoolean - Set whether another socket can be bound the same local address as - this one. - - - -File: gst-libs.info, Node: TCP.Datagram, Next: TCP.DatagramSocket, Prev: TCP.AbstractSocketImpl, Up: TCP - -TCP.Datagram -============ - -Defined in namespace TCP -Superclass: Object -Category: Sockets-Protocols - -* Menu: - -* TCP.Datagram class-instance creation:: (class) -* TCP.Datagram-accessing:: (instance) - - -File: gst-libs.info, Node: TCP.Datagram class-instance creation, Next: TCP.Datagram-accessing, Up: TCP.Datagram - -TCP.Datagram class: instance creation -------------------------------------- - -data: aByteArray - Answer a new datagram with the specified data. - -data: aByteArray address: ipAddress port: port - Answer a new datagram with the specified target socket, and - aByteArray as its data. - -object: object address: ipAddress port: port - Serialize the object onto a ByteArray, and create a Datagram with - the object as its contents, and the specified receiver. Note that - each invocation of this method creates a separate ObjectDumper; if - different objects that you're sending are likely to contain - references to the same objects, you should use - #object:objectDumper:address:port:. - -object: object objectDumper: od address: ipAddress port: port - Serialize the object onto a ByteArray, and create a Datagram with - the object as its contents, and the specified receiver. - Serialization takes place through ObjectDumper passed as `od', and - the stream attached to the ObjectDumper is resetted every time. - Using this method is indicated if different objects that you're - sending are likely to contain references to the same objects. - - - -File: gst-libs.info, Node: TCP.Datagram-accessing, Prev: TCP.Datagram class-instance creation, Up: TCP.Datagram - -TCP.Datagram: accessing ------------------------ - -address - Answer the address of the target socket - -address: ipAddress - Set the address of the target socket - -data - Answer the data attached to the datagram - -data: aByteArray - Set the data attached to the datagram - -get - Parse the data attached to the datagram through a newly created - ObjectDumper, and answer the resulting object. This method is - complementary to #object:address:port:. - -getThrough: objectDumper - Parse the data attached to the datagram through the given - ObjectDumper without touching the stream to which it is attached, - and answer the resulting object. The state of the ObjectDumper, - though, is updated. This method is complementary to - #object:objectDumper:address:port:. - -port - Answer the IP port of the target socket - -port: thePort - Set the IP port of the target socket - - - -File: gst-libs.info, Node: TCP.DatagramSocket, Next: TCP.DatagramSocketImpl, Prev: TCP.Datagram, Up: TCP - -TCP.DatagramSocket -================== - -Defined in namespace TCP -Superclass: TCP.AbstractSocket -Category: Sockets-Streams - -* Menu: - -* TCP.DatagramSocket class-accessing:: (class) -* TCP.DatagramSocket class-initialization:: (class) -* TCP.DatagramSocket class-instance creation:: (class) -* TCP.DatagramSocket-accessing:: (instance) -* TCP.DatagramSocket-direct operations:: (instance) - - -File: gst-libs.info, Node: TCP.DatagramSocket class-accessing, Next: TCP.DatagramSocket class-initialization, Up: TCP.DatagramSocket - -TCP.DatagramSocket class: accessing ------------------------------------ - -defaultBufferSize - Answer the default maximum size for input datagrams. - -defaultBufferSize: size - Set the default maximum size for input datagrams. - -defaultImplementationClass - Answer the default implementation class. Depending on the - subclass, this might be the default stream socket implementation - class of the default address class, or rather its default datagram - socket implementation class - - - -File: gst-libs.info, Node: TCP.DatagramSocket class-initialization, Next: TCP.DatagramSocket class-instance creation, Prev: TCP.DatagramSocket class-accessing, Up: TCP.DatagramSocket - -TCP.DatagramSocket class: initialization ----------------------------------------- - -initialize - Initialize the class to use an input datagram size of 128. - - - -File: gst-libs.info, Node: TCP.DatagramSocket class-instance creation, Next: TCP.DatagramSocket-accessing, Prev: TCP.DatagramSocket class-initialization, Up: TCP.DatagramSocket - -TCP.DatagramSocket class: instance creation -------------------------------------------- - -local: ipAddressOrString port: remotePort - Create a new socket and bind it to the given host (passed as a - String to be resolved or as an IPAddress), on the given port. - -new - Answer a new datagram socket (by default an UDP socket), without a - specified local address and port. - -port: localPort - Create a new socket and bind it to the local host on the given - port. - -remote: ipAddressOrString port: remotePort local: ipAddress port: localPort - Create a new socket and bind it to the given host (passed as a - String to be resolved or as an IPAddress), and to the given - remotePort. The default destination for the datagrams will be - ipAddressOrString (if not nil), on the remotePort port. - - - -File: gst-libs.info, Node: TCP.DatagramSocket-accessing, Next: TCP.DatagramSocket-direct operations, Prev: TCP.DatagramSocket class-instance creation, Up: TCP.DatagramSocket - -TCP.DatagramSocket: accessing ------------------------------ - -address - Answer the local address. - -bufferSize - Answer the size of the buffer in which datagrams are stored. - -bufferSize: size - Set the size of the buffer in which datagrams are stored. - -next - Read a datagram on the socket and answer it. - -nextPut: aDatagram - Send the given datagram on the socket. - -peek - Peek for a datagram on the socket and answer it. - -peek: datagram - Peek for a datagram on the socket, store it in `datagram', and - answer the datagram itself. - -port - Answer the local port. - -receive: datagram - Read a datagram from the socket, store it in `datagram', and - answer the datagram itself. - - - -File: gst-libs.info, Node: TCP.DatagramSocket-direct operations, Prev: TCP.DatagramSocket-accessing, Up: TCP.DatagramSocket - -TCP.DatagramSocket: direct operations -------------------------------------- - -nextFrom: ipAddress port: port - Answer the next datagram from the given address and port. - - - -File: gst-libs.info, Node: TCP.DatagramSocketImpl, Next: TCP.ICMPSocketImpl, Prev: TCP.DatagramSocket, Up: TCP - -TCP.DatagramSocketImpl -====================== - -Defined in namespace TCP -Superclass: TCP.AbstractSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.DatagramSocketImpl class-parameters:: (class) -* TCP.DatagramSocketImpl-accessing:: (instance) -* TCP.DatagramSocketImpl-socket operations:: (instance) - - -File: gst-libs.info, Node: TCP.DatagramSocketImpl class-parameters, Next: TCP.DatagramSocketImpl-accessing, Up: TCP.DatagramSocketImpl - -TCP.DatagramSocketImpl class: parameters ----------------------------------------- - -socketType - Answer the socket type parameter for `create'. - - - -File: gst-libs.info, Node: TCP.DatagramSocketImpl-accessing, Next: TCP.DatagramSocketImpl-socket operations, Prev: TCP.DatagramSocketImpl class-parameters, Up: TCP.DatagramSocketImpl - -TCP.DatagramSocketImpl: accessing ---------------------------------- - -bufferSize - Answer the size of the buffer in which datagrams are stored. - -bufferSize: size - Set the size of the buffer in which datagrams are stored. - - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-6 smalltalk-2.1.7/doc/gst-libs.info-6 --- smalltalk-2.1.6/doc/gst-libs.info-6 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-6 1970-01-01 01:00:00.000000000 +0100 @@ -1,1642 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: TCP.DatagramSocketImpl-socket operations, Prev: TCP.DatagramSocketImpl-accessing, Up: TCP.DatagramSocketImpl - -TCP.DatagramSocketImpl: socket operations ------------------------------------------ - -next - Retrieve a datagram from the receiver, answer a new Datagram object - -nextPut: aDatagram - Send aDatagram on the socket - -peek - Peek for a datagram on the receiver, answer a new Datagram object - -peek: aDatagram - Peek for a datagram on the receiver, answer aDatagram modified to - contain information on the newly received datagram. - -receive: aDatagram - Retrieve a datagram from the receiver, answer aDatagram modified - to contain information on the newly received datagram. - -receive: flags datagram: aDatagram - Receive a new datagram into `datagram', with the given flags, and - answer `datagram' itself; this is an abstract method. The flags - can be zero to receive the datagram, or `self msgPeek' to only - peek for it without removing it from the queue. - -send: aDatagram to: theReceiver port: port - Send aDatagram on the socket to the given receiver and port - - - -File: gst-libs.info, Node: TCP.ICMPSocketImpl, Next: TCP.IPAddress, Prev: TCP.DatagramSocketImpl, Up: TCP - -TCP.ICMPSocketImpl -================== - -Defined in namespace TCP -Superclass: TCP.RawSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.ICMPSocketImpl class-implementation:: (class) - - -File: gst-libs.info, Node: TCP.ICMPSocketImpl class-implementation, Up: TCP.ICMPSocketImpl - -TCP.ICMPSocketImpl class: implementation ----------------------------------------- - -addressClass - Answer the class that holds network addresses for ICMP sockets, - i.e. IPAddress. - - - -File: gst-libs.info, Node: TCP.IPAddress, Next: TCP.MulticastSocket, Prev: TCP.ICMPSocketImpl, Up: TCP - -TCP.IPAddress -============= - -Defined in namespace TCP -Superclass: TCP.SocketAddress -Category: Sockets-Protocols - -* Menu: - -* TCP.IPAddress class-constants:: (class) -* TCP.IPAddress class-initialization:: (class) -* TCP.IPAddress class-instance creation:: (class) -* TCP.IPAddress-accessing:: (instance) -* TCP.IPAddress-printing:: (instance) - - -File: gst-libs.info, Node: TCP.IPAddress class-constants, Next: TCP.IPAddress class-initialization, Up: TCP.IPAddress - -TCP.IPAddress class: constants ------------------------------- - -addressSize - Answer the size of an IPv4 address. - -version - Answer the version of IP that the receiver implements. - - - -File: gst-libs.info, Node: TCP.IPAddress class-initialization, Next: TCP.IPAddress class-instance creation, Prev: TCP.IPAddress class-constants, Up: TCP.IPAddress - -TCP.IPAddress class: initialization ------------------------------------ - -createLocalAddress - Answer an object representing a local address in the address - family for the receiver - -createLoopbackHost - Answer an object representing the loopback host in the address - family for the receiver. This is 127.0.0.1 for IPv4. - -createUnknownAddress - Answer an object representing an unkown address in the address - family for the receiver - -initialize - Set up the default implementation classes for the receiver - - - -File: gst-libs.info, Node: TCP.IPAddress class-instance creation, Next: TCP.IPAddress-accessing, Prev: TCP.IPAddress class-initialization, Up: TCP.IPAddress - -TCP.IPAddress class: instance creation --------------------------------------- - -fromArray: parts - Answer a new IPAddress from an array of numbers; the numbers are - to be thought as the dot-separated numbers in the standard - numbers-and-dots notation for IPv4 addresses. - -fromBytes: aByteArray - Answer a new IPAddress from a ByteArray containing the bytes in - the same order as the digit form: 131.175.6.2 would be represented - as #[131 175 6 2]. - -fromSockAddr: aByteArray port: portAdaptor - Private - Answer a new IPAddress from a ByteArray containing a C - sockaddr_in structure. The portAdaptor's value is changed to - contain the port that the structure refers to. - -fromString: aString - Answer a new IPAddress from a String containing the requested - address in digit form. Hexadecimal forms are not allowed. An - Internet host address is a number containing four bytes of data. - These are divided into two parts, a network number and a local - network address number within that network. The network number - consists of the first one, two or three bytes; the rest of the - bytes are the local address. Network numbers are registered with - the Network Information Center (NIC), and are divided into three - classes-A, B, and C. The local network address numbers of - individual machines are registered with the administrator of the - particular network. Class A networks have single-byte numbers in - the range 0 to 127. There are only a small number of Class A - networks, but they can each support a very large number of hosts - (several millions). Medium-sized Class B networks have two-byte - network numbers, with the first byte in the range 128 to 191; they - support several thousands of host, but are almost exhausted. Class - C networks are the smallest and the most commonly available; they - have three-byte network numbers, with the first byte in the range - 192-223. Class D (multicast, 224.0.0.0 to 239.255.255.255) and E - (research, 240.0.0.0 to 255.255.255.255) also have three-byte - network numbers. Thus, the first 1, 2, or 3 bytes of an Internet - address specifies a network. The remaining bytes of the Internet - address specify the address within that network. The Class A - network 0 is reserved for broadcast to all networks. In addition, - the host number 0 within each network is reserved for broadcast to - all hosts in that network. The Class A network 127 is reserved - for loopback; you can always use the Internet address `127.0.0.1' - to refer to the host machine (this is answered by the - #loopbackHost class method). Since a single machine can be a - member of multiple networks, it can have multiple Internet host - addresses. However, there is never supposed to be more than one - machine with the same host address. There are four forms of the - standard numbers-and-dots notation for Internet addresses: a.b.c.d - specifies all four bytes of the address individually; a.b.c - interprets as a 2-byte quantity, which is useful for specifying - host addresses in a Class B network with network address number - a.b; a.b intrprets the last part of the address as a 3-byte - quantity, which is useful for specifying host addresses in a Class - A network with network address number a. If only one part is - given, this corresponds directly to the host address number. - -new - This method should not be called for instances of this class. - -with: b1 with: b2 with: b3 with: b4 - Answer a new IPAddress whose bytes (from most-significant to - least-significant) are in the parameters. - - - -File: gst-libs.info, Node: TCP.IPAddress-accessing, Next: TCP.IPAddress-printing, Prev: TCP.IPAddress class-instance creation, Up: TCP.IPAddress - -TCP.IPAddress: accessing ------------------------- - -addressClass - Answer the `address class' of the receiver (see IPAddress - class>>#fromString:) - -asByteArray - Answer a read-only ByteArray of size four containing the - receiver's bytes in network order (big-endian) - -host - Answer an host number for the receiver; this is given by the last - three bytes for class A addresses, by the last two bytes for class - B addresses, else by the last byte. - -isMulticast - Answer whether the receiver reprensents an address reserved for - multicast datagram connections - -network - Answer a network number for the receiver; this is given by the - first three bytes for class C/D/E addresses, by the first two - bytes for class B addresses, else by the first byte. - -subnet - Answer an host number for the receiver; this is 0 for class A - addresses, while it is given by the last byte of the network - number for class B/C/D/E addresses. - - - -File: gst-libs.info, Node: TCP.IPAddress-printing, Prev: TCP.IPAddress-accessing, Up: TCP.IPAddress - -TCP.IPAddress: printing ------------------------ - -printOn: aStream - Print the receiver in dot notation. - - - -File: gst-libs.info, Node: TCP.MulticastSocket, Next: TCP.MulticastSocketImpl, Prev: TCP.IPAddress, Up: TCP - -TCP.MulticastSocket -=================== - -Defined in namespace TCP -Superclass: TCP.DatagramSocket -Category: Sockets-Streams - -* Menu: - -* TCP.MulticastSocket-instance creation:: (instance) - - -File: gst-libs.info, Node: TCP.MulticastSocket-instance creation, Up: TCP.MulticastSocket - -TCP.MulticastSocket: instance creation --------------------------------------- - -interface - Answer the local device supporting the multicast socket. This is - usually set to any local address. - -interface: ipAddress - Set the local device supporting the multicast socket. This is - usually set to any local address. - -join: ipAddress - Join the multicast socket at the given IP address - -leave: ipAddress - Leave the multicast socket at the given IP address - -nextPut: packet timeToLive: timeToLive - Send the datagram with a specific TTL (time-to-live) - -timeToLive - Answer the socket's datagrams' default time-to-live - -timeToLive: newTTL - Set the default time-to-live for the socket's datagrams - - - -File: gst-libs.info, Node: TCP.MulticastSocketImpl, Next: TCP.OOBSocketImpl, Prev: TCP.MulticastSocket, Up: TCP - -TCP.MulticastSocketImpl -======================= - -Defined in namespace TCP -Superclass: TCP.DatagramSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.MulticastSocketImpl-multicasting:: (instance) - - -File: gst-libs.info, Node: TCP.MulticastSocketImpl-multicasting, Up: TCP.MulticastSocketImpl - -TCP.MulticastSocketImpl: multicasting -------------------------------------- - -ipMulticastIf - Answer the local device for a multicast socket (in the form of an - address) - -ipMulticastIf: interface - Set the local device for a multicast socket (in the form of an - address, usually anyLocalAddress) - -join: ipAddress - Join the multicast socket at the given address - -leave: ipAddress - Leave the multicast socket at the given address - -timeToLive - Answer the time to live of the datagrams sent through the receiver - to a multicast socket. - -timeToLive: ttl - Set the time to live of the datagrams sent through the receiver to - a multicast socket. - - - -File: gst-libs.info, Node: TCP.OOBSocketImpl, Next: TCP.RawSocketImpl, Prev: TCP.MulticastSocketImpl, Up: TCP - -TCP.OOBSocketImpl -================= - -Defined in namespace TCP -Superclass: TCP.DatagramSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.OOBSocketImpl class-implementation:: (class) -* TCP.OOBSocketImpl-implementation:: (instance) - - -File: gst-libs.info, Node: TCP.OOBSocketImpl class-implementation, Next: TCP.OOBSocketImpl-implementation, Up: TCP.OOBSocketImpl - -TCP.OOBSocketImpl class: implementation ---------------------------------------- - -addressClass - Answer the class that holds network addresses for TCP sockets, - i.e. IPAddress. - - - -File: gst-libs.info, Node: TCP.OOBSocketImpl-implementation, Prev: TCP.OOBSocketImpl class-implementation, Up: TCP.OOBSocketImpl - -TCP.OOBSocketImpl: implementation ---------------------------------- - -canRead - Answer whether out-of-band data is available on the socket - -ensureReadable - Stop the process until an error occurs or out-of-band data becomes - available on the socket - - - -File: gst-libs.info, Node: TCP.RawSocketImpl, Next: TCP.ReadBuffer, Prev: TCP.OOBSocketImpl, Up: TCP - -TCP.RawSocketImpl -================= - -Defined in namespace TCP -Superclass: TCP.DatagramSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.RawSocketImpl class-parameters:: (class) - - -File: gst-libs.info, Node: TCP.RawSocketImpl class-parameters, Up: TCP.RawSocketImpl - -TCP.RawSocketImpl class: parameters ------------------------------------ - -socketType - Answer the socket type parameter for `create'. - - - -File: gst-libs.info, Node: TCP.ReadBuffer, Next: TCP.ServerSocket, Prev: TCP.RawSocketImpl, Up: TCP - -TCP.ReadBuffer -============== - -Defined in namespace TCP -Superclass: ReadStream -Category: Examples-Useful tools - I'm a ReadStream that, when the end of the stream is reached, - evaluates an user defined block to try to get some more data. - -* Menu: - -* TCP.ReadBuffer class-instance creation:: (class) -* TCP.ReadBuffer-buffer handling:: (instance) - - -File: gst-libs.info, Node: TCP.ReadBuffer class-instance creation, Next: TCP.ReadBuffer-buffer handling, Up: TCP.ReadBuffer - -TCP.ReadBuffer class: instance creation ---------------------------------------- - -on: aCollection - Answer a Stream that uses aCollection as a buffer. You should - ensure that the fillBlock is set before the first operation, - because the buffer will report that the data has ended until you - set the fillBlock. - - - -File: gst-libs.info, Node: TCP.ReadBuffer-buffer handling, Prev: TCP.ReadBuffer class-instance creation, Up: TCP.ReadBuffer - -TCP.ReadBuffer: buffer handling -------------------------------- - -atEnd - Answer whether the data stream has ended. - -bufferContents - Answer the data that is in the buffer, and empty it. - -fill - Fill the buffer with more data if it is empty, and answer true if - the fill block was able to read more data. - -fillBlock: block - Set the block that fills the buffer. It receives a collection and - the number of bytes to fill in it, and must return the number of - bytes actually read - -isEmpty - Answer whether the next input operation will force a buffer fill - -isFull - Answer whether the buffer has been just filled - -notEmpty - Check whether the next input operation will force a buffer fill - and answer true if it will not. - -pastEnd - Try to fill the buffer if the data stream has ended. - - - -File: gst-libs.info, Node: TCP.ServerSocket, Next: TCP.Socket, Prev: TCP.ReadBuffer, Up: TCP - -TCP.ServerSocket -================ - -Defined in namespace TCP -Superclass: TCP.AbstractSocket -Category: Sockets-Streams - -* Menu: - -* TCP.ServerSocket class-instance creation:: (class) -* TCP.ServerSocket-accessing:: (instance) -* TCP.ServerSocket-initializing:: (instance) - - -File: gst-libs.info, Node: TCP.ServerSocket class-instance creation, Next: TCP.ServerSocket-accessing, Up: TCP.ServerSocket - -TCP.ServerSocket class: instance creation ------------------------------------------ - -defaultQueueSize - Answer the default length of the queue for pending connections. - When the queue fills, new clients attempting to connect fail until - the server is send #accept to accept a connection from the queue. - -port: anInteger - Answer a new ServerSocket serving on any local address, on the - given port, with a pending connections queue of the default length. - -port: anInteger bindTo: ipAddress - Answer a new ServerSocket serving on the given address and port, - with a pending connections queue of the default length. - -port: anInteger queueSize: backlog - Answer a new ServerSocket serving on any local address, on the - given port, with a pending connections queue of the given length. - -port: anInteger queueSize: backlog bindTo: ipAddress - Answer a new ServerSocket serving on the given address and port, - and with a pending connections queue of the given length. - -queueSize: backlog - Answer a new ServerSocket serving on any local address and port, - with a pending connections queue of the given length. - -queueSize: backlog bindTo: ipAddress - Answer a new ServerSocket serving on the given local address, and - on any port, with a pending connections queue of the given length. - - - -File: gst-libs.info, Node: TCP.ServerSocket-accessing, Next: TCP.ServerSocket-initializing, Prev: TCP.ServerSocket class-instance creation, Up: TCP.ServerSocket - -TCP.ServerSocket: accessing ---------------------------- - -accept - Accept a new connection and create a new instance of Socket if - there is one, else answer nil. - -accept: socketClass - Accept a new connection and create a new instance of socketClass if - there is one, else answer nil. This is usually needed only to - create DatagramSockets. - -address - Answer the local address - -port - Answer the local port (the port that the passive socket is - listening on). - -primAccept: socketClass - Accept a new connection and create a new instance of Socket if - there is one, else fail. - -waitForConnection - Wait for a connection to be available, and suspend the currently - executing process in the meanwhile. - - - -File: gst-libs.info, Node: TCP.ServerSocket-initializing, Prev: TCP.ServerSocket-accessing, Up: TCP.ServerSocket - -TCP.ServerSocket: initializing ------------------------------- - -port: anInteger queueSize: backlog bindTo: localAddr - Initialize the ServerSocket so that it serves on the given address - and port, and has a pending connections queue of the given length. - - - -File: gst-libs.info, Node: TCP.Socket, Next: TCP.SocketAddress, Prev: TCP.ServerSocket, Up: TCP - -TCP.Socket -========== - -Defined in namespace TCP -Superclass: TCP.AbstractSocket -Category: Sockets-Streams - -* Menu: - -* TCP.Socket class-accessing:: (class) -* TCP.Socket class-instance creation:: (class) -* TCP.Socket class-tests:: (class) -* TCP.Socket class-well known ports:: (class) -* TCP.Socket-accessing:: (instance) -* TCP.Socket-out-of-band data:: (instance) -* TCP.Socket-printing:: (instance) -* TCP.Socket-stream protocol:: (instance) - - -File: gst-libs.info, Node: TCP.Socket class-accessing, Next: TCP.Socket class-instance creation, Up: TCP.Socket - -TCP.Socket class: accessing ---------------------------- - -defaultImplementationClass - Answer the default implementation class. Depending on the - subclass, this might be the default stream socket implementation - class of the default address class, or rather its default datagram - socket implementation class - -readBufferSize - Answer the size of the read buffer for newly-created sockets - -readBufferSize: anInteger - Set the size of the read buffer for newly-created sockets - -writeBufferSize - Answer the size of the write buffer for newly-created sockets - -writeBufferSize: anInteger - Set the size of the write buffer for newly-created sockets - - - -File: gst-libs.info, Node: TCP.Socket class-instance creation, Next: TCP.Socket class-tests, Prev: TCP.Socket class-accessing, Up: TCP.Socket - -TCP.Socket class: instance creation ------------------------------------ - -remote: ipAddressOrString port: remotePort - Create a new socket and connect to the given host (passed as a - String to be resolved or as a SocketAddress), and to the given - port. - -remote: ipAddressOrString port: remotePort local: ipAddress port: localPort - Create a new socket and connect to the given host (passed as a - String to be resolved or as a SocketAddress), and to the given - remotePort. Then bind it to the local address passed in - ipAddress, on the localPort port; if the former is nil, any local - address will do, and if the latter is 0, any local port will do. - - - -File: gst-libs.info, Node: TCP.Socket class-tests, Next: TCP.Socket class-well known ports, Prev: TCP.Socket class-instance creation, Up: TCP.Socket - -TCP.Socket class: tests ------------------------ - -loopbackTest - Send data from one socket to another on the local machine. Tests - most of the socket primitives. - -loopbackTest: bufferSizes - Send data from one socket to another on the local machine. Tests - most of the socket primitives. The parameter is the size of the - input and output buffer sizes. - -microTest - Extremely small test (try to receive SMTP header) - -producerConsumerTest - Send data from one socket to another on the local machine. Tests - most of the socket primitives and works with different processes. - -sendTest - Send data to the 'discard' socket of localhost. - -sendTest: host - Send data to the 'discard' socket of the given host. Tests the - speed of one-way data transfers across the network to the given - host. Note that many hosts do not run a discard server. - -tweakedLoopbackTest - Send data from one socket to another on the local machine, trying - to avoid buffering overhead. Tests most of the socket primitives. - Comparison of the results of loopbackTest and tweakedLoopbackTest - should give a measure of the overhead of buffering when - sending/receiving large quantities of data. - -udpLoopbackTest - Send data from one UDP socket to another on the local machine. - Tests most of the socket primitives and works with different - processes. - - - -File: gst-libs.info, Node: TCP.Socket class-well known ports, Next: TCP.Socket-accessing, Prev: TCP.Socket class-tests, Up: TCP.Socket - -TCP.Socket class: well known ports ----------------------------------- - -defaultPortAt: protocol - Answer the port that is used (by default) for the given service - (high level protocol) - -defaultPortAt: protocol ifAbsent: port - Answer the port that is used (by default) for the given service - (high level protocol), or the specified port if none is registered. - -defaultPortAt: protocol put: port - Associate the given port to the service specified by `protocol'. - -initialize - Initialize the receiver's defaults - -portCmdServer - Answer the port on which the rsh daemon listens - -portDayTime - Answer the port on which the TOD service listens - -portDiscard - Answer the port on which the DISCARD service listens - -portDNS - Answer the port on which the DNS listens - -portEcho - Answer the port on which the ECHO service listens - -portExecServer - Answer the port on which the exec server listens - -portFinger - Answer the port on which the finger daemon listens - -portFTP - Answer the port on which the FTP daemon listens - -portGopher - Answer the port on which the Gopher daemon listens - -portHTTP - Answer the port on which the http daemon listens - -portLoginServer - Answer the port on which the rlogin daemon listens - -portNetStat - Answer the port on which the NETSTAT service listens - -portNNTP - Answer the port on which the nntp daemon listens - -portPOP3 - Answer the port on which the pop3 daemon listens - -portReserved - Answer the last port reserved to privileged processes - -portSMTP - Answer the port on which the SMTP daemon listens - -portSSH - Answer the port on which the SSH daemon listens - -portSystat - Answer the port on which the SYSTAT service listens - -portTelnet - Answer the port on which the TELNET daemon listens - -portTimeServer - Answer the port on which the time server listens - -portWhois - Answer the port on which the WHOIS daemon listens - - - -File: gst-libs.info, Node: TCP.Socket-accessing, Next: TCP.Socket-out-of-band data, Prev: TCP.Socket class-well known ports, Up: TCP.Socket - -TCP.Socket: accessing ---------------------- - -address - Answer the address of the remote endpoint - -port - Answer the port of the remote endpoint - - - -File: gst-libs.info, Node: TCP.Socket-out-of-band data, Next: TCP.Socket-printing, Prev: TCP.Socket-accessing, Up: TCP.Socket - -TCP.Socket: out-of-band data ----------------------------- - -outOfBand - Return a datagram socket to be used for receiving out-of-band data - on the receiver. - - - -File: gst-libs.info, Node: TCP.Socket-printing, Next: TCP.Socket-stream protocol, Prev: TCP.Socket-out-of-band data, Up: TCP.Socket - -TCP.Socket: printing --------------------- - -printOn: aStream - Print a representation of the receiver on aStream - - - -File: gst-libs.info, Node: TCP.Socket-stream protocol, Prev: TCP.Socket-printing, Up: TCP.Socket - -TCP.Socket: stream protocol ---------------------------- - -atEnd - Answer whether more data is available on the socket - -available - Answer whether more data is available in the socket's read buffer - or from the operating system. - -bufferContents - Answer the current contents of the read buffer - -close - Flush and close the socket. - -fill - Fill the read buffer with data read from the socket - -flush - Flush the write buffer to the operating system - -isPeerAlive - Answer whether the connection with the peer remote machine is still - valid. - -next - Read a byte from the socket. This might yield control to other - Smalltalk Processes. - -next: count - Read `count' bytes from the socket. This might yield control to - other Smalltalk Processes. - -nextHunk - Answer the next buffers worth of stuff in the Stream represented - by the receiver. Do at most one actual input operation. - -nextPut: char - Write a character to the socket; this acts as a bit-bucket when - the socket is closed. This might yield control to other Smalltalk - Processes. - -nextPutAll: aString - Write aString to the socket; this acts as a bit-bucket when the - socket is closed. This might yield control to other Smalltalk - Processes. - -peek - Read a byte from the socket, without advancing the buffer; answer - nil if no more data is available. This might yield control to - other Smalltalk Processes. - -peekFor: anObject - Read a byte from the socket, advancing the buffer only if it - matches anObject; answer whether they did match or not. This - might yield control to other Smalltalk Processes. - -readBufferSize: size - Create a new read buffer of the given size (which is only possible - before the first read or if the current buffer is empty). - -writeBufferSize: size - Create a new write buffer of the given size, flushing the old one - is needed. This might yield control to other Smalltalk Processes. - - - -File: gst-libs.info, Node: TCP.SocketAddress, Next: TCP.SocketImpl, Prev: TCP.Socket, Up: TCP - -TCP.SocketAddress -================= - -Defined in namespace TCP -Superclass: Object -Category: Sockets-Protocols - -* Menu: - -* TCP.SocketAddress class-abstract:: (class) -* TCP.SocketAddress class-accessing:: (class) -* TCP.SocketAddress class-host name lookup:: (class) -* TCP.SocketAddress class-initialization:: (class) -* TCP.SocketAddress-accessing:: (instance) - - -File: gst-libs.info, Node: TCP.SocketAddress class-abstract, Next: TCP.SocketAddress class-accessing, Up: TCP.SocketAddress - -TCP.SocketAddress class: abstract ---------------------------------- - -fromSockAddr: aByteArray port: portAdaptor - Private - Answer a new IPAddress from a ByteArray containing a C - sockaddr structure. The portAdaptor's value is changed to contain - the port that the structure refers to. - - - -File: gst-libs.info, Node: TCP.SocketAddress class-accessing, Next: TCP.SocketAddress class-host name lookup, Prev: TCP.SocketAddress class-abstract, Up: TCP.SocketAddress - -TCP.SocketAddress class: accessing ----------------------------------- - -addressFamily - Answer the address family used for sockets whose endpoint is an - instance of the receiver. - -anyLocalAddress - Answer an IPAddress representing a local address. - -at: host cache: aBlock - Private - Answer the list of addresses associated to the given - host in the cache. If the host is not cached yet, evaluate aBlock - and cache and answer the result. - -defaultDatagramSocketImplClass - Answer the class that, by default, is used to map between the - Socket's protocol and a low-level C interface. - -defaultDatagramSocketImplClass: aClass - Set which class will be used by default to map between the - receiver's protocol and a low-level C interface. - -defaultRawSocketImplClass - Answer the class that, by default, is used to map between the - Socket's protocol and a low-level C interface. - -defaultRawSocketImplClass: aClass - Set which class will be used by default to map between the - receiver's protocol and a low-level C interface. - -defaultStreamSocketImplClass - Answer the class that, by default, is used to map between the - Socket's protocol and a low-level C interface. - -defaultStreamSocketImplClass: aClass - Set which class will be used by default to map between the - receiver's protocol and a low-level C interface. - -isDigitAddress: aString - Answer whether the receiver can interpret aStrnig as a valid - address without going through a resolver. - -localHostName - Answer the name of the local machine. - -loopbackHost - Answer an instance of the receiver representing the local machine - (127.0.0.1 in the IPv4 family). - -unknownAddress - Answer an instance of the receiver representing an unknown machine - (0.0.0.0 in the IPv4 family). - - - -File: gst-libs.info, Node: TCP.SocketAddress class-host name lookup, Next: TCP.SocketAddress class-initialization, Prev: TCP.SocketAddress class-accessing, Up: TCP.SocketAddress - -TCP.SocketAddress class: host name lookup ------------------------------------------ - -allByName: aString - Answer all the IP addresses that refer to the the given host. If - a digit address is passed in aString, the result is an array - containing the single passed address. If the host could not be - resolved to an IP address, answer nil. - -byName: aString - Answer a single IP address that refer to the the given host. If a - digit address is passed in aString, the result is the same as - using #fromString:. If the host could not be resolved to an IP - address, answer nil. - - - -File: gst-libs.info, Node: TCP.SocketAddress class-initialization, Next: TCP.SocketAddress-accessing, Prev: TCP.SocketAddress class-host name lookup, Up: TCP.SocketAddress - -TCP.SocketAddress class: initialization ---------------------------------------- - -createLocalAddress - Answer an object representing a local address in the address - family for the receiver - -createLoopbackHost - Answer an object representing the loopback host in the address - family for the receiver. By default this is the same as - #createLocalAddress, since the loopback host is actually a local - address that some implementations optimize specially. - -createUnknownAddress - Answer an object representing an unkown address in the address - family for the receiver - -flush - Flush the cached IP addresses. - -newRawSocket - Create a new raw socket, providing access to low-level network - protocols and interfaces for the protocol family represented by - the receiver (for example, the C protocol family PF_INET for the - IPAddress class) Ordinary user programs usually have no need to - use this method. - -update: aspect - Flush all the caches for IPAddress subclasses - - - -File: gst-libs.info, Node: TCP.SocketAddress-accessing, Prev: TCP.SocketAddress class-initialization, Up: TCP.SocketAddress - -TCP.SocketAddress: accessing ----------------------------- - -= anIPAddress - Answer whether the receiver and anIPAddress represent the same - machine. The host name is not checked because an IPAddress - created before a DNS is activated is named after its - numbers-and-dots notation, while the same IPAddress, created when - a DNS is active, is named after its resolved name. - -asByteArray - Convert the receiver to a ByteArray passed to the operating - system's socket functions) - -hash - Answer an hash value for the receiver - -name - Answer the host name (or the digit notation if the DNS could not - resolve the address). If the DNS answers a different IP address - for the same name, the second response is not cached and the digit - notation is also returned (somebody's likely playing strange jokes - with your DNS). - - - -File: gst-libs.info, Node: TCP.SocketImpl, Next: TCP.TCPSocketImpl, Prev: TCP.SocketAddress, Up: TCP - -TCP.SocketImpl -============== - -Defined in namespace TCP -Superclass: TCP.AbstractSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.SocketImpl class-parameters:: (class) -* TCP.SocketImpl-abstract:: (instance) -* TCP.SocketImpl-socket operations:: (instance) - - -File: gst-libs.info, Node: TCP.SocketImpl class-parameters, Next: TCP.SocketImpl-abstract, Up: TCP.SocketImpl - -TCP.SocketImpl class: parameters --------------------------------- - -socketType - Answer the socket type parameter for `create'. - - - -File: gst-libs.info, Node: TCP.SocketImpl-abstract, Next: TCP.SocketImpl-socket operations, Prev: TCP.SocketImpl class-parameters, Up: TCP.SocketImpl - -TCP.SocketImpl: abstract ------------------------- - -outOfBandImplClass - Return an implementation class to be used for out-of-band data on - the receiver. - - - -File: gst-libs.info, Node: TCP.SocketImpl-socket operations, Prev: TCP.SocketImpl-abstract, Up: TCP.SocketImpl - -TCP.SocketImpl: socket operations ---------------------------------- - -connectTo: ipAddress port: port - Try to connect the socket represented by the receiver to the given - remote machine. - -getPeerName - Retrieve a ByteArray containing a sockaddr_in struct for the - remote endpoint of the socket. - - - -File: gst-libs.info, Node: TCP.TCPSocketImpl, Next: TCP.UDPSocketImpl, Prev: TCP.SocketImpl, Up: TCP - -TCP.TCPSocketImpl -================= - -Defined in namespace TCP -Superclass: TCP.SocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.TCPSocketImpl class-implementation:: (class) -* TCP.TCPSocketImpl-implementation:: (instance) - - -File: gst-libs.info, Node: TCP.TCPSocketImpl class-implementation, Next: TCP.TCPSocketImpl-implementation, Up: TCP.TCPSocketImpl - -TCP.TCPSocketImpl class: implementation ---------------------------------------- - -addressClass - Answer the class that holds network addresses for TCP sockets, - i.e. IPAddress. - - - -File: gst-libs.info, Node: TCP.TCPSocketImpl-implementation, Prev: TCP.TCPSocketImpl class-implementation, Up: TCP.TCPSocketImpl - -TCP.TCPSocketImpl: implementation ---------------------------------- - -outOfBandImplClass - Return an implementation class to be used for out-of-band data on - the receiver. - - - -File: gst-libs.info, Node: TCP.UDPSocketImpl, Next: TCP.WriteBuffer, Prev: TCP.TCPSocketImpl, Up: TCP - -TCP.UDPSocketImpl -================= - -Defined in namespace TCP -Superclass: TCP.MulticastSocketImpl -Category: Sockets-Protocols - -* Menu: - -* TCP.UDPSocketImpl class-implementation:: (class) -* TCP.UDPSocketImpl-multicasting:: (instance) - - -File: gst-libs.info, Node: TCP.UDPSocketImpl class-implementation, Next: TCP.UDPSocketImpl-multicasting, Up: TCP.UDPSocketImpl - -TCP.UDPSocketImpl class: implementation ---------------------------------------- - -addressClass - Answer the class that holds network addresses for UDP sockets, - i.e. IPAddress. - - - -File: gst-libs.info, Node: TCP.UDPSocketImpl-multicasting, Prev: TCP.UDPSocketImpl class-implementation, Up: TCP.UDPSocketImpl - -TCP.UDPSocketImpl: multicasting -------------------------------- - -ipMulticastIf - Answer the local device for a multicast socket (in the form of an - address) - -ipMulticastIf: interface - Set the local device for a multicast socket (in the form of an - address, usually anyLocalAddress) - -join: ipAddress - Join the multicast socket at the given address - -leave: ipAddress - Leave the multicast socket at the given address - -primJoinLeave: ipAddress option: opt - Private - Used to join or leave a multicast service. - -timeToLive - Answer the time to live of the datagrams sent through the receiver - to a multicast socket. - -timeToLive: ttl - Set the time to live of the datagrams sent through the receiver to - a multicast socket. - - - -File: gst-libs.info, Node: TCP.WriteBuffer, Prev: TCP.UDPSocketImpl, Up: TCP - -TCP.WriteBuffer -=============== - -Defined in namespace TCP -Superclass: WriteStream -Category: Examples-Useful tools - I'm a WriteStream that, instead of growing the collection, - evaluates an user defined block and starts over with the same - collection. - -* Menu: - -* TCP.WriteBuffer-buffer handling:: (instance) - - -File: gst-libs.info, Node: TCP.WriteBuffer-buffer handling, Up: TCP.WriteBuffer - -TCP.WriteBuffer: buffer handling --------------------------------- - -flush - Evaluate the flushing block and reset the stream - -flushBlock: block - Set which block will be used to flush the buffer. The block will - be evaluated with a collection and an Integer n as parameters, and - will have to write the first n elements of the collection. - - - -File: gst-libs.info, Node: I18N, Next: XML, Prev: TCP, Up: Top - -I18N -**** - -* Menu: - - -Alphabetic list: -* I18N.BigEndianFileStream:: -* I18N.EncodedStream:: -* I18N.Encoder:: -* I18N.Encoders.ComposeUCS4BE:: -* I18N.Encoders.ComposeUCS4LE:: -* I18N.Encoders.FromUCS4:: -* I18N.Encoders.FromUTF7:: -* I18N.Encoders.Iconv:: -* I18N.Encoders.SplitUCS4BE:: -* I18N.Encoders.SplitUCS4LE:: -* I18N.Encoders.ToUCS4:: -* I18N.Encoders.ToUTF7:: -* I18N.FileStreamSegment:: -* I18N.IncompleteSequenceError:: -* I18N.InvalidCharsetError:: -* I18N.InvalidSequenceError:: -* I18N.LcMessages:: -* I18N.LcMessagesCatalog:: -* I18N.LcMessagesDomain:: -* I18N.LcMessagesDummyDomain:: -* I18N.LcMessagesMoFileVersion0:: -* I18N.LcMessagesTerritoryDomain:: -* I18N.LcMonetary:: -* I18N.LcMonetaryISO:: -* I18N.LcNumeric:: -* I18N.LcPrintFormats:: -* I18N.LcTime:: -* I18N.Locale:: -* I18N.LocaleConventions:: -* I18N.LocaleData:: -* I18N.RTEAlternativeNode:: -* I18N.RTEBinaryNode:: -* I18N.RTELiteralNode:: -* I18N.RTENegationNode:: -* I18N.RTEParameterNode:: -* I18N.RunTimeExpression:: - - -Class tree: - (Object) - (FileSegment) -* I18N.FileStreamSegment:: -* I18N.LocaleData:: -* I18N.LcMessagesDomain:: -* I18N.LcMessagesCatalog:: -* I18N.LcMessagesMoFileVersion0:: -* I18N.LcMessagesDummyDomain:: -* I18N.LcMessagesTerritoryDomain:: -* I18N.Locale:: -* I18N.LocaleConventions:: -* I18N.LcMessages:: -* I18N.LcPrintFormats:: -* I18N.LcNumeric:: -* I18N.LcMonetary:: -* I18N.LcMonetaryISO:: -* I18N.LcTime:: -* I18N.RunTimeExpression:: -* I18N.RTEAlternativeNode:: -* I18N.RTEBinaryNode:: -* I18N.RTELiteralNode:: -* I18N.RTENegationNode:: -* I18N.RTEParameterNode:: - (Signal) - (Exception) - (Error) -* I18N.IncompleteSequenceError:: -* I18N.InvalidSequenceError:: - (SystemExceptions.InvalidValue) - (SystemExceptions.InvalidArgument) -* I18N.InvalidCharsetError:: - (Stream) -* I18N.Encoder:: -* I18N.EncodedStream:: -* I18N.Encoders.FromUCS4:: -* I18N.Encoders.SplitUCS4BE:: -* I18N.Encoders.SplitUCS4LE:: -* I18N.Encoders.ToUTF7:: -* I18N.Encoders.Iconv:: -* I18N.Encoders.ToUCS4:: -* I18N.Encoders.ComposeUCS4BE:: -* I18N.Encoders.ComposeUCS4LE:: -* I18N.Encoders.FromUTF7:: - (PositionableStream) - (WriteStream) - (ReadWriteStream) - (ByteStream) - (FileDescriptor) - (FileStream) -* I18N.BigEndianFileStream:: - - -File: gst-libs.info, Node: I18N.BigEndianFileStream, Next: I18N.EncodedStream, Up: I18N - -I18N.BigEndianFileStream -======================== - -Defined in namespace I18N -Superclass: FileStream -Category: i18n-Messages - Unlike ByteStream and FileStream, this retrieves integer numbers in - big-endian (68000, PowerPC, SPARC) order. - -* Menu: - - -File: gst-libs.info, Node: I18N.EncodedStream, Next: I18N.Encoder, Prev: I18N.BigEndianFileStream, Up: I18N - -I18N.EncodedStream -================== - -Defined in namespace I18N -Superclass: I18N.Encoder -Category: i18n-Character sets - This class is a factory for subclasses of Encoder. The Encoder is - in practice a pipe, so the purpose of this class is simply to - construct an appropriate pipe. - -* Menu: - -* I18N.EncodedStream class-initializing:: (class) -* I18N.EncodedStream class-instance creation:: (class) - - -File: gst-libs.info, Node: I18N.EncodedStream class-initializing, Next: I18N.EncodedStream class-instance creation, Up: I18N.EncodedStream - -I18N.EncodedStream class: initializing --------------------------------------- - -initialize - Initialize the registry of the encoders to include the standard - encoders contained in the library. - -registerEncoderFor: arrayOfAliases toUCS4: toUCS4Class fromUCS4: fromUCS4Class - Register the two classes that will respectively convert from the - charsets in arrayOfAliases to UCS4 and vice versa. The former - class is a stream that accepts characters and returns (via #next) - integers representing UCS-4 character codes, while the latter - accepts UCS-4 character codes and converts them to characters. - For an example see respectively FromUTF7 and ToUTF7 (I admit it is - not a trivial example). - - - -File: gst-libs.info, Node: I18N.EncodedStream class-instance creation, Prev: I18N.EncodedStream class-initializing, Up: I18N.EncodedStream - -I18N.EncodedStream class: instance creation -------------------------------------------- - -on: aStringOrStream from: fromEncoding - Answer a pipe of encoders that converts aStringOrStream (which can - be a string or another stream) from the given encoding to the - default locale's default charset. - -on: aStringOrStream from: fromEncoding to: toEncoding - Answer a pipe of encoders that converts aStringOrStream (which can - be a string or another stream) between the two supplied encodings - (which can be ASCII Strings or Symbols) - -on: aStringOrStream to: toEncoding - Answer a pipe of encoders that converts aStringOrStream (which can - be a string or another stream) from the default locale's default - charset to the given encoding. - - - -File: gst-libs.info, Node: I18N.Encoder, Next: I18N.Encoders.ComposeUCS4BE, Prev: I18N.EncodedStream, Up: I18N - -I18N.Encoder -============ - -Defined in namespace I18N -Superclass: Stream -Category: i18n-Character sets - This class is the superclass of streams that take an origin and - encode it to another character set. Most of the subclasses are - for internal use, the one you really want to use is probably - EncodedStream. - -* Menu: - -* I18N.Encoder class-instance creation:: (class) -* I18N.Encoder-stream operations:: (instance) - - -File: gst-libs.info, Node: I18N.Encoder class-instance creation, Next: I18N.Encoder-stream operations, Up: I18N.Encoder - -I18N.Encoder class: instance creation -------------------------------------- - -on: aStringOrStream from: fromEncoding to: toEncoding - Answer a new encoder that translates from fromEncoding to - toEncoding. The encodings are guaranteed to be those for which - the encoder was registered. - - - -File: gst-libs.info, Node: I18N.Encoder-stream operations, Prev: I18N.Encoder class-instance creation, Up: I18N.Encoder - -I18N.Encoder: stream operations -------------------------------- - -atEnd - Return whether the receiver can produce another character in the - receiver; by default, this is true if there is another character - in the origin. - -atEndOfInput - Return whether there is another character in the origin. This - method is for private use by encoders, calling it outside won't - corrupt the internal state of the encoder but the result probably - won't be meaningful (depending on the innards of the encoder). - -next - Return the next character in the receiver; by default, this is the - next character in the origin. - -nextInput - Return the next character in the origin. This method is for - private use by encoders, calling it outside may corrupt the - internal state of the encoder. - -species - Answer the kind of data that is answered, which is the same kind - of data that the origin answers - - - -File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4BE, Next: I18N.Encoders.ComposeUCS4LE, Prev: I18N.Encoder, Up: I18N - -I18N.Encoders.ComposeUCS4BE -=========================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoders.ToUCS4 -Category: i18n-Character sets - This class is used internally to provide UCS4 characters encoded as - 32-bit integers for a descendent of FromUCS4, when the starting - encoding is big-endian. - -* Menu: - -* I18N.Encoders.ComposeUCS4BE-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4BE-stream operation, Up: I18N.Encoders.ComposeUCS4BE - -I18N.Encoders.ComposeUCS4BE: stream operation ---------------------------------------------- - -next - Answer a 32-bit integer obtained by reading four 8-bit character - codes in big-endian order and putting them together - - - -File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4LE, Next: I18N.Encoders.FromUCS4, Prev: I18N.Encoders.ComposeUCS4BE, Up: I18N - -I18N.Encoders.ComposeUCS4LE -=========================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoders.ToUCS4 -Category: i18n-Character sets - This class is used internally to provide UCS4 characters encoded as - 32-bit integers for a descendent of FromUCS4, when the starting - encoding is little-endian. - -* Menu: - -* I18N.Encoders.ComposeUCS4LE-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.ComposeUCS4LE-stream operation, Up: I18N.Encoders.ComposeUCS4LE - -I18N.Encoders.ComposeUCS4LE: stream operation ---------------------------------------------- - -next - Answer a 32-bit integer obtained by reading four 8-bit character - codes in little-endian order and putting them together - - - -File: gst-libs.info, Node: I18N.Encoders.FromUCS4, Next: I18N.Encoders.FromUTF7, Prev: I18N.Encoders.ComposeUCS4LE, Up: I18N - -I18N.Encoders.FromUCS4 -====================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoder -Category: i18n-Character sets - This class is a superclass for classes that convert from UCS4 - characters (encoded as 32-bit Integers) to bytes in another - encoding (encoded as Characters). - -* Menu: - -* I18N.Encoders.FromUCS4-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.FromUCS4-stream operation, Up: I18N.Encoders.FromUCS4 - -I18N.Encoders.FromUCS4: stream operation ----------------------------------------- - -species - We answer a string of Characters encoded in our destination - encoding. - - - -File: gst-libs.info, Node: I18N.Encoders.FromUTF7, Next: I18N.Encoders.Iconv, Prev: I18N.Encoders.FromUCS4, Up: I18N - -I18N.Encoders.FromUTF7 -====================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoders.ToUCS4 -Category: i18n-Encodings - -* Menu: - -* I18N.Encoders.FromUTF7 class-initialization:: (class) -* I18N.Encoders.FromUTF7-converting:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.FromUTF7 class-initialization, Next: I18N.Encoders.FromUTF7-converting, Up: I18N.Encoders.FromUTF7 - -I18N.Encoders.FromUTF7 class: initialization --------------------------------------------- - -initialize - Initialize the tables used by the UTF7-to-UCS4 converter - - - -File: gst-libs.info, Node: I18N.Encoders.FromUTF7-converting, Prev: I18N.Encoders.FromUTF7 class-initialization, Up: I18N.Encoders.FromUTF7 - -I18N.Encoders.FromUTF7: converting ----------------------------------- - -atEnd - Answer whether the receiver can produce another UCS4 32-bit - encoded integer - -flush - Flush any remaining state left in the encoder by the last character - (this is because UTF-7 encodes 6 bits at a time, so it takes three - characters before it can provide a single 16-bit character and up - to six characters before it can provide a full UCS-4 character). - -next - Answer the next character that the receiver can produce. - - - -File: gst-libs.info, Node: I18N.Encoders.Iconv, Next: I18N.Encoders.SplitUCS4BE, Prev: I18N.Encoders.FromUTF7, Up: I18N - -I18N.Encoders.Iconv -=================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoder -Category: i18n-Character sets - This class is used to delegate the actual character set conversion - to the C library's iconv function. Most conversions use iconv as - the only step in the conversions, sometimes the structure is - ToUCS4+SplitUCS4xx+Iconv or Iconv+ComposeUCS4xx+FromUCS4, rarely - Iconv is skipped altogether and only Smalltalk converters are used. - -* Menu: - -* I18N.Encoders.Iconv-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.Iconv-stream operation, Up: I18N.Encoders.Iconv - -I18N.Encoders.Iconv: stream operation -------------------------------------- - -atEnd - Answer whether the receiver can produce more characters - -next - Answer the next character that the receiver can produce. - -species - We answer a string of Characters encoded in our destination - encoding. - - - -File: gst-libs.info, Node: I18N.Encoders.SplitUCS4BE, Next: I18N.Encoders.SplitUCS4LE, Prev: I18N.Encoders.Iconv, Up: I18N - -I18N.Encoders.SplitUCS4BE -========================= - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoders.FromUCS4 -Category: i18n-Character sets - This class is used internally to split into four 8-bit characters - the 32-bit UCS4 integers coming from a descendent of ToUCS4, when - the destination encoding is big-endian. - -* Menu: - -* I18N.Encoders.SplitUCS4BE-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.SplitUCS4BE-stream operation, Up: I18N.Encoders.SplitUCS4BE - -I18N.Encoders.SplitUCS4BE: stream operation -------------------------------------------- - -atEnd - Answer whether the receiver can produce more characters - -flush - Flush any remaining bytes in the last 32-bit character read from - the input - -next - Answer an 8-bit Character obtained by converting each 32-bit - Integer found in the origin to the four bytes that make it up, and - ordering them from the most significant to the least significant. - - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-7 smalltalk-2.1.7/doc/gst-libs.info-7 --- smalltalk-2.1.6/doc/gst-libs.info-7 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-7 1970-01-01 01:00:00.000000000 +0100 @@ -1,1459 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: I18N.Encoders.SplitUCS4LE, Next: I18N.Encoders.ToUCS4, Prev: I18N.Encoders.SplitUCS4BE, Up: I18N - -I18N.Encoders.SplitUCS4LE -========================= - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoders.FromUCS4 -Category: i18n-Character sets - This class is used internally to split into four 8-bit characters - the 32-bit UCS4 integers coming from a descendent of ToUCS4, when - the destination encoding is little-endian. - -* Menu: - -* I18N.Encoders.SplitUCS4LE-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.SplitUCS4LE-stream operation, Up: I18N.Encoders.SplitUCS4LE - -I18N.Encoders.SplitUCS4LE: stream operation -------------------------------------------- - -atEnd - Answer whether the receiver can produce more characters - -flush - Flush any remaining bytes in the last 32-bit character read from - the input - -next - Answer an 8-bit Character obtained by converting each 32-bit - Integer found in the origin to the four bytes that make it up, and - ordering them from the least significant to the most significant. - - - -File: gst-libs.info, Node: I18N.Encoders.ToUCS4, Next: I18N.Encoders.ToUTF7, Prev: I18N.Encoders.SplitUCS4LE, Up: I18N - -I18N.Encoders.ToUCS4 -==================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoder -Category: i18n-Character sets - This class is a superclass for classes that convert from bytes - (encoded as Characters) to UCS4 characters (encoded as 32-bit - Integers to simplify the code and to avoid endianness conversions). - -* Menu: - -* I18N.Encoders.ToUCS4-stream operation:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.ToUCS4-stream operation, Up: I18N.Encoders.ToUCS4 - -I18N.Encoders.ToUCS4: stream operation --------------------------------------- - -species - We answer a WordArray of UCS4 characters encoded as a series of - 32-bit Integers. - - - -File: gst-libs.info, Node: I18N.Encoders.ToUTF7, Next: I18N.FileStreamSegment, Prev: I18N.Encoders.ToUCS4, Up: I18N - -I18N.Encoders.ToUTF7 -==================== - -Defined in namespace I18N.Encoders -Superclass: I18N.Encoders.FromUCS4 -Category: i18n-Encodings - This class implements a converter that transliterates UTF-7 - encoded characters to UCS4 values (encoded as 32-bit Integers). - -* Menu: - -* I18N.Encoders.ToUTF7 class-initialization:: (class) -* I18N.Encoders.ToUTF7-conversion:: (instance) - - -File: gst-libs.info, Node: I18N.Encoders.ToUTF7 class-initialization, Next: I18N.Encoders.ToUTF7-conversion, Up: I18N.Encoders.ToUTF7 - -I18N.Encoders.ToUTF7 class: initialization ------------------------------------------- - -initialize - Initialize the tables used by the UCS4-to-UTF7 converter - - - -File: gst-libs.info, Node: I18N.Encoders.ToUTF7-conversion, Prev: I18N.Encoders.ToUTF7 class-initialization, Up: I18N.Encoders.ToUTF7 - -I18N.Encoders.ToUTF7: conversion --------------------------------- - -atEnd - Answer whether the receiver can produce more characters - -flush - Flush any remaining bytes in the last 32-bit character read from - the input - -next - Answer the next character that the receiver can produce. - - - -File: gst-libs.info, Node: I18N.FileStreamSegment, Next: I18N.IncompleteSequenceError, Prev: I18N.Encoders.ToUTF7, Up: I18N - -I18N.FileStreamSegment -====================== - -Defined in namespace I18N -Superclass: FileSegment -Category: i18n-Messages - Unlike FileSegment, this object assumes that the `file' instance - variable is a FileStream, not a file name. - -* Menu: - -* I18N.FileStreamSegment-basic:: (instance) - - -File: gst-libs.info, Node: I18N.FileStreamSegment-basic, Up: I18N.FileStreamSegment - -I18N.FileStreamSegment: basic ------------------------------ - -fileName - Answer the name of the file containing the segment - -withFileDo: aBlock - Evaluate aBlock, passing a FileStream corresponding to the file - - - -File: gst-libs.info, Node: I18N.IncompleteSequenceError, Next: I18N.InvalidCharsetError, Prev: I18N.FileStreamSegment, Up: I18N - -I18N.IncompleteSequenceError -============================ - -Defined in namespace I18N -Superclass: Error -Category: i18n-Character sets - I am raised if an invalid sequence is found while converting a - string from a charset to another. In particular, I am raised if - the input stream ends abruptly in the middle of a multi-byte - sequence. - -* Menu: - -* I18N.IncompleteSequenceError-accessing:: (instance) - - -File: gst-libs.info, Node: I18N.IncompleteSequenceError-accessing, Up: I18N.IncompleteSequenceError - -I18N.IncompleteSequenceError: accessing ---------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-libs.info, Node: I18N.InvalidCharsetError, Next: I18N.InvalidSequenceError, Prev: I18N.IncompleteSequenceError, Up: I18N - -I18N.InvalidCharsetError -======================== - -Defined in namespace I18N -Superclass: SystemExceptions.InvalidArgument -Category: i18n-Character sets - I am raised if the user tries to encode from or to an unknown - encoding - -* Menu: - -* I18N.InvalidCharsetError-accessing:: (instance) - - -File: gst-libs.info, Node: I18N.InvalidCharsetError-accessing, Up: I18N.InvalidCharsetError - -I18N.InvalidCharsetError: accessing ------------------------------------ - -description - Answer a textual description of the exception. - - - -File: gst-libs.info, Node: I18N.InvalidSequenceError, Next: I18N.LcMessages, Prev: I18N.InvalidCharsetError, Up: I18N - -I18N.InvalidSequenceError -========================= - -Defined in namespace I18N -Superclass: Error -Category: i18n-Character sets - I am raised if an invalid sequence is found while converting a - string from a charset to another - -* Menu: - -* I18N.InvalidSequenceError-accessing:: (instance) - - -File: gst-libs.info, Node: I18N.InvalidSequenceError-accessing, Up: I18N.InvalidSequenceError - -I18N.InvalidSequenceError: accessing ------------------------------------- - -description - Answer a textual description of the exception. - - - -File: gst-libs.info, Node: I18N.LcMessages, Next: I18N.LcMessagesCatalog, Prev: I18N.InvalidSequenceError, Up: I18N - -I18N.LcMessages -=============== - -Defined in namespace I18N -Superclass: I18N.LocaleConventions -Category: i18n-Messages - This object is a factory of LcMessagesDomain objects - -* Menu: - -* I18N.LcMessages class-accessing:: (class) -* I18N.LcMessages-accessing:: (instance) -* I18N.LcMessages-opening MO files:: (instance) - - -File: gst-libs.info, Node: I18N.LcMessages class-accessing, Next: I18N.LcMessages-accessing, Up: I18N.LcMessages - -I18N.LcMessages class: accessing --------------------------------- - -category - Answer the environment variable used to determine the default - locale - -selector - Answer the selector that accesses the receiver when sent to a - Locale object. - - - -File: gst-libs.info, Node: I18N.LcMessages-accessing, Next: I18N.LcMessages-opening MO files, Prev: I18N.LcMessages class-accessing, Up: I18N.LcMessages - -I18N.LcMessages: accessing --------------------------- - -languageDirectory - Answer the directory holding MO files for the language - -languageDirectory: rootDirectory - Answer the directory holding MO files for the language, given the - root directory of the locale data. - -territoryDirectory - Answer the directory holding MO files for the language, specific to - the territory - -territoryDirectory: rootDirectory - Answer the directory holding MO files for the language, specific to - the territory, given the root directory of the locale data. - - - -File: gst-libs.info, Node: I18N.LcMessages-opening MO files, Prev: I18N.LcMessages-accessing, Up: I18N.LcMessages - -I18N.LcMessages: opening MO files ---------------------------------- - -? aString - Answer an object for the aString domain, querying both the - language catalog (e.g. pt) and the territory catalog (e.g. pt_BR - or pt_PT). - -domain: aString - Answer an object for the aString domain, querying both the - language catalog (e.g. pt) and the territory catalog (e.g. pt_BR - or pt_PT). - -domain: aString localeDirectory: rootDirectory - Answer an object for the aString domain, querying both the - language catalog (e.g. pt) and the territory catalog (e.g. pt_BR - or pt_PT). The localeDirectory is usually - '/share/locale'. - - - -File: gst-libs.info, Node: I18N.LcMessagesCatalog, Next: I18N.LcMessagesDomain, Prev: I18N.LcMessages, Up: I18N - -I18N.LcMessagesCatalog -====================== - -Defined in namespace I18N -Superclass: I18N.LcMessagesDomain -Category: i18n-Messages - This object is an abstract superclass of objects that retrieve - translated strings from a file. - -* Menu: - - -File: gst-libs.info, Node: I18N.LcMessagesDomain, Next: I18N.LcMessagesDummyDomain, Prev: I18N.LcMessagesCatalog, Up: I18N - -I18N.LcMessagesDomain -===================== - -Defined in namespace I18N -Superclass: I18N.LocaleData -Category: i18n-Messages - This object is an abstract superclass for message domains - (catalogs). It contains methods to create instances of its - subclasses, but they are commonly used only by LcMessages. - - Translations are accessed using either #at: or the shortcut binary - messages `?'. This way, common idioms to access translated - strings will be - - string := NLS? 'abc'. string := self? 'abc'. - - (in the first case NLS is a class variable, in the second the - receiver implements #? through delegation) which is only five or - six characters longer than the traditional - - string := 'abc'. - - (cfr. the _("abc") idiom used by GNU gettext) - -* Menu: - -* I18N.LcMessagesDomain class-opening MO files:: (class) -* I18N.LcMessagesDomain-handling the cache:: (instance) -* I18N.LcMessagesDomain-querying:: (instance) - - -File: gst-libs.info, Node: I18N.LcMessagesDomain class-opening MO files, Next: I18N.LcMessagesDomain-handling the cache, Up: I18N.LcMessagesDomain - -I18N.LcMessagesDomain class: opening MO files ---------------------------------------------- - -id: anArray on: aFileName - Create an instance of the receiver with a given locale identifier - from a path to the MO file - - - -File: gst-libs.info, Node: I18N.LcMessagesDomain-handling the cache, Next: I18N.LcMessagesDomain-querying, Prev: I18N.LcMessagesDomain class-opening MO files, Up: I18N.LcMessagesDomain - -I18N.LcMessagesDomain: handling the cache ------------------------------------------ - -flush - Flush the receiver's cache of translations - -shouldCache - Answer whether translations should be cached. Never override this - method to always answer false, because that would cause bugs when - transliteration is being used. - - - -File: gst-libs.info, Node: I18N.LcMessagesDomain-querying, Prev: I18N.LcMessagesDomain-handling the cache, Up: I18N.LcMessagesDomain - -I18N.LcMessagesDomain: querying -------------------------------- - -? aString - Answer the translation of `aString', or answer aString itself if - none is available. - -at: aString - Answer the translation of `aString', or answer aString itself if - none is available. - -at: singularString plural: pluralString with: n - Answer either the translation of pluralString with `%1' replaced by - n if n ~= 1, or the translation of singularString if n = 1. - -at: aString put: anotherString - This method should not be called for instances of this class. - -translatorInformation - Answer information on the translation, or nil if there is none. - This information is stored as the `translation' of an empty string. - -translatorInformationAt: key - Answer information on the translation associated to a given key - -translatorInformationAt: key at: subkey - Answer information on the translation associated to a given key - and to a subkey of the key - - - -File: gst-libs.info, Node: I18N.LcMessagesDummyDomain, Next: I18N.LcMessagesMoFileVersion0, Prev: I18N.LcMessagesDomain, Up: I18N - -I18N.LcMessagesDummyDomain -========================== - -Defined in namespace I18N -Superclass: I18N.LcMessagesDomain -Category: i18n-Messages - This object does no attempt to translate strings, returning - instead the same string passed as an argument to #?. - -* Menu: - - -File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0, Next: I18N.LcMessagesTerritoryDomain, Prev: I18N.LcMessagesDummyDomain, Up: I18N - -I18N.LcMessagesMoFileVersion0 -============================= - -Defined in namespace I18N -Superclass: I18N.LcMessagesCatalog -Category: i18n-Messages - This object is an concrete class that retrieves translated strings - from a GNU gettext MO file. The class method - #fileFormatDescription contains an explanation of the file format. - -* Menu: - -* I18N.LcMessagesMoFileVersion0 class-documentation:: (class) -* I18N.LcMessagesMoFileVersion0 class-plurals:: (class) -* I18N.LcMessagesMoFileVersion0-flushing the cache:: (instance) - - -File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0 class-documentation, Next: I18N.LcMessagesMoFileVersion0 class-plurals, Up: I18N.LcMessagesMoFileVersion0 - -I18N.LcMessagesMoFileVersion0 class: documentation --------------------------------------------------- - -fileFormatDescription - The Format of GNU MO Files (excerpt of the GNU gettext manual) - ============================================================== The - format of the generated MO files is best described by a picture, - which appears below. The first two words serve the identification - of the file. The magic number will always signal GNU MO files. - The number is stored in the byte order of the generating machine, - so the magic number really is two numbers: `0x950412de' and - `0xde120495'. The second word describes the current revision - of the file format. For now the revision is 0. This might change - in future versions, and ensures that the readers of MO files can - distinguish new formats from old ones, so that both can be handled - correctly. The version is kept separate from the magic number, - instead of using different magic numbers for different formats, - mainly because `/etc/magic' is not updated often. It might be - better to have magic separated from internal format version - identification. Follow a number of pointers to later tables in - the file, allowing for the extension of the prefix part of MO - files without having to recompile programs reading them. This - might become useful for later inserting a few flag bits, - indication about the charset used, new tables, or other things. - Then, at offset O and offset T in the picture, two tables of string - descriptors can be found. In both tables, each string descriptor - uses two 32 bits integers, one for the string length, another for - the offset of the string in the MO file, counting in bytes from - the start of the file. The first table contains descriptors for - the original strings, and is sorted so the original strings are in - increasing lexicographical order. The second table contains - descriptors for the translated strings, and is parallel to the - first table: to find the corresponding translation one has to - access the array slot in the second array with the same index. - Having the original strings sorted enables the use of simple binary - search, for when the MO file does not contain an hashing table, or - for when it is not practical to use the hashing table provided in - the MO file. This also has another advantage, as the empty string - in a PO file GNU `gettext' is usually *translated* into some - system information attached to that particular MO file, and the - empty string necessarily becomes the first in both the original - and translated tables, making the system information very easy to - find. The size S of the hash table can be zero. In this case, - the hash table itself is not contained in the MO file. Some - people might prefer this because a precomputed hashing table takes - disk space, and does not win *that* much speed. The hash table - contains indices to the sorted array of strings in the MO file. - Conflict resolution is done by double hashing. The precise - hashing algorithm used is fairly dependent of GNU `gettext' code, - and is not documented here. As for the strings themselves, they - follow the hash file, and each is terminated with a , and - this is not counted in the length which appears in the - string descriptor. The `msgfmt' program has an option - selecting the alignment for MO file strings. With this option, - each string is separately aligned so it starts at an offset which - is a multiple of the alignment value. On some RISC machines, a - correct alignment will speed things up. Nothing prevents a MO - file from having embedded s in strings. However, the program - interface currently used already presumes that strings are - terminated, so embedded s are somewhat useless. But MO file - format is general enough so other interfaces would be later - possible, if for example, we ever want to implement wide characters - right in MO files, where bytes may accidently appear. This - particular issue has been strongly debated in the GNU `gettext' - development forum, and it is expectable that MO file format will - evolve or change over time. It is even possible that many formats - may later be supported concurrently. But surely, we have to start - somewhere, and the MO file format described here is a good start. - Nothing is cast in concrete, and the format may later evolve - fairly easily, so we should feel comfortable with the current - approach. byte +-----------------------------------------+ 0 | - magic number = 0x950412de | | - | 4 | file format revision = 0 - | | | 8 | - number of strings | == N | - | 12 | offset of table with original - strings | == O | | 16 | - offset of table with translation strings | == T | - | 20 | size of hashing table - | == S | | 24 | offset - of hashing table | == H | - | . . . - (possibly more entries later) . . - . | - | O | length & offset 0th string ---------------. O + 8 - | length & offset 1st string -----------------. ... - ... | | O + ((N-1)*8)| length & offset - (N-1)th string | | | | - | | | T | length & offset 0th translation --------------. - T + 8 | length & offset 1st translation ----------------. ... - ... | | | | T + ((N-1)*8)| - length & offset (N-1)th translation | | | | | | - | | | | | H | start hash - table | | | | | ... - ... | | | | H + S * 4 | end hash table - | | | | | | - | | | | | | NUL terminated 0th string <---------------' | | | - | | | | | | NUL terminated - 1st string <-----------------' | | | - | | | ... ... - | | | | | | | - NUL terminated 0th translation <--------------' | | - | | | NUL terminated 1st translation - <----------------' | | ... - ... | - | +-----------------------------------------+ - Locating Message Catalog Files ----------------------------- - Because many different languages for many different packages have - to be stored we need some way to add these information to file - message catalog files. The way usually used in Unix - environments is have this encoding in the file name. This is also - done here. The directory name given in `bindtextdomain's second - argument (or the default directory), followed by the value and - name of the locale and the domain name are concatenated: - DIR_NAME/LOCALE/LC_CATEGORY/DOMAIN_NAME.mo The default value for - DIR_NAME is system specific. For the GNU library, and for - packages adhering to its conventions, it's: /usr/local/share/locale - LOCALE is the value of the locale whose name is this `LC_CATEGORY'. - For `gettext' and `dgettext' this locale is always `LC_MESSAGES'. - - - -File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0 class-plurals, Next: I18N.LcMessagesMoFileVersion0-flushing the cache, Prev: I18N.LcMessagesMoFileVersion0 class-documentation, Up: I18N.LcMessagesMoFileVersion0 - -I18N.LcMessagesMoFileVersion0 class: plurals --------------------------------------------- - -initialize - Initialize a table with the expressions computing the plurals for - the most common languages - -pluralExpressionFor: locale ifAbsent: aBlock - Answer a RunTimeExpression yielding the plural form for the given - language and territory, if one is known, else evaluate aBlock and - answer it. - - - -File: gst-libs.info, Node: I18N.LcMessagesMoFileVersion0-flushing the cache, Prev: I18N.LcMessagesMoFileVersion0 class-plurals, Up: I18N.LcMessagesMoFileVersion0 - -I18N.LcMessagesMoFileVersion0: flushing the cache -------------------------------------------------- - -flush - Flush the cache and reread the catalog's metadata. - -shouldCache - Answer true, we always cache translations if they are read from a - file - - - -File: gst-libs.info, Node: I18N.LcMessagesTerritoryDomain, Next: I18N.LcMonetary, Prev: I18N.LcMessagesMoFileVersion0, Up: I18N - -I18N.LcMessagesTerritoryDomain -============================== - -Defined in namespace I18N -Superclass: I18N.LcMessagesDomain -Category: i18n-Messages - This object asks for strings to a primary domain (e.g. it_IT) and - a secondary one (e.g. it). - -* Menu: - -* I18N.LcMessagesTerritoryDomain class-instance creation:: (class) - - -File: gst-libs.info, Node: I18N.LcMessagesTerritoryDomain class-instance creation, Up: I18N.LcMessagesTerritoryDomain - -I18N.LcMessagesTerritoryDomain class: instance creation -------------------------------------------------------- - -primary: domain1 secondary: domain2 - Answer an instance of the receiver that queries, in sequence, - domain1 and domain2 - - - -File: gst-libs.info, Node: I18N.LcMonetary, Next: I18N.LcMonetaryISO, Prev: I18N.LcMessagesTerritoryDomain, Up: I18N - -I18N.LcMonetary -=============== - -Defined in namespace I18N -Superclass: I18N.LcNumeric -Category: i18n-Printing - Sending either #?, #printString: or #print:on: converts a Number to - a String according to the rules that are mandated by ISO for - printing currency amounts in the current locale. - -* Menu: - -* I18N.LcMonetary class-accessing:: (class) -* I18N.LcMonetary-printing:: (instance) - - -File: gst-libs.info, Node: I18N.LcMonetary class-accessing, Next: I18N.LcMonetary-printing, Up: I18N.LcMonetary - -I18N.LcMonetary class: accessing --------------------------------- - -category - Answer the environment variable used to determine the default - locale - -selector - Answer the selector that accesses the receiver when sent to a - Locale object. - - - -File: gst-libs.info, Node: I18N.LcMonetary-printing, Prev: I18N.LcMonetary class-accessing, Up: I18N.LcMonetary - -I18N.LcMonetary: printing -------------------------- - -print: aNumber on: aStream - Print aNumber on aStream according to the receiver's formatting - conventions. Always print a currency sign and don't force to - print negative numbers by putting parentheses around them. - -print: aNumber on: aStream currency: currency parentheses: p - Print aNumber on aStream according to the receiver's formatting - conventions. If currency is true, print a currency sign, and if p - is true force to print negative numbers by putting parentheses - around them. If p is true, for positive numbers spaces are put - around the number to keep them aligned. - - - -File: gst-libs.info, Node: I18N.LcMonetaryISO, Next: I18N.LcNumeric, Prev: I18N.LcMonetary, Up: I18N - -I18N.LcMonetaryISO -================== - -Defined in namespace I18N -Superclass: I18N.LcMonetary -Category: i18n-Printing - -* Menu: - -* I18N.LcMonetaryISO class-accessing:: (class) - - -File: gst-libs.info, Node: I18N.LcMonetaryISO class-accessing, Up: I18N.LcMonetaryISO - -I18N.LcMonetaryISO class: accessing ------------------------------------ - -selector - Answer the selector that accesses the receiver when sent to a - Locale object. - - - -File: gst-libs.info, Node: I18N.LcNumeric, Next: I18N.LcPrintFormats, Prev: I18N.LcMonetaryISO, Up: I18N - -I18N.LcNumeric -============== - -Defined in namespace I18N -Superclass: I18N.LcPrintFormats -Category: i18n-Printing - Sending either #?, #printString: or #print:on: converts a Number to - a String according to the rules that are used in the given locale. - -* Menu: - -* I18N.LcNumeric class-accessing:: (class) -* I18N.LcNumeric-printing:: (instance) - - -File: gst-libs.info, Node: I18N.LcNumeric class-accessing, Next: I18N.LcNumeric-printing, Up: I18N.LcNumeric - -I18N.LcNumeric class: accessing -------------------------------- - -category - Answer the environment variable used to determine the default - locale - -selector - Answer the selector that accesses the receiver when sent to a - Locale object. - - - -File: gst-libs.info, Node: I18N.LcNumeric-printing, Prev: I18N.LcNumeric class-accessing, Up: I18N.LcNumeric - -I18N.LcNumeric: printing ------------------------- - -basicPrint: aNumber on: aStream - Print aNumber on aStream according to the receiver's formatting - conventions, without currency signs or anything like that. This - method must not be overridden. - -print: aNumber on: aStream - Print aNumber on aStream according to the receiver's formatting - conventions. - - - -File: gst-libs.info, Node: I18N.LcPrintFormats, Next: I18N.LcTime, Prev: I18N.LcNumeric, Up: I18N - -I18N.LcPrintFormats -=================== - -Defined in namespace I18N -Superclass: I18N.LocaleConventions -Category: i18n-Messages - LcPrintFormats subclasses have instances that understand #?, - #printString: and #print:on: (the last of which is abstract) which - provide a means to convert miscellaneous objects to Strings - according to the rules that are used in the given locale. - -* Menu: - -* I18N.LcPrintFormats-printing:: (instance) - - -File: gst-libs.info, Node: I18N.LcPrintFormats-printing, Up: I18N.LcPrintFormats - -I18N.LcPrintFormats: printing ------------------------------ - -? anObject - Answer how anObject must be printed according to the receiver's - formatting conventions. - -print: anObject on: aStream - Print anObject on aStream according to the receiver's formatting - conventions. - -printString: anObject - Answer how anObject must be printed according to the receiver's - formatting conventions. - - - -File: gst-libs.info, Node: I18N.LcTime, Next: I18N.Locale, Prev: I18N.LcPrintFormats, Up: I18N - -I18N.LcTime -=========== - -Defined in namespace I18N -Superclass: I18N.LcPrintFormats -Category: i18n-Printing - Sending either #?, #printString: or #print:on: converts a Date or - Time to a String according to the rules that are used in the given - locale. - -* Menu: - -* I18N.LcTime class-accessing:: (class) -* I18N.LcTime-printing:: (instance) -* I18N.LcTime-tests:: (instance) - - -File: gst-libs.info, Node: I18N.LcTime class-accessing, Next: I18N.LcTime-printing, Up: I18N.LcTime - -I18N.LcTime class: accessing ----------------------------- - -category - Answer the environment variable used to determine the default - locale - -selector - Answer the selector that accesses the receiver when sent to a - Locale object. - - - -File: gst-libs.info, Node: I18N.LcTime-printing, Next: I18N.LcTime-tests, Prev: I18N.LcTime class-accessing, Up: I18N.LcTime - -I18N.LcTime: printing ---------------------- - -print: aDateOrTimeOrArray on: aStream - Print aDateOrTimeOrArray on aStream according to the receiver's - formatting conventions. It can be a Date, Time, DateTime, or an - array made of a Date and a Time - -print: aDateOrTimeOrArray on: aStream ifFull: fullFmt ifDate: dateFmt ifTime: timeFmt - Print aDateOrTimeOrArray on aStream according to the receiver's - formatting conventions. It can be a Date, Time, DateTime, or an - array made of a Date and a Time: Date is printed with dateFmt and - Time with timeFmt, while in the other cases fullFmt is used. For - information on the formatting codes, see #print:time:format:on:. - -print: aDate time: aTime format: aString on: aStream - Print the specified date and time on aStream according to the - receiver's formatting conventions, using the given format. The - valid abbreviations are the same used by the C function strftime: - abbreviated weekday (%a) weekday - (%A) abbreviated month (%b) month - (%B) date & time (%c) century - (%C) day of the month (%d) date (US) - (%D) day of the month (%e) year for the ISO - week (%g) year for the ISO week (%G) - abbreviated month (%h) hours - (%H) hours (AM/PM) (%I) day of the year - (%j) hours (%k) hours - (AM/PM) (%l) month - (%m) minutes (%M) AM/PM - (%p) lowercase AM/PM (%P) AM/PM - time (%r) time (US) (%R) time_t - (%s) seconds - (%S) time (US) (%T) day of the week - (%u) week number starting at Sun (%U) week number starting - at Thu (%V) day of the week, Sunday=0 (%w) week number - starting at Mon (%W) date (%x) time - (%X) year (2-digit) (%y) - year (4-digit) (%Y). - - - -File: gst-libs.info, Node: I18N.LcTime-tests, Prev: I18N.LcTime-printing, Up: I18N.LcTime - -I18N.LcTime: tests ------------------- - -allFormatsExample - Answer a long string that includes all the possible formats - - - -File: gst-libs.info, Node: I18N.Locale, Next: I18N.LocaleConventions, Prev: I18N.LcTime, Up: I18N - -I18N.Locale -=========== - -Defined in namespace I18N -Superclass: I18N.LocaleData -Category: i18n-Messages - This object is an abstract superclass of objects related to the - territory and language in which the program is being used. - Instances of it are asked about information on the current locale, - and provide a means to be asked for things with a common idiom, - the #? binary message. - -* Menu: - -* I18N.Locale class-initialization:: (class) -* I18N.Locale class-instance creation:: (class) -* I18N.Locale-subobjects:: (instance) - - -File: gst-libs.info, Node: I18N.Locale class-initialization, Next: I18N.Locale class-instance creation, Up: I18N.Locale - -I18N.Locale class: initialization ---------------------------------- - -rootDirectory - Answer the directory under which locale definition files are found. - -rootDirectory: aString - Set under which directory locale definition files are found. - - - -File: gst-libs.info, Node: I18N.Locale class-instance creation, Next: I18N.Locale-subobjects, Prev: I18N.Locale class-initialization, Up: I18N.Locale - -I18N.Locale class: instance creation ------------------------------------- - -default - Answer an instance of the receiver that accesses the default - locale. - -flush - Flush the information on locales that are not valid across an - image save/load. - -fromString: aString - Answer an instance of the receiver that accesses the given locale - (in the form language[_territory][.charset]). - -posix - Answer an instance of the receiver that accesses the POSIX locale. - - - -File: gst-libs.info, Node: I18N.Locale-subobjects, Prev: I18N.Locale class-instance creation, Up: I18N.Locale - -I18N.Locale: subobjects ------------------------ - -messages - Answer the LcMessages object for the locale represented by the - receiver. - -monetary - Answer the LcMonetary object for the locale represented by the - receiver. - -monetaryIso - Answer the LcMonetaryISO object for the locale represented by the - receiver. - -numeric - Answer the LcNumeric object for the locale represented by the - receiver. - -time - Answer the LcTime object for the locale represented by the - receiver. - - - -File: gst-libs.info, Node: I18N.LocaleConventions, Next: I18N.LocaleData, Prev: I18N.Locale, Up: I18N - -I18N.LocaleConventions -====================== - -Defined in namespace I18N -Superclass: I18N.LocaleData -Category: i18n-Messages - I am an abstract superclass of objects that are referred to by a - Locale object. - -* Menu: - -* I18N.LocaleConventions class-accessing:: (class) -* I18N.LocaleConventions-accessing:: (instance) - - -File: gst-libs.info, Node: I18N.LocaleConventions class-accessing, Next: I18N.LocaleConventions-accessing, Up: I18N.LocaleConventions - -I18N.LocaleConventions class: accessing ---------------------------------------- - -? anObject - Query the default object, forwarding the message to it. - -default - Answer an instance of the receiver that accesses the default - locale. - -fromString: aString - Answer an instance of the receiver that accesses the given locale - (in the form language[_territory][.charset]). - -posix - Answer an instance of the receiver that accesses the POSIX locale. - -selector - This method's functionality should be implemented by subclasses of - LocaleConventions - - - -File: gst-libs.info, Node: I18N.LocaleConventions-accessing, Prev: I18N.LocaleConventions class-accessing, Up: I18N.LocaleConventions - -I18N.LocaleConventions: accessing ---------------------------------- - -? anObject - This method's functionality should be implemented by subclasses of - LocaleConventions - - - -File: gst-libs.info, Node: I18N.LocaleData, Next: I18N.RTEAlternativeNode, Prev: I18N.LocaleConventions, Up: I18N - -I18N.LocaleData -=============== - -Defined in namespace I18N -Superclass: Object -Category: i18n-Messages - I am an abstract superclass of objects that represent localization - information. - -* Menu: - -* I18N.LocaleData class-accessing:: (class) -* I18N.LocaleData class-database:: (class) -* I18N.LocaleData-accessing:: (instance) -* I18N.LocaleData-initialization:: (instance) - - -File: gst-libs.info, Node: I18N.LocaleData class-accessing, Next: I18N.LocaleData class-database, Up: I18N.LocaleData - -I18N.LocaleData class: accessing --------------------------------- - -category - Answer `nil'. - -default - This method's functionality should be implemented by subclasses of - LocaleData - -flush - Flush the contents of the instances of each subclass of LocaleData. - -fromString: lang - This method's functionality should be implemented by subclasses of - LocaleData - -language: lang - Answer the local object for the given language. - -language: lang territory: territory - Answer the local object for the given language and territory. - -language: lang territory: territory charset: charset - Answer the local object for the given language, territory and - charset. - -new - This method should not be called for instances of this class. - -posix - This method's functionality should be implemented by subclasses of - LocaleData - -update: aspect - Flush instances of the receiver when an image is loaded. - - - -File: gst-libs.info, Node: I18N.LocaleData class-database, Next: I18N.LocaleData-accessing, Prev: I18N.LocaleData class-accessing, Up: I18N.LocaleData - -I18N.LocaleData class: database -------------------------------- - -defaults - Answer the default territory-language and language-charset - associations. - -initialize - Initialize the receiver's class variables. - -languages - ISO639 language codes - -territories - ISO3166 territory codes - - - -File: gst-libs.info, Node: I18N.LocaleData-accessing, Next: I18N.LocaleData-initialization, Prev: I18N.LocaleData class-database, Up: I18N.LocaleData - -I18N.LocaleData: accessing --------------------------- - -charset - Return the charset supported by the receiver. - -id - Return the identifier of the locale supported by the receiver. - -isPosixLocale - Answer whether the receiver implements the default POSIX behavior - for a locale. - -language - Return the language supported by the receiver. - -languageDirectory - Answer the directory where data files for the current language - reside. - -languageDirectory: rootDirectory - Answer the directory where data files for the current language - reside, given the root directory of the locale data. - -territory - Return the territory supported by the receiver. - -territoryDirectory - Answer the directory where data files for the current language, - specific to the territory, reside. - -territoryDirectory: rootDirectory - Answer the directory where data files for the current language, - specific to the territory, reside, given the root directory of the - locale data. - - - -File: gst-libs.info, Node: I18N.LocaleData-initialization, Prev: I18N.LocaleData-accessing, Up: I18N.LocaleData - -I18N.LocaleData: initialization -------------------------------- - -id: anArray - Private - Set which locale the receiver contains data for - -initialize: aString - Set which locale the receiver contains data for, starting from a - string describing the locale. - - - -File: gst-libs.info, Node: I18N.RTEAlternativeNode, Next: I18N.RTEBinaryNode, Prev: I18N.LocaleData, Up: I18N - -I18N.RTEAlternativeNode -======================= - -Defined in namespace I18N -Superclass: I18N.RunTimeExpression -Category: i18n-Messages - -* Menu: - -* I18N.RTEAlternativeNode class-compiling:: (class) -* I18N.RTEAlternativeNode-computing:: (instance) - - -File: gst-libs.info, Node: I18N.RTEAlternativeNode class-compiling, Next: I18N.RTEAlternativeNode-computing, Up: I18N.RTEAlternativeNode - -I18N.RTEAlternativeNode class: compiling ----------------------------------------- - -condition: cond ifTrue: trueNode ifFalse: falseNode - Private - Create a node in the parse tree for the run-time - expression, mapping s to a Smalltalk arithmetic selector - - - -File: gst-libs.info, Node: I18N.RTEAlternativeNode-computing, Prev: I18N.RTEAlternativeNode class-compiling, Up: I18N.RTEAlternativeNode - -I18N.RTEAlternativeNode: computing ----------------------------------- - -condition: condNode ifTrue: trueNode ifFalse: falseNode - Initialize the children of the receiver and the conditional - expression to choose between them - -printOn: aStream - Print a representation of the receiver on aStream - -send: parameter - Evaluate the receiver by conditionally choosing one of its children - and evaluating it - - - -File: gst-libs.info, Node: I18N.RTEBinaryNode, Next: I18N.RTELiteralNode, Prev: I18N.RTEAlternativeNode, Up: I18N - -I18N.RTEBinaryNode -================== - -Defined in namespace I18N -Superclass: I18N.RunTimeExpression -Category: i18n-Messages - -* Menu: - -* I18N.RTEBinaryNode class-compiling:: (class) -* I18N.RTEBinaryNode-compiling:: (instance) -* I18N.RTEBinaryNode-computing:: (instance) - - -File: gst-libs.info, Node: I18N.RTEBinaryNode class-compiling, Next: I18N.RTEBinaryNode-compiling, Up: I18N.RTEBinaryNode - -I18N.RTEBinaryNode class: compiling ------------------------------------ - -lhs: lhs op: op rhs: rhs - Private - Create a node in the parse tree for the run-time - expression, mapping s to a Smalltalk arithmetic selector - - - -File: gst-libs.info, Node: I18N.RTEBinaryNode-compiling, Next: I18N.RTEBinaryNode-computing, Prev: I18N.RTEBinaryNode class-compiling, Up: I18N.RTEBinaryNode - -I18N.RTEBinaryNode: compiling ------------------------------ - -lhs - Answer `lhs'. - -op - Answer `op'. - -rhs - Answer `rhs'. - - - -File: gst-libs.info, Node: I18N.RTEBinaryNode-computing, Prev: I18N.RTEBinaryNode-compiling, Up: I18N.RTEBinaryNode - -I18N.RTEBinaryNode: computing ------------------------------ - -lhs: lhsNode op: aSymbol rhs: rhsNode - Initialize the children of the receiver and the operation to be - done between them - -printOn: aStream - Print a representation of the receiver on aStream - -send: parameter - Private - Evaluate the receiver by evaluating both children and - performing an arithmetic operation between them. - - - -File: gst-libs.info, Node: I18N.RTELiteralNode, Next: I18N.RTENegationNode, Prev: I18N.RTEBinaryNode, Up: I18N - -I18N.RTELiteralNode -=================== - -Defined in namespace I18N -Superclass: I18N.RunTimeExpression -Category: i18n-Messages - -* Menu: - -* I18N.RTELiteralNode class-initializing:: (class) -* I18N.RTELiteralNode-computing:: (instance) - - -File: gst-libs.info, Node: I18N.RTELiteralNode class-initializing, Next: I18N.RTELiteralNode-computing, Up: I18N.RTELiteralNode - -I18N.RTELiteralNode class: initializing ---------------------------------------- - -parseFrom: aStream - Parse a literal number from aStream and return a new node - - - -File: gst-libs.info, Node: I18N.RTELiteralNode-computing, Prev: I18N.RTELiteralNode class-initializing, Up: I18N.RTELiteralNode - -I18N.RTELiteralNode: computing ------------------------------- - -n: value - Set the value of the literal that the node represents - -printOn: aStream - Print a representation of the receiver on aStream - -send: parameter - Answer a fixed value, the literal encoded in the node - - - -File: gst-libs.info, Node: I18N.RTENegationNode, Next: I18N.RTEParameterNode, Prev: I18N.RTELiteralNode, Up: I18N - -I18N.RTENegationNode -==================== - -Defined in namespace I18N -Superclass: I18N.RunTimeExpression -Category: i18n-Messages - -* Menu: - -* I18N.RTENegationNode class-initializing:: (class) -* I18N.RTENegationNode-computing:: (instance) - - -File: gst-libs.info, Node: I18N.RTENegationNode class-initializing, Next: I18N.RTENegationNode-computing, Up: I18N.RTENegationNode - -I18N.RTENegationNode class: initializing ----------------------------------------- - -child: aNode - Answer a new node representing the logical negation of aNode - - - -File: gst-libs.info, Node: I18N.RTENegationNode-computing, Prev: I18N.RTENegationNode class-initializing, Up: I18N.RTENegationNode - -I18N.RTENegationNode: computing -------------------------------- - -child: value - Set the child of which the receiver will compute the negation - -printOn: aStream - Print a representation of the receiver on aStream - -send: parameter - Evaluate the receiver by computing the child's logical negation - - - -File: gst-libs.info, Node: I18N.RTEParameterNode, Next: I18N.RunTimeExpression, Prev: I18N.RTENegationNode, Up: I18N - -I18N.RTEParameterNode -===================== - -Defined in namespace I18N -Superclass: I18N.RunTimeExpression -Category: i18n-Messages - -* Menu: - -* I18N.RTEParameterNode-computing:: (instance) - - -File: gst-libs.info, Node: I18N.RTEParameterNode-computing, Up: I18N.RTEParameterNode - -I18N.RTEParameterNode: computing --------------------------------- - -printOn: aStream - Print a representation of the receiver on aStream - -send: parameter - Evaluate the receiver by answering the parameter - - - -File: gst-libs.info, Node: I18N.RunTimeExpression, Prev: I18N.RTEParameterNode, Up: I18N - -I18N.RunTimeExpression -====================== - -Defined in namespace I18N -Superclass: Object -Category: i18n-Messages - -* Menu: - -* I18N.RunTimeExpression class-compiling:: (class) -* I18N.RunTimeExpression class-initializing:: (class) -* I18N.RunTimeExpression class-instance creation:: (class) -* I18N.RunTimeExpression-computing:: (instance) - - -File: gst-libs.info, Node: I18N.RunTimeExpression class-compiling, Next: I18N.RunTimeExpression class-initializing, Up: I18N.RunTimeExpression - -I18N.RunTimeExpression class: compiling ---------------------------------------- - -parseExpression: stream - Private - Compile the expression in the stream - -parseOperand: stream - Parse an operand from the stream (i.e. an unary negation, a - parenthesized subexpression, `n' or a number) and answer the - corresponding parse node. - -parseOperator: stream - Answer a Symbol for an operator read from stream, or nil if - something else is found. - - - -File: gst-libs.info, Node: I18N.RunTimeExpression class-initializing, Next: I18N.RunTimeExpression class-instance creation, Prev: I18N.RunTimeExpression class-compiling, Up: I18N.RunTimeExpression - -I18N.RunTimeExpression class: initializing ------------------------------------------- - -initialize - Private - Initialize internal tables for the parser - - - -File: gst-libs.info, Node: I18N.RunTimeExpression class-instance creation, Next: I18N.RunTimeExpression-computing, Prev: I18N.RunTimeExpression class-initializing, Up: I18N.RunTimeExpression - -I18N.RunTimeExpression class: instance creation ------------------------------------------------ - -on: aString - Compile aString and answer a RunTimeExpression - - - -File: gst-libs.info, Node: I18N.RunTimeExpression-computing, Prev: I18N.RunTimeExpression class-instance creation, Up: I18N.RunTimeExpression - -I18N.RunTimeExpression: computing ---------------------------------- - -send: parameter - This method's functionality should be implemented by subclasses of - RunTimeExpression - -value: parameter - Evaluate the receiver, and answer its value as an integer - - - -File: gst-libs.info, Node: XML, Next: Class index, Prev: I18N, Up: Top - -XML -*** - - _by Thomas Gagne_ - -* Menu: - -* Building a DOM from XML:: -* Building XML:: -* Using DTDs:: -* XSL Processing:: -* Attributions:: - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-8 smalltalk-2.1.7/doc/gst-libs.info-8 --- smalltalk-2.1.6/doc/gst-libs.info-8 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-8 1970-01-01 01:00:00.000000000 +0100 @@ -1,463 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: Building a DOM from XML, Next: Building XML, Up: XML - -Building a DOM from XML -======================= - - If you're like me, the first thing you may be trying to do is build -a Document Object Model (DOM) tree from some kind of XML input. -Assuming you've got the XML in a String the following code will build -an XML Document: - - XML XMLParser processDocumentString: theXMLString - beforeScanDo: [ :p | p validate: false]. - - Though the code above appears as though it should be easy to use, -there's some hidden features you should know about. First, -`theXMLString' can not contain any null bytes. Depending on where your -XML comes from it may have a NULL byte at the end (like mine did). -Many languages implement strings as an array of bytes (usually -printable ones) ending with a null (a character with integer value 0). -In my case, the XML was coming from a remote client written in C using -middleware to send the message to my server. Since the middleware -doesn't assume to know anything about the message it received, it's -received into a String, null-byte and all. To remove it I used: - - XML XMLParser processDocumentString: (aString copyWithout: 0 asCharacter) - beforeScanDo: [ :p | p validate: false]. - - Starting out, I didn't know much about the value of DTDs either -(Document Type Definitions), so I wasn't using them (more on why you -should later). What you need to know is XML comes in two flavors, -(three if you include broken as a flavor) _well-formed_ and _valid_. - - _Well-formed XML_ is simply XML following the basic rules, like only -one top-level (the document's root), no overlapping tags, and a few -other contraints. Valid XML means not only is the XML well-formed, but -it's also compliant with some kind of rule base about which elements -are allowed to follow which other ones, whether or not attributes are -permitted and what their values and defaults should be, etc. - - There's no way to get around well-formedness. Most XML tools -complain vociferously about missing or open tags. What you may not -have lying around, though, is a DTD describing how the XML should be -assembled. If you need to skip validation for any reason you must -include the selector: - - beforeScanDo: [ :p | p validate: false]. - - Now that you have your XML document, you probably want to access its -contents (why else would you want one, right?). Let's take the -following (brief) XML as an example: - - - - 01/04/2000 - - - widget - 1.0000 - - - doodad - 2.0000 - - - - The first thing you probably want to know is how to access the -different tags, and more specifically, how to access the contents of -those tags. First, by way of providing a roadmap to the elements I'll -show you the Smalltalk code for getting different pieces of the -document, assuming the variable you've assigned the document to is -named _doc_. I'll also create instance variables for the various -elements as I go along: - -_Element you want_ _Code to get it_ -porder element `doc root' -porder_head `doc root elementNamed: - 'porder_head'' -order_date (as a String) `(porderHead elementNamed: - 'order_date') characterData' -order_date (as a Date) `(Date readFrom: (porderHead - elementNamed: 'order_date') - characterData readStream)' -a collection with both porder_lines `doc root elementsNamed: - 'porder_line'' - - I've deliberately left-out accessing `porder''s attribute because -accessing them is different from accessing other nodes. You can get an -OrderedCollection of attributes using: - - attributes := doc root attributes. - -but the ordered collection isn't really useful. To access any single -attribute you'd need to look for it in the collection: - - porderNum := (attributes detect: [ :each | each key type = 'porder_num' ]) value. - - But that's not a whole lot of fun, especially if there's a lot you -need to get, and if there's any possibility the attribute may not -exist. Then you have to do the whole `detect:ifNone:' thing, and boy, -does that make the code readable! What I did instead was create a -method in my objects' abstract: - - dictionaryForAttributes: aCollection - ^Dictionary withAll: (aCollection - collect: [ :each | each key type -> each value ]) - - Now what you have is an incrementally more useful method for getting -attributes: - - attributes := self dictionaryForAttributes: doc root attributes. - porderNum := attributes at: 'porder_num'. - - At first this appears like more code, and for a single attribute it -probably is. But if an element includes more than one attribute the -payoff is fairly decent. Of course, you still need to handle the -absence of an attribute in the dictionary but I think it reads a little -better using a Dictionary than an OrderedCollection: - - porderNum := attributes at: 'porder_num' ifAbsent: []. - - -File: gst-libs.info, Node: Building XML, Next: Using DTDs, Prev: Building a DOM from XML, Up: XML - -Building XML -============ - - There's little reason to build an XML document if its not going to -be processed by something down the road. Most XML tools require XML -documents have a document root. A root is a tag inside which all other -tags exist, or put another way, a single parent node from which all -other nodes descend. In my case, a co-worker was attempting to use -Sablot's sabcmd to transform the XML from my server into HTML. So -start your document with the root ready to go: - - replyDoc := XML Document new. - replyDoc addNode: (XML Element tag: 'response'). - - Before doing anything more complex, we can play with our new XML -document. Assuming you're going to want to send the XML text to -someone or write it to a file, you may first want to capture it in a -string. Even if you don't want to first capture it into a string our -example is going to: - - replyStream := String new writeStream. - replyDoc printOn: replyStream. - - If we examine'd the contents of our replyStream (`replyStream -contents') we'd see: - - - - Which is what an empty tag looks like. - - Let's add some text to our XML document now. Let's say we want it -to look like: - - Hello, world! - - Building this actually requires two nodes be added to a new XML -document. The first node (or element) is named `response'. The second -node adds text to the first: - - replyDoc := XML Document new. - replyDoc addNode: (XML Element tag: response). "our root node" - replyDoc root addNode: (XML Text text: 'Hello, world!'). - - Another way of writing it, and the way I've adopted in my code is to -create the whole node before adding it. This is not just to reduce the -appearance of assignments, but it suggests a template for cascading -`#addNode:' messages to an element, which, if you're building any kind -of nontrivial XML, you'll be doing a lot of: - - replyDoc := XML Document new. - replyDoc addNode: ( - (XML Element tag: response) - addNode: (XML Text text: 'Hello, world!') - ). - - Unless you're absolutely sure you'll never accidentally add text -nodes that have an ampersand (&) in them, you'll need to escape it to -get past XML parsers. The way I got around this was to escape them -whenever I added text nodes. To make it easier, I (again) created a -method in my objects' abstract superclass: - - asXMLElement: tag value: aValue - | n | - - n := XML Element tag: tag. - aValue isNil ifFalse: [ - n addNode: (XML Text - text: (aValue displayString copyReplaceAll: '&' with: '&'))]. - ^n - - Calls to `self asXMLElement: 'sometagname' value: -anInstanceVariable' are littered throughout my code. - - Adding attributes to documents is, thankfully, easier than accessing -them. If we wanted to add an attribute to our document above we can do -so with a single statement: - - replyDoc root addAttribute: (XML Attribute name: 'isExample' value: 'yes'). - - Now, our XML looks like: - - Hello, world! - - -File: gst-libs.info, Node: Using DTDs, Next: XSL Processing, Prev: Building XML, Up: XML - -Using DTDs -========== - - What I didn't appreciate in my first XML project (this one) was how -much error checking I was doing just to verify the format of incoming -XML. During testing I'd go looking for attributes or elements that -_should_ have been there but for various reasons were not. Because I -was coding fast and furious I overlooked some and ignored others. -Testing quickly ferreted out my carelessnes and my application started -throwing exceptions faster than election officials throw chads. - - The cure, at least for formatting, is having a DTD, or Document Type -Definition describing the XML format. You can read more about the -syntax of DTDs in the XML specification. - - There's not a lot programmers are able to do with DTDs in -VisualWorks, except requiring incoming XML to include DOCTYPE -statements. There is something programmers need to do to handle the -exceptions the XML parser throws when it finds errors. - - I'm not an expert at writing Smalltalk exception handling code, and I -haven't decided on what those exceptions should look like to the client -who sent the poorly formatted XML in the first place. The code below -does a decent job of catching the errors and putting the description of -the error into an XML response. It's also a fairly decent example of -XML document building as discussed earlier. - - replyDoc := XML Document new. - replyDoc addNode: (XML Element tag: 'response'). - - [ - doc := XML XMLParser processDocumentString: (anIsdMessage message copyWithout: 0) asString - ] on: Exception do: [ :ex | - replyDoc root - addAttribute: (XML Attribute name: 'type' value: 'Exception'); - addNode: ((XML Element tag: 'description') - addNode: (XML Text text: ex signal description)); - addNode: ((XML Element tag: 'message') - addNode: (XML Text text: ex messageText)) - ]. - - I said before there's not a lot programmers can do with DTDs, but -there are some things I wish VW's XML library would do: - - * I'd like to make sure the documents I build are built correctly. - It would be great if a DTD could be attached to an empty XML - document so that exceptions could be thrown as misplaced elements - were added. - - * It would be great to specify which DTD the XML parser should use - when parsing incoming XML so that the incoming XML wouldn't always - have to include a tag. Though it's fairly easy to add - the tag at the start of XML text, it's really not that simple. - You need to know the XML's root element before adding the - tag but you really don't know that until after you've - parsed the XML You would have to parse the XML, determine the - root tag, then parse the output of the first into a new XML - document with validation turned-on. - - * Another reason to be able to create a DTD document to use with - subsequent parsing is to avoid the overhead of parsing the same - DTD over and over again. In transaction processing systems this - kind of redundant task could be eliminated and the spare CPU - cycles put to better use. - - -File: gst-libs.info, Node: XSL Processing, Next: Attributions, Prev: Using DTDs, Up: XML - -XSL Processing -============== - - I spent a night the other week trying to figure out how to get VW's -XSL libraries to do anything. I no longer need it now, but I did -discover some things others with an immediate need may want to be aware -of. - - * Transforming an XML document requires you parse the XSL and XML - documents separately first. After that, you tell the XSL - RuleDatabase to process the XML document. The result is another - XML document with the transformations. - - A code snippet for doing just that appears below. - | rules xmlDoc htmlDoc | - - rules := XSL RuleDatabase new readFileNamed: 'paymentspending.xsl'. - xmlDoc := XML XMLParser - processDocumentInFilename: 'paymentspending.xml' - beforeScanDo: [ :p | p validate: false ]. - htmlDoc := rules process: xmlDoc. - - There is also a `readString:' method which can be used instead of - `readFileNamed:'. - - * VW's XSL library doesn't use the W3-approved stylesheet, but - instead uses the draft version (same one Microsoft uses). - `' - - * The functions `position()' and `count()' aren't implemented, or if - they are, aren't implemented in the way other XSL tools implement - it. - - -File: gst-libs.info, Node: Attributions, Prev: XSL Processing, Up: XML - -Attributions -============ - - Cincom, for supporting Smalltalk and the Smalltalk community by -making an open-source version available. - - Thanks also to Randy Ynchausti, Bijan Parsia, Reinout Heeck, and -Joseph Bacanskas for answering many questions on VW XML. - - -File: gst-libs.info, Node: Class index, Next: Method index, Prev: XML, Up: Top - -Class index -*********** - -* Menu: - -* BLOX.BArc: BLOX.BArc. -* BLOX.BBalloon: BLOX.BBalloon. -* BLOX.BBoundingBox: BLOX.BBoundingBox. -* BLOX.BButton: BLOX.BButton. -* BLOX.BButtonLike: BLOX.BButtonLike. -* BLOX.BCanvas: BLOX.BCanvas. -* BLOX.BCanvasObject: BLOX.BCanvasObject. -* BLOX.BCheckMenuItem: BLOX.BCheckMenuItem. -* BLOX.BColorButton: BLOX.BColorButton. -* BLOX.BContainer: BLOX.BContainer. -* BLOX.BDialog: BLOX.BDialog. -* BLOX.BDropDown: BLOX.BDropDown. -* BLOX.BDropDownEdit: BLOX.BDropDownEdit. -* BLOX.BDropDownList: BLOX.BDropDownList. -* BLOX.BEdit: BLOX.BEdit. -* BLOX.BEmbeddedImage: BLOX.BEmbeddedImage. -* BLOX.BEmbeddedText: BLOX.BEmbeddedText. -* BLOX.BEventSet: BLOX.BEventSet. -* BLOX.BEventTarget: BLOX.BEventTarget. -* BLOX.BExtended: BLOX.BExtended. -* BLOX.BForm: BLOX.BForm. -* BLOX.BImage: BLOX.BImage. -* BLOX.BLabel: BLOX.BLabel. -* BLOX.BLine: BLOX.BLine. -* BLOX.BList: BLOX.BList. -* BLOX.Blox: BLOX.Blox. -* BLOX.BMenu: BLOX.BMenu. -* BLOX.BMenuBar: BLOX.BMenuBar. -* BLOX.BMenuItem: BLOX.BMenuItem. -* BLOX.BMenuObject: BLOX.BMenuObject. -* BLOX.BOval: BLOX.BOval. -* BLOX.BPolyline: BLOX.BPolyline. -* BLOX.BPopupMenu: BLOX.BPopupMenu. -* BLOX.BPopupWindow: BLOX.BPopupWindow. -* BLOX.BPrimitive: BLOX.BPrimitive. -* BLOX.BProgress: BLOX.BProgress. -* BLOX.BRadioButton: BLOX.BRadioButton. -* BLOX.BRadioGroup: BLOX.BRadioGroup. -* BLOX.BRectangle: BLOX.BRectangle. -* BLOX.BScrolledCanvas: BLOX.BScrolledCanvas. -* BLOX.BSpline: BLOX.BSpline. -* BLOX.BText: BLOX.BText. -* BLOX.BTextAttributes: BLOX.BTextAttributes. -* BLOX.BTextBindings: BLOX.BTextBindings. -* BLOX.BTextTags: BLOX.BTextTags. -* BLOX.BToggle: BLOX.BToggle. -* BLOX.BTransientWindow: BLOX.BTransientWindow. -* BLOX.BViewport: BLOX.BViewport. -* BLOX.BWidget: BLOX.BWidget. -* BLOX.BWindow: BLOX.BWindow. -* BLOX.Gui: BLOX.Gui. -* I18N.BigEndianFileStream: I18N.BigEndianFileStream. -* I18N.EncodedStream: I18N.EncodedStream. -* I18N.Encoder: I18N.Encoder. -* I18N.Encoders.ComposeUCS4BE: I18N.Encoders.ComposeUCS4BE. -* I18N.Encoders.ComposeUCS4LE: I18N.Encoders.ComposeUCS4LE. -* I18N.Encoders.FromUCS4: I18N.Encoders.FromUCS4. -* I18N.Encoders.FromUTF7: I18N.Encoders.FromUTF7. -* I18N.Encoders.Iconv: I18N.Encoders.Iconv. -* I18N.Encoders.SplitUCS4BE: I18N.Encoders.SplitUCS4BE. -* I18N.Encoders.SplitUCS4LE: I18N.Encoders.SplitUCS4LE. -* I18N.Encoders.ToUCS4: I18N.Encoders.ToUCS4. -* I18N.Encoders.ToUTF7: I18N.Encoders.ToUTF7. -* I18N.FileStreamSegment: I18N.FileStreamSegment. -* I18N.IncompleteSequenceError: I18N.IncompleteSequenceError. -* I18N.InvalidCharsetError: I18N.InvalidCharsetError. -* I18N.InvalidSequenceError: I18N.InvalidSequenceError. -* I18N.LcMessages: I18N.LcMessages. -* I18N.LcMessagesCatalog: I18N.LcMessagesCatalog. -* I18N.LcMessagesDomain: I18N.LcMessagesDomain. -* I18N.LcMessagesDummyDomain: I18N.LcMessagesDummyDomain. -* I18N.LcMessagesMoFileVersion0: I18N.LcMessagesMoFileVersion0. -* I18N.LcMessagesTerritoryDomain: I18N.LcMessagesTerritoryDomain. -* I18N.LcMonetary: I18N.LcMonetary. -* I18N.LcMonetaryISO: I18N.LcMonetaryISO. -* I18N.LcNumeric: I18N.LcNumeric. -* I18N.LcPrintFormats: I18N.LcPrintFormats. -* I18N.LcTime: I18N.LcTime. -* I18N.Locale: I18N.Locale. -* I18N.LocaleConventions: I18N.LocaleConventions. -* I18N.LocaleData: I18N.LocaleData. -* I18N.RTEAlternativeNode: I18N.RTEAlternativeNode. -* I18N.RTEBinaryNode: I18N.RTEBinaryNode. -* I18N.RTELiteralNode: I18N.RTELiteralNode. -* I18N.RTENegationNode: I18N.RTENegationNode. -* I18N.RTEParameterNode: I18N.RTEParameterNode. -* I18N.RunTimeExpression: I18N.RunTimeExpression. -* TCP.AbstractSocket: TCP.AbstractSocket. -* TCP.AbstractSocketImpl: TCP.AbstractSocketImpl. -* TCP.Datagram: TCP.Datagram. -* TCP.DatagramSocket: TCP.DatagramSocket. -* TCP.DatagramSocketImpl: TCP.DatagramSocketImpl. -* TCP.ICMPSocketImpl: TCP.ICMPSocketImpl. -* TCP.IPAddress: TCP.IPAddress. -* TCP.MulticastSocket: TCP.MulticastSocket. -* TCP.MulticastSocketImpl: TCP.MulticastSocketImpl. -* TCP.OOBSocketImpl: TCP.OOBSocketImpl. -* TCP.RawSocketImpl: TCP.RawSocketImpl. -* TCP.ReadBuffer: TCP.ReadBuffer. -* TCP.ServerSocket: TCP.ServerSocket. -* TCP.Socket: TCP.Socket. -* TCP.SocketAddress: TCP.SocketAddress. -* TCP.SocketImpl: TCP.SocketImpl. -* TCP.TCPSocketImpl: TCP.TCPSocketImpl. -* TCP.UDPSocketImpl: TCP.UDPSocketImpl. -* TCP.WriteBuffer: TCP.WriteBuffer. - diff -rNU3 smalltalk-2.1.6/doc/gst-libs.info-9 smalltalk-2.1.7/doc/gst-libs.info-9 --- smalltalk-2.1.6/doc/gst-libs.info-9 2003-12-13 10:44:47.000000000 +0100 +++ smalltalk-2.1.7/doc/gst-libs.info-9 1970-01-01 01:00:00.000000000 +0100 @@ -1,1165 +0,0 @@ -This is gst-libs.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-libs-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* Libraries: (gst-libs). The GNU Smalltalk class libraries. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 13 December 2003. - - Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, -Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst-libs.info, Node: Method index, Next: Cross-reference, Prev: Class index, Up: Top - -Method index -************ - -* Menu: - -* =: TCP.SocketAddress-accessing. -* ? <1>: I18N.LocaleConventions-accessing. -* ? <2>: I18N.LocaleConventions class-accessing. -* ? <3>: I18N.LcPrintFormats-printing. -* ? <4>: I18N.LcMessagesDomain-querying. -* ?: I18N.LcMessages-opening MO files. -* accept: TCP.ServerSocket-accessing. -* accept_ <1>: TCP.ServerSocket-accessing. -* accept_: TCP.AbstractSocketImpl-socket operations. -* activate: BLOX.BWidget-widget protocol. -* activateNext: BLOX.BWidget-widget protocol. -* activatePrevious: BLOX.BWidget-widget protocol. -* active: BLOX.Blox class-utility. -* activeBackground: BLOX.BMenuObject-accessing. -* activeBackground_: BLOX.BMenuObject-accessing. -* activeForeground: BLOX.BMenuObject-accessing. -* activeForeground_: BLOX.BMenuObject-accessing. -* add_: BLOX.BMenuBar-accessing. -* add_afterIndex_ <1>: BLOX.BList-accessing. -* add_afterIndex_: BLOX.BDropDown-list box accessing. -* add_element_afterIndex_ <1>: BLOX.BList-accessing. -* add_element_afterIndex_: BLOX.BDropDown-list box accessing. -* addButton_receiver_index_: BLOX.BDialog-accessing. -* addButton_receiver_message_: BLOX.BDialog-accessing. -* addButton_receiver_message_argument_: BLOX.BDialog-accessing. -* addChild_ <1>: BLOX.BWidget-customization. -* addChild_ <2>: BLOX.BPopupWindow-geometry management. -* addChild_ <3>: BLOX.Blox-customization. -* addChild_: BLOX.BCanvas-geometry management. -* addEventSet_: BLOX.BEventTarget-intercepting events. -* addLast_ <1>: BLOX.BList-accessing. -* addLast_: BLOX.BDropDown-list box accessing. -* addLast_element_ <1>: BLOX.BList-accessing. -* addLast_element_: BLOX.BDropDown-list box accessing. -* addLine: BLOX.BMenu-callback registration. -* addMenuItemFor_notifying_: BLOX.BMenu-callback registration. -* address <1>: TCP.Socket-accessing. -* address <2>: TCP.ServerSocket-accessing. -* address <3>: TCP.DatagramSocket-accessing. -* address <4>: TCP.Datagram-accessing. -* address: TCP.AbstractSocket-accessing. -* address_: TCP.Datagram-accessing. -* addressClass <1>: TCP.UDPSocketImpl class-implementation. -* addressClass <2>: TCP.TCPSocketImpl class-implementation. -* addressClass <3>: TCP.OOBSocketImpl class-implementation. -* addressClass <4>: TCP.IPAddress-accessing. -* addressClass <5>: TCP.ICMPSocketImpl class-implementation. -* addressClass <6>: TCP.AbstractSocketImpl-socket operations. -* addressClass: TCP.AbstractSocketImpl class-abstract. -* addressFamily: TCP.SocketAddress class-accessing. -* addressSize: TCP.IPAddress class-constants. -* alignment: BLOX.BLabel-accessing. -* alignment_: BLOX.BLabel-accessing. -* allByName_: TCP.SocketAddress class-host name lookup. -* allFormatsExample: I18N.LcTime-tests. -* anyLocalAddress: TCP.SocketAddress class-accessing. -* asByteArray <1>: TCP.SocketAddress-accessing. -* asByteArray: TCP.IPAddress-accessing. -* asPrimitiveWidget <1>: BLOX.BPrimitive-accessing. -* asPrimitiveWidget <2>: BLOX.BMenuObject-accessing. -* asPrimitiveWidget <3>: BLOX.Blox-widget protocol. -* asPrimitiveWidget: BLOX.BExtended-accessing. -* associationAt_ <1>: BLOX.BList-accessing. -* associationAt_: BLOX.BDropDown-list box accessing. -* at_ <1>: I18N.LcMessagesDomain-querying. -* at_ <2>: BLOX.Blox class-utility. -* at_ <3>: BLOX.BList-accessing. -* at_ <4>: BLOX.BDropDown-list box accessing. -* at_: BLOX.BCanvas-widget protocol. -* at_cache_: TCP.SocketAddress class-accessing. -* at_plural_with_: I18N.LcMessagesDomain-querying. -* at_put_: I18N.LcMessagesDomain-querying. -* atEnd <1>: I18N.Encoders.ToUTF7-conversion. -* atEnd <2>: I18N.Encoders.SplitUCS4LE-stream operation. -* atEnd <3>: I18N.Encoders.SplitUCS4BE-stream operation. -* atEnd <4>: I18N.Encoders.Iconv-stream operation. -* atEnd <5>: I18N.Encoders.FromUTF7-converting. -* atEnd <6>: I18N.Encoder-stream operations. -* atEnd <7>: TCP.Socket-stream protocol. -* atEnd <8>: TCP.ReadBuffer-buffer handling. -* atEnd: TCP.AbstractSocket-stream protocol. -* atEndOfInput: I18N.Encoder-stream operations. -* atMouse: BLOX.Blox class-utility. -* available <1>: TCP.Socket-stream protocol. -* available: TCP.AbstractSocket-accessing. -* backgroundColor <1>: BLOX.BTextAttributes-setting attributes. -* backgroundColor <2>: BLOX.BText-accessing. -* backgroundColor <3>: BLOX.BProgress-accessing. -* backgroundColor <4>: BLOX.BMenuObject-accessing. -* backgroundColor <5>: BLOX.BList-accessing. -* backgroundColor <6>: BLOX.BLabel-accessing. -* backgroundColor <7>: BLOX.BImage-accessing. -* backgroundColor <8>: BLOX.BForm-accessing. -* backgroundColor <9>: BLOX.BEdit-accessing. -* backgroundColor <10>: BLOX.BDropDown-accessing. -* backgroundColor <11>: BLOX.BCanvas-accessing. -* backgroundColor: BLOX.BButton-accessing. -* backgroundColor_ <1>: BLOX.BTextAttributes-setting attributes. -* backgroundColor_ <2>: BLOX.BTextAttributes class-instance-creation shortcuts. -* backgroundColor_ <3>: BLOX.BText-accessing. -* backgroundColor_ <4>: BLOX.BProgress-accessing. -* backgroundColor_ <5>: BLOX.BMenuObject-accessing. -* backgroundColor_ <6>: BLOX.BList-accessing. -* backgroundColor_ <7>: BLOX.BLabel-accessing. -* backgroundColor_ <8>: BLOX.BImage-accessing. -* backgroundColor_ <9>: BLOX.BForm-accessing. -* backgroundColor_ <10>: BLOX.BEdit-accessing. -* backgroundColor_ <11>: BLOX.BDropDownList-accessing. -* backgroundColor_ <12>: BLOX.BDropDownEdit-accessing. -* backgroundColor_ <13>: BLOX.BDropDown-accessing. -* backgroundColor_ <14>: BLOX.BCanvas-accessing. -* backgroundColor_: BLOX.BButton-accessing. -* balloonDelayTime: BLOX.BBalloon class-accessing. -* balloonDelayTime_: BLOX.BBalloon class-accessing. -* basicAddChild_: BLOX.Blox-customization. -* basicPrint_on_: I18N.LcNumeric-printing. -* beep: BLOX.Blox class-utility. -* between_and_do_: BLOX.BCanvas-widget protocol. -* bindTo_port_: TCP.AbstractSocketImpl-socket operations. -* black <1>: BLOX.BTextAttributes-colors. -* black: BLOX.BTextAttributes class-instance-creation shortcuts. -* blank: BLOX.BImage-image management. -* blox <1>: BLOX.Gui-accessing. -* blox: BLOX.BCanvasObject-accessing. -* blox_: BLOX.Gui-accessing. -* blue <1>: BLOX.BTextAttributes-colors. -* blue: BLOX.BTextAttributes class-instance-creation shortcuts. -* borderWidth: BLOX.BWidget-accessing. -* borderWidth_: BLOX.BWidget-accessing. -* boundingBox <1>: BLOX.BWidget-geometry management. -* boundingBox <2>: BLOX.BPolyline-accessing. -* boundingBox <3>: BLOX.BCanvasObject-accessing. -* boundingBox <4>: BLOX.BCanvas-widget protocol. -* boundingBox: BLOX.BBoundingBox-accessing. -* boundingBox_: BLOX.BWidget-geometry management. -* bringToTop: BLOX.BWidget-widget protocol. -* bufferContents <1>: TCP.Socket-stream protocol. -* bufferContents: TCP.ReadBuffer-buffer handling. -* bufferSize <1>: TCP.DatagramSocketImpl-accessing. -* bufferSize: TCP.DatagramSocket-accessing. -* bufferSize_ <1>: TCP.DatagramSocketImpl-accessing. -* bufferSize_: TCP.DatagramSocket-accessing. -* byName_: TCP.SocketAddress class-host name lookup. -* callback <1>: BLOX.BWindow-accessing. -* callback <2>: BLOX.BText-accessing. -* callback <3>: BLOX.BMenuObject-callback. -* callback <4>: BLOX.BList-widget protocol. -* callback <5>: BLOX.BEdit-accessing. -* callback <6>: BLOX.BDropDown-callbacks. -* callback <7>: BLOX.BButtonLike-accessing. -* callback: BLOX.BButton-accessing. -* callback_message_ <1>: BLOX.BWindow-accessing. -* callback_message_ <2>: BLOX.BToggle-accessing. -* callback_message_ <3>: BLOX.BText-accessing. -* callback_message_ <4>: BLOX.BRadioButton-accessing. -* callback_message_ <5>: BLOX.BMenuObject-callback. -* callback_message_ <6>: BLOX.BList-widget protocol. -* callback_message_ <7>: BLOX.BEdit-accessing. -* callback_message_ <8>: BLOX.BDropDownList-callbacks. -* callback_message_ <9>: BLOX.BDropDown-callbacks. -* callback_message_ <10>: BLOX.BButtonLike-accessing. -* callback_message_: BLOX.BButton-accessing. -* callback_message_argument_: BLOX.BMenuObject-callback. -* callback_using_: BLOX.BMenu-callback registration. -* canRead: TCP.OOBSocketImpl-implementation. -* cap <1>: BLOX.BPolyline-accessing. -* cap: BLOX.BLine-accessing. -* cap_ <1>: BLOX.BPolyline-accessing. -* cap_: BLOX.BLine-accessing. -* category <1>: I18N.LocaleData class-accessing. -* category <2>: I18N.LcTime class-accessing. -* category <3>: I18N.LcNumeric class-accessing. -* category <4>: I18N.LcMonetary class-accessing. -* category: I18N.LcMessages class-accessing. -* center <1>: BLOX.BWindow-widget protocol. -* center <2>: BLOX.BTextAttributes-setting attributes. -* center <3>: BLOX.BTextAttributes class-instance-creation shortcuts. -* center <4>: BLOX.BDialog-widget protocol. -* center: BLOX.BBoundingBox-accessing. -* center_extent_: BLOX.BBoundingBox-accessing. -* centerIn_ <1>: BLOX.BWindow-widget protocol. -* centerIn_: BLOX.BDialog-widget protocol. -* charset: I18N.LocaleData-accessing. -* charsInLine_: BLOX.BText-position & lines. -* checkPeriod: TCP.AbstractSocket class-timed-out operations. -* checkPeriod_: TCP.AbstractSocket class-timed-out operations. -* child_ <1>: I18N.RTENegationNode-computing. -* child_: I18N.RTENegationNode class-initializing. -* child_height_ <1>: BLOX.BWidget-geometry management. -* child_height_ <2>: BLOX.BText-geometry management. -* child_height_ <3>: BLOX.BPopupWindow-geometry management. -* child_height_: BLOX.BCanvas-geometry management. -* child_heightOffset_ <1>: BLOX.BWidget-geometry management. -* child_heightOffset_ <2>: BLOX.BText-geometry management. -* child_heightOffset_ <3>: BLOX.BPopupWindow-geometry management. -* child_heightOffset_: BLOX.BCanvas-geometry management. -* child_stretch_: BLOX.BWidget-geometry management. -* child_width_ <1>: BLOX.BWidget-geometry management. -* child_width_ <2>: BLOX.BText-geometry management. -* child_width_ <3>: BLOX.BPopupWindow-geometry management. -* child_width_: BLOX.BCanvas-geometry management. -* child_widthOffset_ <1>: BLOX.BWidget-geometry management. -* child_widthOffset_ <2>: BLOX.BText-geometry management. -* child_widthOffset_ <3>: BLOX.BPopupWindow-geometry management. -* child_widthOffset_: BLOX.BCanvas-geometry management. -* child_x_ <1>: BLOX.BWidget-geometry management. -* child_x_ <2>: BLOX.BText-geometry management. -* child_x_ <3>: BLOX.BPopupWindow-geometry management. -* child_x_: BLOX.BCanvas-geometry management. -* child_xOffset_ <1>: BLOX.BWidget-geometry management. -* child_xOffset_ <2>: BLOX.BText-geometry management. -* child_xOffset_ <3>: BLOX.BPopupWindow-geometry management. -* child_xOffset_: BLOX.BCanvas-geometry management. -* child_y_ <1>: BLOX.BWidget-geometry management. -* child_y_ <2>: BLOX.BText-geometry management. -* child_y_ <3>: BLOX.BPopupWindow-geometry management. -* child_y_: BLOX.BCanvas-geometry management. -* child_yOffset_ <1>: BLOX.BWidget-geometry management. -* child_yOffset_ <2>: BLOX.BText-geometry management. -* child_yOffset_ <3>: BLOX.BPopupWindow-geometry management. -* child_yOffset_: BLOX.BCanvas-geometry management. -* childrenCount: BLOX.Blox-widget protocol. -* childrenDo_: BLOX.Blox-widget protocol. -* chooseColor_label_default_: BLOX.BDialog class-prompters. -* chooseFileToOpen_label_default_defaultExtension_types_: BLOX.BDialog class-prompters. -* chooseFileToSave_label_default_defaultExtension_types_: BLOX.BDialog class-prompters. -* clearClipboard: BLOX.Blox class-utility. -* clipboard: BLOX.Blox class-utility. -* clipboard_: BLOX.Blox class-utility. -* close <1>: TCP.Socket-stream protocol. -* close: TCP.AbstractSocket-accessing. -* closed: BLOX.BPolyline-accessing. -* closed_: BLOX.BPolyline-accessing. -* color <1>: BLOX.BColorButton-accessing. -* color: BLOX.BCanvasObject-accessing. -* color_ <1>: BLOX.BColorButton-accessing. -* color_: BLOX.BCanvasObject-accessing. -* condition_ifTrue_ifFalse_ <1>: I18N.RTEAlternativeNode-computing. -* condition_ifTrue_ifFalse_: I18N.RTEAlternativeNode class-compiling. -* connected: BLOX.BViewport-accessing. -* connectTo_port_ <1>: TCP.SocketImpl-socket operations. -* connectTo_port_: TCP.AbstractSocketImpl-accessing. -* contents <1>: BLOX.BText-accessing. -* contents <2>: BLOX.BEdit-accessing. -* contents: BLOX.BDialog-accessing. -* contents_ <1>: BLOX.BText-accessing. -* contents_ <2>: BLOX.BList-accessing. -* contents_ <3>: BLOX.BEdit-accessing. -* contents_ <4>: BLOX.BDropDown-list box accessing. -* contents_: BLOX.BDialog-accessing. -* contents_elements_ <1>: BLOX.BList-accessing. -* contents_elements_: BLOX.BDropDown-list box accessing. -* copyInto_ <1>: BLOX.BEmbeddedImage-accessing. -* copyInto_: BLOX.BCanvasObject-accessing. -* copyObject: BLOX.BCanvasObject-accessing. -* corner: BLOX.BBoundingBox-accessing. -* corner_: BLOX.BBoundingBox-accessing. -* create <1>: BLOX.BWidget-customization. -* create <2>: BLOX.BExtended-customization. -* create: BLOX.BCanvasObject-widget protocol. -* createColor_green_blue_: BLOX.Blox class-utility. -* createColor_magenta_yellow_: BLOX.Blox class-utility. -* createColor_magenta_yellow_black_: BLOX.Blox class-utility. -* createColor_saturation_value_: BLOX.Blox class-utility. -* createCopy: BLOX.BCanvasObject-accessing. -* createCopyInto_: BLOX.BCanvasObject-accessing. -* created: BLOX.BCanvasObject-widget protocol. -* createList: BLOX.BDropDown-flexibility. -* createLocalAddress <1>: TCP.SocketAddress class-initialization. -* createLocalAddress: TCP.IPAddress class-initialization. -* createLoopbackHost <1>: TCP.SocketAddress class-initialization. -* createLoopbackHost: TCP.IPAddress class-initialization. -* createTextWidget: BLOX.BDropDown-flexibility. -* createUnknownAddress <1>: TCP.SocketAddress class-initialization. -* createUnknownAddress: TCP.IPAddress class-initialization. -* currentColumn: BLOX.BText-position & lines. -* currentLine: BLOX.BText-position & lines. -* currentPosition: BLOX.BText-position & lines. -* currentPosition_: BLOX.BText-position & lines. -* cursor: BLOX.BWidget-accessing. -* cursor_: BLOX.BWidget-accessing. -* cyan <1>: BLOX.BTextAttributes-colors. -* cyan: BLOX.BTextAttributes class-instance-creation shortcuts. -* darkCyan <1>: BLOX.BTextAttributes-colors. -* darkCyan: BLOX.BTextAttributes class-instance-creation shortcuts. -* darkGreen <1>: BLOX.BTextAttributes-colors. -* darkGreen: BLOX.BTextAttributes class-instance-creation shortcuts. -* darkMagenta <1>: BLOX.BTextAttributes-colors. -* darkMagenta: BLOX.BTextAttributes class-instance-creation shortcuts. -* data <1>: TCP.Datagram-accessing. -* data: BLOX.BEmbeddedImage-accessing. -* data_ <1>: TCP.Datagram-accessing. -* data_ <2>: TCP.Datagram class-instance creation. -* data_ <3>: BLOX.BImage-image management. -* data_: BLOX.BEmbeddedImage-accessing. -* data_address_port_: TCP.Datagram class-instance creation. -* deepCopy <1>: BLOX.Blox-basic. -* deepCopy: BLOX.BCanvasObject-accessing. -* default <1>: I18N.LocaleData class-accessing. -* default <2>: I18N.LocaleConventions class-accessing. -* default: I18N.Locale class-instance creation. -* defaultAddressClass: TCP.AbstractSocket class-defaults. -* defaultAddressClass_: TCP.AbstractSocket class-defaults. -* defaultBufferSize: TCP.DatagramSocket class-accessing. -* defaultBufferSize_: TCP.DatagramSocket class-accessing. -* defaultDatagramSocketImplClass: TCP.SocketAddress class-accessing. -* defaultDatagramSocketImplClass_: TCP.SocketAddress class-accessing. -* defaultHeight: BLOX.BForm-accessing. -* defaultHeight_: BLOX.BForm-accessing. -* defaultImplementationClass <1>: TCP.Socket class-accessing. -* defaultImplementationClass <2>: TCP.DatagramSocket class-accessing. -* defaultImplementationClass: TCP.AbstractSocket class-defaults. -* defaultPortAt_: TCP.Socket class-well known ports. -* defaultPortAt_ifAbsent_: TCP.Socket class-well known ports. -* defaultPortAt_put_: TCP.Socket class-well known ports. -* defaultQueueSize: TCP.ServerSocket class-instance creation. -* defaultRawSocketImplClass: TCP.SocketAddress class-accessing. -* defaultRawSocketImplClass_: TCP.SocketAddress class-accessing. -* defaults: I18N.LocaleData class-database. -* defaultStreamSocketImplClass: TCP.SocketAddress class-accessing. -* defaultStreamSocketImplClass_: TCP.SocketAddress class-accessing. -* defaultWidth: BLOX.BForm-accessing. -* defaultWidth_: BLOX.BForm-accessing. -* description <1>: I18N.InvalidSequenceError-accessing. -* description <2>: I18N.InvalidCharsetError-accessing. -* description: I18N.IncompleteSequenceError-accessing. -* destroy <1>: BLOX.BMenu-callback registration. -* destroy: BLOX.Blox-widget protocol. -* destroyed <1>: BLOX.BRadioGroup-widget protocol. -* destroyed <2>: BLOX.BImage-widget protocol. -* destroyed <3>: BLOX.BEdit-widget protocol. -* destroyed <4>: BLOX.BDialog-widget protocol. -* destroyed: BLOX.BCanvas-widget protocol. -* directory: BLOX.BImage class-small icons. -* dispatchEvents: BLOX.Blox class-event dispatching. -* dispatchEvents_: BLOX.Blox class-event dispatching. -* displayHeight: BLOX.BImage-accessing. -* displayHeight_: BLOX.BImage-accessing. -* displayWidth: BLOX.BImage-accessing. -* displayWidth_: BLOX.BImage-accessing. -* dither: BLOX.BImage-image management. -* do_ <1>: BLOX.BList-accessing. -* do_ <2>: BLOX.BDropDown-list box accessing. -* do_: BLOX.BCanvas-widget protocol. -* domain_: I18N.LcMessages-opening MO files. -* domain_localeDirectory_: I18N.LcMessages-opening MO files. -* downArrow: BLOX.BImage class-arrows. -* drawingArea: BLOX.Blox-widget protocol. -* dropdown: BLOX.BDropDown-widget protocol. -* droppedRows: BLOX.BDropDown-accessing. -* droppedRows_: BLOX.BDropDown-accessing. -* dropRectangle: BLOX.BDropDown-widget protocol. -* effect: BLOX.BWidget-accessing. -* effect_: BLOX.BWidget-accessing. -* elements: BLOX.BList-accessing. -* elements_ <1>: BLOX.BList-accessing. -* elements_: BLOX.BDropDown-list box accessing. -* emacsLike: BLOX.BText class-accessing. -* emacsLike_: BLOX.BText class-accessing. -* empty <1>: BLOX.BMenu-callback registration. -* empty: BLOX.BCanvas-widget protocol. -* enabled: BLOX.Blox-widget protocol. -* enabled_: BLOX.Blox-widget protocol. -* endAngle: BLOX.BArc-accessing. -* endAngle_: BLOX.BArc-accessing. -* ensureReadable <1>: TCP.OOBSocketImpl-implementation. -* ensureReadable: TCP.AbstractSocketImpl-asynchronous operations. -* ensureWriteable: TCP.AbstractSocketImpl-asynchronous operations. -* events: BLOX.BTextAttributes-setting attributes. -* events_ <1>: BLOX.BTextAttributes-setting attributes. -* events_: BLOX.BTextAttributes class-instance-creation shortcuts. -* exclaim: BLOX.BImage class-icons. -* exists: BLOX.Blox-widget protocol. -* extent <1>: BLOX.BWidget-geometry management. -* extent: BLOX.BBoundingBox-accessing. -* extent_ <1>: BLOX.BWidget-geometry management. -* extent_: BLOX.BBoundingBox-accessing. -* extraSpace: BLOX.BCanvas-widget protocol. -* extraSpace_: BLOX.BCanvas-widget protocol. -* file: BLOX.BImage class-small icons. -* fileFormatDescription: I18N.LcMessagesMoFileVersion0 class-documentation. -* fileName: I18N.FileStreamSegment-basic. -* fileOp_: TCP.AbstractSocketImpl-socket operations. -* fileOp_ifFail_: TCP.AbstractSocketImpl-socket operations. -* fileOp_with_: TCP.AbstractSocketImpl-socket operations. -* fileOp_with_ifFail_: TCP.AbstractSocketImpl-socket operations. -* fileOp_with_with_: TCP.AbstractSocketImpl-socket operations. -* fileOp_with_with_ifFail_: TCP.AbstractSocketImpl-socket operations. -* fileOp_with_with_with_: TCP.AbstractSocketImpl-socket operations. -* fileOp_with_with_with_ifFail_: TCP.AbstractSocketImpl-socket operations. -* fill <1>: TCP.Socket-stream protocol. -* fill: TCP.ReadBuffer-buffer handling. -* fillBlock_: TCP.ReadBuffer-buffer handling. -* fillChord: BLOX.BArc-accessing. -* filledColor: BLOX.BProgress-accessing. -* filledColor_: BLOX.BProgress-accessing. -* fillFrom_extent_color_: BLOX.BImage-image management. -* fillFrom_to_color_: BLOX.BImage-image management. -* fillRectangle_color_: BLOX.BImage-image management. -* fillSlice: BLOX.BArc-accessing. -* flush <1>: I18N.LocaleData class-accessing. -* flush <2>: I18N.Locale class-instance creation. -* flush <3>: I18N.LcMessagesMoFileVersion0-flushing the cache. -* flush <4>: I18N.LcMessagesDomain-handling the cache. -* flush <5>: I18N.Encoders.ToUTF7-conversion. -* flush <6>: I18N.Encoders.SplitUCS4LE-stream operation. -* flush <7>: I18N.Encoders.SplitUCS4BE-stream operation. -* flush <8>: I18N.Encoders.FromUTF7-converting. -* flush <9>: TCP.WriteBuffer-buffer handling. -* flush <10>: TCP.SocketAddress class-initialization. -* flush <11>: TCP.Socket-stream protocol. -* flush: TCP.AbstractSocket-accessing. -* flushBlock_: TCP.WriteBuffer-buffer handling. -* font <1>: BLOX.BTextAttributes-setting attributes. -* font <2>: BLOX.BText-accessing. -* font <3>: BLOX.BList-accessing. -* font <4>: BLOX.BLabel-accessing. -* font <5>: BLOX.BEmbeddedText-accessing. -* font <6>: BLOX.BEdit-accessing. -* font <7>: BLOX.BDropDown-accessing. -* font: BLOX.BButton-accessing. -* font_ <1>: BLOX.BTextAttributes-setting attributes. -* font_ <2>: BLOX.BTextAttributes class-instance-creation shortcuts. -* font_ <3>: BLOX.BText-accessing. -* font_ <4>: BLOX.BList-accessing. -* font_ <5>: BLOX.BLabel-accessing. -* font_ <6>: BLOX.BEmbeddedText-accessing. -* font_ <7>: BLOX.BEdit-accessing. -* font_ <8>: BLOX.BDropDownList-accessing. -* font_ <9>: BLOX.BDropDownEdit-accessing. -* font_ <10>: BLOX.BDropDown-accessing. -* font_: BLOX.BButton-accessing. -* fontHeight_: BLOX.Blox-widget protocol. -* fonts: BLOX.Blox class-utility. -* fontWidth_: BLOX.Blox-widget protocol. -* foregroundColor <1>: BLOX.BTextAttributes-setting attributes. -* foregroundColor <2>: BLOX.BText-accessing. -* foregroundColor <3>: BLOX.BProgress-accessing. -* foregroundColor <4>: BLOX.BMenuObject-accessing. -* foregroundColor <5>: BLOX.BList-accessing. -* foregroundColor <6>: BLOX.BLabel-accessing. -* foregroundColor <7>: BLOX.BImage-accessing. -* foregroundColor <8>: BLOX.BEdit-accessing. -* foregroundColor <9>: BLOX.BDropDown-accessing. -* foregroundColor <10>: BLOX.BCanvas-accessing. -* foregroundColor: BLOX.BButton-accessing. -* foregroundColor_ <1>: BLOX.BTextAttributes-setting attributes. -* foregroundColor_ <2>: BLOX.BTextAttributes class-instance-creation shortcuts. -* foregroundColor_ <3>: BLOX.BText-accessing. -* foregroundColor_ <4>: BLOX.BProgress-accessing. -* foregroundColor_ <5>: BLOX.BMenuObject-accessing. -* foregroundColor_ <6>: BLOX.BList-accessing. -* foregroundColor_ <7>: BLOX.BLabel-accessing. -* foregroundColor_ <8>: BLOX.BImage-accessing. -* foregroundColor_ <9>: BLOX.BEdit-accessing. -* foregroundColor_ <10>: BLOX.BDropDownList-accessing. -* foregroundColor_ <11>: BLOX.BDropDownEdit-accessing. -* foregroundColor_ <12>: BLOX.BDropDown-accessing. -* foregroundColor_ <13>: BLOX.BCanvas-accessing. -* foregroundColor_: BLOX.BButton-accessing. -* from: BLOX.BArc-accessing. -* from_: BLOX.BArc-accessing. -* from_to_: BLOX.BArc-accessing. -* fromArray_: TCP.IPAddress class-instance creation. -* fromBytes_: TCP.IPAddress class-instance creation. -* fromSockAddr_port_ <1>: TCP.SocketAddress class-abstract. -* fromSockAddr_port_: TCP.IPAddress class-instance creation. -* fromString_ <1>: I18N.LocaleData class-accessing. -* fromString_ <2>: I18N.LocaleConventions class-accessing. -* fromString_ <3>: I18N.Locale class-instance creation. -* fromString_: TCP.IPAddress class-instance creation. -* gamma: BLOX.BImage-accessing. -* gamma_: BLOX.BImage-accessing. -* get: TCP.Datagram-accessing. -* getPeerName: TCP.SocketImpl-socket operations. -* getSelection: BLOX.BText-accessing. -* getSockName: TCP.AbstractSocketImpl-socket operations. -* getThrough_: TCP.Datagram-accessing. -* gnu: BLOX.BImage class-GNU. -* gotoLine_end_: BLOX.BText-position & lines. -* grayOut: BLOX.BCanvasObject-accessing. -* green <1>: BLOX.BTextAttributes-colors. -* green: BLOX.BTextAttributes class-instance-creation shortcuts. -* hash: TCP.SocketAddress-accessing. -* hasSelection: BLOX.BEdit-widget protocol. -* height <1>: BLOX.BWindow-widget protocol. -* height: BLOX.BWidget-geometry management. -* height_ <1>: BLOX.BWindow-widget protocol. -* height_: BLOX.BWidget-geometry management. -* heightAbsolute <1>: BLOX.BWindow-widget protocol. -* heightAbsolute: BLOX.BWidget-geometry management. -* heightChild_ <1>: BLOX.BWidget-geometry management. -* heightChild_ <2>: BLOX.BText-geometry management. -* heightChild_ <3>: BLOX.BPopupWindow-geometry management. -* heightChild_: BLOX.BCanvas-geometry management. -* heightOffset: BLOX.BWidget-geometry management. -* heightOffset_ <1>: BLOX.BWindow-widget protocol. -* heightOffset_: BLOX.BWidget-geometry management. -* heightPixels_: BLOX.BWidget-geometry management. -* highlight_: BLOX.BList-widget protocol. -* highlightBackground <1>: BLOX.BList-accessing. -* highlightBackground: BLOX.BDropDown-accessing. -* highlightBackground_ <1>: BLOX.BList-accessing. -* highlightBackground_ <2>: BLOX.BDropDownList-accessing. -* highlightBackground_ <3>: BLOX.BDropDownEdit-accessing. -* highlightBackground_: BLOX.BDropDown-accessing. -* highlightForeground <1>: BLOX.BList-accessing. -* highlightForeground: BLOX.BDropDown-accessing. -* highlightForeground_ <1>: BLOX.BList-accessing. -* highlightForeground_ <2>: BLOX.BDropDownList-accessing. -* highlightForeground_ <3>: BLOX.BDropDownEdit-accessing. -* highlightForeground_: BLOX.BDropDown-accessing. -* horizontal: BLOX.BViewport-scrollbars. -* horizontal_: BLOX.BViewport-scrollbars. -* horizontalNeeded: BLOX.BViewport-scrollbars. -* horizontalShown: BLOX.BViewport-scrollbars. -* host: TCP.IPAddress-accessing. -* iconify: BLOX.BWindow-widget protocol. -* id: I18N.LocaleData-accessing. -* id_: I18N.LocaleData-initialization. -* id_on_: I18N.LcMessagesDomain class-opening MO files. -* image_: BLOX.BImage-image management. -* imageHeight: BLOX.BImage-image management. -* imageWidth: BLOX.BImage-image management. -* index <1>: BLOX.BList-accessing. -* index: BLOX.BDropDownList-list box accessing. -* index_: BLOX.BDropDown-list box accessing. -* indexAt_ <1>: BLOX.BText-position & lines. -* indexAt_: BLOX.BList-accessing. -* info: BLOX.BImage class-icons. -* initialize <1>: I18N.RunTimeExpression class-initializing. -* initialize <2>: I18N.LocaleData class-database. -* initialize <3>: I18N.LcMessagesMoFileVersion0 class-plurals. -* initialize <4>: I18N.Encoders.ToUTF7 class-initialization. -* initialize <5>: I18N.Encoders.FromUTF7 class-initialization. -* initialize <6>: I18N.EncodedStream class-initializing. -* initialize <7>: TCP.Socket class-well known ports. -* initialize <8>: TCP.IPAddress class-initialization. -* initialize <9>: TCP.DatagramSocket class-initialization. -* initialize: BLOX.BLabel class-initialization. -* initialize_ <1>: I18N.LocaleData-initialization. -* initialize_ <2>: BLOX.BWidget-customization. -* initialize_ <3>: BLOX.BEventSet-initializing. -* initialize_: BLOX.BBalloon-initializing. -* insertAtEnd_ <1>: BLOX.BText-inserting text. -* insertAtEnd_ <2>: BLOX.BEdit-widget protocol. -* insertAtEnd_: BLOX.BDropDownEdit-text accessing. -* insertAtEnd_attribute_: BLOX.BText-attributes. -* insertImage_: BLOX.BText-images. -* insertImage_at_: BLOX.BText-images. -* insertImageAtEnd_: BLOX.BText-images. -* insertSelectedText_: BLOX.BText-inserting text. -* insertText_ <1>: BLOX.BText-inserting text. -* insertText_: BLOX.BEdit-widget protocol. -* insertText_at_: BLOX.BText-inserting text. -* insertText_attribute_: BLOX.BText-attributes. -* insertTextSelection_: BLOX.BText-inserting text. -* inset_: BLOX.BWidget-geometry management. -* interface: TCP.MulticastSocket-instance creation. -* interface_: TCP.MulticastSocket-instance creation. -* invokeCallback <1>: BLOX.BWindow-accessing. -* invokeCallback <2>: BLOX.BToggle-accessing. -* invokeCallback <3>: BLOX.BText-inserting text. -* invokeCallback <4>: BLOX.BMenuObject-callback. -* invokeCallback <5>: BLOX.BList-widget protocol. -* invokeCallback <6>: BLOX.BEdit-widget protocol. -* invokeCallback <7>: BLOX.BDropDownList-callbacks. -* invokeCallback <8>: BLOX.BDropDown-callbacks. -* invokeCallback <9>: BLOX.BCheckMenuItem-accessing. -* invokeCallback <10>: BLOX.BButtonLike-accessing. -* invokeCallback: BLOX.BButton-accessing. -* invokeCallback_: BLOX.BDialog-widget protocol. -* ipMulticastIf <1>: TCP.UDPSocketImpl-multicasting. -* ipMulticastIf: TCP.MulticastSocketImpl-multicasting. -* ipMulticastIf_ <1>: TCP.UDPSocketImpl-multicasting. -* ipMulticastIf_: TCP.MulticastSocketImpl-multicasting. -* isActive: BLOX.BWidget-widget protocol. -* isCentered: BLOX.BTextAttributes-setting attributes. -* isDigitAddress_: TCP.SocketAddress class-accessing. -* isDropdownVisible: BLOX.BDropDown-widget protocol. -* isEmpty: TCP.ReadBuffer-buffer handling. -* isExternalStream: TCP.AbstractSocket-testing. -* isFull: TCP.ReadBuffer-buffer handling. -* isMapped: BLOX.BWindow-widget protocol. -* isMulticast: TCP.IPAddress-accessing. -* isOpen: TCP.AbstractSocket-accessing. -* isPeerAlive: TCP.Socket-stream protocol. -* isPosixLocale: I18N.LocaleData-accessing. -* isSelected_: BLOX.BList-accessing. -* isStruckout: BLOX.BTextAttributes-setting attributes. -* isUnderlined: BLOX.BTextAttributes-setting attributes. -* isWindow <1>: BLOX.BWindow-widget protocol. -* isWindow: BLOX.Blox-widget protocol. -* itemHeight: BLOX.BDropDown-flexibility. -* items: BLOX.BCanvas-widget protocol. -* join: BLOX.BPolyline-accessing. -* join_ <1>: TCP.UDPSocketImpl-multicasting. -* join_ <2>: TCP.MulticastSocketImpl-multicasting. -* join_ <3>: TCP.MulticastSocket-instance creation. -* join_: BLOX.BPolyline-accessing. -* justify: BLOX.BEmbeddedText-accessing. -* justify_: BLOX.BEmbeddedText-accessing. -* label <1>: BLOX.BWindow-accessing. -* label <2>: BLOX.BMenuItem-accessing. -* label <3>: BLOX.BMenu-accessing. -* label <4>: BLOX.BLabel-accessing. -* label: BLOX.BButton-accessing. -* label_ <1>: BLOX.BWindow-accessing. -* label_ <2>: BLOX.BMenuItem-accessing. -* label_ <3>: BLOX.BMenu-accessing. -* label_ <4>: BLOX.BLabel-accessing. -* label_: BLOX.BButton-accessing. -* labelAt_ <1>: BLOX.BList-accessing. -* labelAt_: BLOX.BDropDown-list box accessing. -* labels: BLOX.BList-accessing. -* labelsDo_ <1>: BLOX.BList-accessing. -* labelsDo_: BLOX.BDropDown-list box accessing. -* language: I18N.LocaleData-accessing. -* language_: I18N.LocaleData class-accessing. -* language_territory_: I18N.LocaleData class-accessing. -* language_territory_charset_: I18N.LocaleData class-accessing. -* languageDirectory <1>: I18N.LocaleData-accessing. -* languageDirectory: I18N.LcMessages-accessing. -* languageDirectory_ <1>: I18N.LocaleData-accessing. -* languageDirectory_: I18N.LcMessages-accessing. -* languages: I18N.LocaleData class-database. -* leave_ <1>: TCP.UDPSocketImpl-multicasting. -* leave_ <2>: TCP.MulticastSocketImpl-multicasting. -* leave_: TCP.MulticastSocket-instance creation. -* left_top_right_bottom_: BLOX.BWidget-geometry management. -* leftArrow: BLOX.BImage class-arrows. -* lhs: I18N.RTEBinaryNode-compiling. -* lhs_op_rhs_ <1>: I18N.RTEBinaryNode-computing. -* lhs_op_rhs_: I18N.RTEBinaryNode class-compiling. -* lineAt_: BLOX.BText-position & lines. -* lineFrom_extent_color_: BLOX.BImage-image management. -* lineFrom_to_color_: BLOX.BImage-image management. -* lineFrom_toX_color_: BLOX.BImage-image management. -* lineFrom_toY_color_: BLOX.BImage-image management. -* lineInside_color_: BLOX.BImage-image management. -* listCallback: BLOX.BDropDown-flexibility. -* listen_: TCP.AbstractSocketImpl-socket operations. -* listSelectAt_: BLOX.BDropDown-flexibility. -* listText: BLOX.BDropDown-flexibility. -* local_port_: TCP.DatagramSocket class-instance creation. -* localAddress <1>: TCP.AbstractSocketImpl-accessing. -* localAddress: TCP.AbstractSocket-accessing. -* localHostName: TCP.SocketAddress class-accessing. -* localPort <1>: TCP.AbstractSocketImpl-accessing. -* localPort: TCP.AbstractSocket-accessing. -* loop: BLOX.BDialog-widget protocol. -* loopbackHost: TCP.SocketAddress class-accessing. -* loopbackTest: TCP.Socket class-tests. -* loopbackTest_: TCP.Socket class-tests. -* lower: BLOX.BCanvasObject-widget protocol. -* magenta <1>: BLOX.BTextAttributes-colors. -* magenta: BLOX.BTextAttributes class-instance-creation shortcuts. -* make_: BLOX.Blox-creating children. -* make_on_: BLOX.Blox-creating children. -* makeChild_on_: BLOX.Blox-creating children. -* map <1>: BLOX.BWindow-widget protocol. -* map: BLOX.BTransientWindow-widget protocol. -* mapPoint_: BLOX.BCanvas-widget protocol. -* menu_: BLOX.BWindow-accessing. -* messages: I18N.Locale-subobjects. -* microTest: TCP.Socket class-tests. -* modalMap: BLOX.BWindow-widget protocol. -* mode: BLOX.BList-accessing. -* mode_: BLOX.BList-accessing. -* monetary: I18N.Locale-subobjects. -* monetaryIso: I18N.Locale-subobjects. -* mousePointer: BLOX.Blox class-utility. -* moveBy_: BLOX.BBoundingBox-accessing. -* n_: I18N.RTELiteralNode-computing. -* name: TCP.SocketAddress-accessing. -* network: TCP.IPAddress-accessing. -* new <1>: I18N.LocaleData class-accessing. -* new <2>: TCP.IPAddress class-instance creation. -* new <3>: TCP.DatagramSocket class-instance creation. -* new <4>: TCP.AbstractSocketImpl class-socket creation. -* new <5>: TCP.AbstractSocket class-instance creation. -* new <6>: BLOX.BWindow class-instance creation. -* new <7>: BLOX.BWidget class-popups. -* new <8>: BLOX.BTransientWindow class-instance creation. -* new <9>: BLOX.BTextBindings class-instance creation. -* new <10>: BLOX.Blox class-instance creation. -* new <11>: BLOX.BEventSet class-initializing. -* new: BLOX.BCanvasObject class-instance creation. -* new_ <1>: TCP.AbstractSocket class-instance creation. -* new_ <2>: BLOX.BWindow class-instance creation. -* new_ <3>: BLOX.BTransientWindow class-instance creation. -* new_ <4>: BLOX.BMenuItem class-instance creation. -* new_ <5>: BLOX.Blox class-instance creation. -* new_ <6>: BLOX.BEventSet class-initializing. -* new_ <7>: BLOX.BDialog class-instance creation. -* new_ <8>: BLOX.BCheckMenuItem class-instance creation. -* new_: BLOX.BCanvasObject class-instance creation. -* new_contents_: BLOX.BEdit class-instance creation. -* new_data_: BLOX.BImage class-instance creation. -* new_image_: BLOX.BImage class-instance creation. -* new_in_: BLOX.BTransientWindow class-instance creation. -* new_label_ <1>: BLOX.BMenuItem class-instance creation. -* new_label_ <2>: BLOX.BMenu class-instance creation. -* new_label_ <3>: BLOX.BLabel class-instance creation. -* new_label_ <4>: BLOX.BDialog class-instance creation. -* new_label_: BLOX.BButton class-instance creation. -* new_label_prompt_: BLOX.BDialog class-instance creation. -* new_size_: BLOX.BImage class-instance creation. -* newPrimitive: BLOX.BExtended-customization. -* newRawSocket: TCP.SocketAddress class-initialization. -* newReadOnly_: BLOX.BText class-instance creation. -* next <1>: I18N.Encoders.ToUTF7-conversion. -* next <2>: I18N.Encoders.SplitUCS4LE-stream operation. -* next <3>: I18N.Encoders.SplitUCS4BE-stream operation. -* next <4>: I18N.Encoders.Iconv-stream operation. -* next <5>: I18N.Encoders.FromUTF7-converting. -* next <6>: I18N.Encoders.ComposeUCS4LE-stream operation. -* next <7>: I18N.Encoders.ComposeUCS4BE-stream operation. -* next <8>: I18N.Encoder-stream operations. -* next <9>: TCP.Socket-stream protocol. -* next <10>: TCP.DatagramSocketImpl-socket operations. -* next <11>: TCP.DatagramSocket-accessing. -* next: TCP.AbstractSocket-stream protocol. -* next_: TCP.Socket-stream protocol. -* nextFrom_port_: TCP.DatagramSocket-direct operations. -* nextHunk: TCP.Socket-stream protocol. -* nextInput: I18N.Encoder-stream operations. -* nextPut_ <1>: TCP.Socket-stream protocol. -* nextPut_ <2>: TCP.DatagramSocketImpl-socket operations. -* nextPut_ <3>: TCP.DatagramSocket-accessing. -* nextPut_ <4>: TCP.AbstractSocket-stream protocol. -* nextPut_ <5>: BLOX.BText-inserting text. -* nextPut_: BLOX.BEdit-widget protocol. -* nextPut_timeToLive_: TCP.MulticastSocket-instance creation. -* nextPutAll_ <1>: TCP.Socket-stream protocol. -* nextPutAll_ <2>: BLOX.BText-inserting text. -* nextPutAll_: BLOX.BEdit-widget protocol. -* nl <1>: BLOX.BText-inserting text. -* nl: BLOX.BEdit-widget protocol. -* notEmpty: TCP.ReadBuffer-buffer handling. -* numberOfLines: BLOX.BText-position & lines. -* numberOfStrings <1>: BLOX.BList-accessing. -* numberOfStrings: BLOX.BDropDown-list box accessing. -* numeric: I18N.Locale-subobjects. -* object_address_port_: TCP.Datagram class-instance creation. -* object_objectDumper_address_port_: TCP.Datagram class-instance creation. -* on_ <1>: I18N.RunTimeExpression class-instance creation. -* on_: TCP.ReadBuffer class-instance creation. -* on_from_: I18N.EncodedStream class-instance creation. -* on_from_to_ <1>: I18N.Encoder class-instance creation. -* on_from_to_: I18N.EncodedStream class-instance creation. -* on_to_: I18N.EncodedStream class-instance creation. -* onAsciiKeyEventSend_to_: BLOX.BEventTarget-intercepting events. -* onDestroySend_to_: BLOX.BEventTarget-intercepting events. -* onFocusEnterEventSend_to_: BLOX.BEventTarget-intercepting events. -* onFocusLeaveEventSend_to_: BLOX.BEventTarget-intercepting events. -* onKeyEvent_send_to_: BLOX.BEventTarget-intercepting events. -* onKeyEventSend_to_: BLOX.BEventTarget-intercepting events. -* onKeyUpEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseDoubleEvent_send_to_: BLOX.BEventTarget-intercepting events. -* onMouseDoubleEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseDownEvent_send_to_: BLOX.BEventTarget-intercepting events. -* onMouseDownEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseEnterEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseLeaveEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseMoveEvent_send_to_: BLOX.BEventTarget-intercepting events. -* onMouseMoveEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseTripleEvent_send_to_: BLOX.BEventTarget-intercepting events. -* onMouseTripleEventSend_to_: BLOX.BEventTarget-intercepting events. -* onMouseUpEvent_send_to_: BLOX.BEventTarget-intercepting events. -* onMouseUpEventSend_to_: BLOX.BEventTarget-intercepting events. -* onResizeSend_to_: BLOX.BEventTarget-intercepting events. -* op: I18N.RTEBinaryNode-compiling. -* optionAt_level_put_: TCP.AbstractSocketImpl-socket options. -* optionAt_level_size_: TCP.AbstractSocketImpl-socket options. -* origin: BLOX.BBoundingBox-accessing. -* origin_: BLOX.BBoundingBox-accessing. -* origin_corner_: BLOX.BBoundingBox-accessing. -* origin_extent_: BLOX.BBoundingBox-accessing. -* outlineColor <1>: BLOX.BRectangle-accessing. -* outlineColor: BLOX.BPolyline-accessing. -* outlineColor_ <1>: BLOX.BRectangle-accessing. -* outlineColor_: BLOX.BPolyline-accessing. -* outOfBand: TCP.Socket-out-of-band data. -* outOfBandImplClass <1>: TCP.TCPSocketImpl-implementation. -* outOfBandImplClass: TCP.SocketImpl-abstract. -* parent: BLOX.Blox-widget protocol. -* parseExpression_: I18N.RunTimeExpression class-compiling. -* parseFrom_: I18N.RTELiteralNode class-initializing. -* parseOperand_: I18N.RunTimeExpression class-compiling. -* parseOperator_: I18N.RunTimeExpression class-compiling. -* pastEnd: TCP.ReadBuffer-buffer handling. -* peek <1>: TCP.Socket-stream protocol. -* peek <2>: TCP.DatagramSocketImpl-socket operations. -* peek: TCP.DatagramSocket-accessing. -* peek_ <1>: TCP.DatagramSocketImpl-socket operations. -* peek_: TCP.DatagramSocket-accessing. -* peekFor_: TCP.Socket-stream protocol. -* platform: BLOX.Blox class-utility. -* pluralExpressionFor_ifAbsent_: I18N.LcMessagesMoFileVersion0 class-plurals. -* points: BLOX.BPolyline-accessing. -* points_: BLOX.BPolyline-accessing. -* popup: BLOX.BPopupMenu-widget protocol. -* popup_ <1>: BLOX.BWindow class-instance creation. -* popup_: BLOX.BWidget class-popups. -* port <1>: TCP.Socket-accessing. -* port <2>: TCP.ServerSocket-accessing. -* port <3>: TCP.DatagramSocket-accessing. -* port <4>: TCP.Datagram-accessing. -* port: TCP.AbstractSocket-accessing. -* port_ <1>: TCP.ServerSocket class-instance creation. -* port_ <2>: TCP.DatagramSocket class-instance creation. -* port_: TCP.Datagram-accessing. -* port_bindTo_: TCP.ServerSocket class-instance creation. -* port_queueSize_: TCP.ServerSocket class-instance creation. -* port_queueSize_bindTo_ <1>: TCP.ServerSocket-initializing. -* port_queueSize_bindTo_: TCP.ServerSocket class-instance creation. -* portCmdServer: TCP.Socket class-well known ports. -* portDayTime: TCP.Socket class-well known ports. -* portDiscard: TCP.Socket class-well known ports. -* portDNS: TCP.Socket class-well known ports. -* portEcho: TCP.Socket class-well known ports. -* portExecServer: TCP.Socket class-well known ports. -* portFinger: TCP.Socket class-well known ports. -* portFTP: TCP.Socket class-well known ports. -* portGopher: TCP.Socket class-well known ports. -* portHTTP: TCP.Socket class-well known ports. -* portLoginServer: TCP.Socket class-well known ports. -* portNetStat: TCP.Socket class-well known ports. -* portNNTP: TCP.Socket class-well known ports. -* portPOP3: TCP.Socket class-well known ports. -* portReserved: TCP.Socket class-well known ports. -* portSMTP: TCP.Socket class-well known ports. -* portSSH: TCP.Socket class-well known ports. -* portSystat: TCP.Socket class-well known ports. -* portTelnet: TCP.Socket class-well known ports. -* portTimeServer: TCP.Socket class-well known ports. -* portWhois: TCP.Socket class-well known ports. -* pos_: BLOX.BWidget-geometry management. -* posHoriz_: BLOX.BWidget-geometry management. -* posix <1>: I18N.LocaleData class-accessing. -* posix <2>: I18N.LocaleConventions class-accessing. -* posix: I18N.Locale class-instance creation. -* posVert_: BLOX.BWidget-geometry management. -* pressed <1>: BLOX.BColorButton-accessing. -* pressed: BLOX.BButtonLike-accessing. -* primAccept_: TCP.ServerSocket-accessing. -* primary_secondary_: I18N.LcMessagesTerritoryDomain class-instance creation. -* primJoinLeave_option_: TCP.UDPSocketImpl-multicasting. -* print_on_ <1>: I18N.LcTime-printing. -* print_on_ <2>: I18N.LcPrintFormats-printing. -* print_on_ <3>: I18N.LcNumeric-printing. -* print_on_: I18N.LcMonetary-printing. -* print_on_currency_parentheses_: I18N.LcMonetary-printing. -* print_on_ifFull_ifDate_ifTime_: I18N.LcTime-printing. -* print_time_format_on_: I18N.LcTime-printing. -* printOn_ <1>: I18N.RTEParameterNode-computing. -* printOn_ <2>: I18N.RTENegationNode-computing. -* printOn_ <3>: I18N.RTELiteralNode-computing. -* printOn_ <4>: I18N.RTEBinaryNode-computing. -* printOn_ <5>: I18N.RTEAlternativeNode-computing. -* printOn_ <6>: TCP.Socket-printing. -* printOn_ <7>: TCP.IPAddress-printing. -* printOn_: TCP.AbstractSocket-printing. -* printString_: I18N.LcPrintFormats-printing. -* producerConsumerTest: TCP.Socket class-tests. -* protocol: TCP.AbstractSocketImpl class-abstract. -* question: BLOX.BImage class-icons. -* queueSize_: TCP.ServerSocket class-instance creation. -* queueSize_bindTo_: TCP.ServerSocket class-instance creation. -* raise: BLOX.BCanvasObject-widget protocol. -* readBufferSize: TCP.Socket class-accessing. -* readBufferSize_ <1>: TCP.Socket-stream protocol. -* readBufferSize_: TCP.Socket class-accessing. -* receive_ <1>: TCP.DatagramSocketImpl-socket operations. -* receive_: TCP.DatagramSocket-accessing. -* receive_datagram_: TCP.DatagramSocketImpl-socket operations. -* red <1>: BLOX.BTextAttributes-colors. -* red: BLOX.BTextAttributes class-instance-creation shortcuts. -* redraw <1>: BLOX.BEmbeddedText-accessing. -* redraw <2>: BLOX.BEmbeddedImage-accessing. -* redraw: BLOX.BCanvasObject-widget protocol. -* refuseTabs: BLOX.BText-inserting text. -* registerEncoderFor_toUCS4_fromUCS4_: I18N.EncodedStream class-initializing. -* registerImage_: BLOX.BText-images. -* release: BLOX.Blox-basic. -* remote_port_: TCP.Socket class-instance creation. -* remote_port_local_port_ <1>: TCP.Socket class-instance creation. -* remote_port_local_port_: TCP.DatagramSocket class-instance creation. -* remoteAddress <1>: TCP.AbstractSocketImpl-accessing. -* remoteAddress: TCP.AbstractSocket-accessing. -* remotePort <1>: TCP.AbstractSocketImpl-accessing. -* remotePort: TCP.AbstractSocket-accessing. -* remove: BLOX.BCanvasObject-widget protocol. -* remove_: BLOX.BMenuBar-accessing. -* removeAtIndex_ <1>: BLOX.BList-accessing. -* removeAtIndex_: BLOX.BDropDown-list box accessing. -* removeAttributes: BLOX.BText-attributes. -* removeAttributesFrom_to_: BLOX.BText-attributes. -* replaceSelection_ <1>: BLOX.BText-inserting text. -* replaceSelection_ <2>: BLOX.BEdit-widget protocol. -* replaceSelection_: BLOX.BDropDownEdit-text accessing. -* resizable: BLOX.BWindow-accessing. -* resizable_: BLOX.BWindow-accessing. -* rhs: I18N.RTEBinaryNode-compiling. -* rightArrow: BLOX.BImage class-arrows. -* rootDirectory: I18N.Locale class-initialization. -* rootDirectory_: I18N.Locale class-initialization. -* screenOrigin: BLOX.Blox class-utility. -* screenResolution: BLOX.Blox class-utility. -* screenSize: BLOX.Blox class-utility. -* searchString_: BLOX.BText-inserting text. -* select_: BLOX.BList-widget protocol. -* selectAll <1>: BLOX.BEdit-widget protocol. -* selectAll: BLOX.BDropDownEdit-text accessing. -* selectBackground <1>: BLOX.BText-accessing. -* selectBackground: BLOX.BEdit-accessing. -* selectBackground_ <1>: BLOX.BText-accessing. -* selectBackground_: BLOX.BEdit-accessing. -* selectForeground <1>: BLOX.BText-accessing. -* selectForeground: BLOX.BEdit-accessing. -* selectForeground_ <1>: BLOX.BText-accessing. -* selectForeground_: BLOX.BEdit-accessing. -* selectFrom_to_ <1>: BLOX.BText-position & lines. -* selectFrom_to_ <2>: BLOX.BEdit-widget protocol. -* selectFrom_to_: BLOX.BDropDownEdit-text accessing. -* selection <1>: BLOX.BEdit-widget protocol. -* selection: BLOX.BDropDownEdit-text accessing. -* selectionRange <1>: BLOX.BEdit-widget protocol. -* selectionRange: BLOX.BDropDownEdit-text accessing. -* selector <1>: I18N.LocaleConventions class-accessing. -* selector <2>: I18N.LcTime class-accessing. -* selector <3>: I18N.LcNumeric class-accessing. -* selector <4>: I18N.LcMonetaryISO class-accessing. -* selector <5>: I18N.LcMonetary class-accessing. -* selector: I18N.LcMessages class-accessing. -* send_ <1>: I18N.RunTimeExpression-computing. -* send_ <2>: I18N.RTEParameterNode-computing. -* send_ <3>: I18N.RTENegationNode-computing. -* send_ <4>: I18N.RTELiteralNode-computing. -* send_ <5>: I18N.RTEBinaryNode-computing. -* send_: I18N.RTEAlternativeNode-computing. -* send_to_port_: TCP.DatagramSocketImpl-socket operations. -* sendTest: TCP.Socket class-tests. -* sendTest_: TCP.Socket class-tests. -* sendToBack: BLOX.BWidget-widget protocol. -* setAttributes_from_to_: BLOX.BText-attributes. -* setInitialSize: BLOX.BWidget-customization. -* setToEnd: BLOX.BText-position & lines. -* setVerticalLayout_: BLOX.BContainer-accessing. -* shallowCopy <1>: BLOX.Blox-basic. -* shallowCopy: BLOX.BCanvasObject-accessing. -* shouldCache <1>: I18N.LcMessagesMoFileVersion0-flushing the cache. -* shouldCache: I18N.LcMessagesDomain-handling the cache. -* show: BLOX.BCanvasObject-widget protocol. -* show_: BLOX.BList-widget protocol. -* shown <1>: BLOX.BBalloon-accessing. -* shown: BLOX.BBalloon class-accessing. -* size <1>: BLOX.BList-accessing. -* size: BLOX.BDropDown-list box accessing. -* smoothness: BLOX.BSpline-accessing. -* smoothness_: BLOX.BSpline-accessing. -* socketType <1>: TCP.SocketImpl class-parameters. -* socketType <2>: TCP.RawSocketImpl class-parameters. -* socketType <3>: TCP.DatagramSocketImpl class-parameters. -* socketType: TCP.AbstractSocketImpl class-abstract. -* soError: TCP.AbstractSocketImpl-socket options. -* soLinger <1>: TCP.AbstractSocketImpl-socket options. -* soLinger: TCP.AbstractSocket-socket options. -* soLinger_ <1>: TCP.AbstractSocketImpl-socket options. -* soLinger_: TCP.AbstractSocket-socket options. -* soLingerOff: TCP.AbstractSocket-socket options. -* soReuseAddr: TCP.AbstractSocketImpl-socket options. -* soReuseAddr_: TCP.AbstractSocketImpl-socket options. -* space <1>: BLOX.BText-inserting text. -* space: BLOX.BEdit-widget protocol. -* species <1>: I18N.Encoders.ToUCS4-stream operation. -* species <2>: I18N.Encoders.Iconv-stream operation. -* species <3>: I18N.Encoders.FromUCS4-stream operation. -* species <4>: I18N.Encoder-stream operations. -* species: TCP.AbstractSocket-socket options. -* startAngle: BLOX.BArc-accessing. -* startAngle_: BLOX.BArc-accessing. -* state <1>: BLOX.BWindow-widget protocol. -* state: BLOX.Blox-accessing. -* state_ <1>: BLOX.BWindow-widget protocol. -* state_: BLOX.Blox-accessing. -* stop: BLOX.BImage class-icons. -* stretch_: BLOX.BWidget-geometry management. -* strikeout <1>: BLOX.BTextAttributes-setting attributes. -* strikeout: BLOX.BTextAttributes class-instance-creation shortcuts. -* subnet: TCP.IPAddress-accessing. -* sweepAngle: BLOX.BArc-accessing. -* sweepAngle_: BLOX.BArc-accessing. -* tabStop: BLOX.BWidget-accessing. -* tabStop_: BLOX.BWidget-accessing. -* terminateMainLoop: BLOX.Blox class-event dispatching. -* territories: I18N.LocaleData class-database. -* territory: I18N.LocaleData-accessing. -* territoryDirectory <1>: I18N.LocaleData-accessing. -* territoryDirectory: I18N.LcMessages-accessing. -* territoryDirectory_ <1>: I18N.LocaleData-accessing. -* territoryDirectory_: I18N.LcMessages-accessing. -* text <1>: BLOX.BEmbeddedText-accessing. -* text <2>: BLOX.BDropDownList-accessing. -* text <3>: BLOX.BDropDownEdit-accessing-overrides. -* text <4>: BLOX.BDropDown-flexibility. -* text: BLOX.BBalloon-accessing. -* text_ <1>: BLOX.BEmbeddedText-accessing. -* text_ <2>: BLOX.BDropDownEdit-text accessing. -* text_ <3>: BLOX.BDropDown-flexibility. -* text_: BLOX.BBalloon-accessing. -* time: I18N.Locale-subobjects. -* timeout: TCP.AbstractSocket class-timed-out operations. -* timeout_: TCP.AbstractSocket class-timed-out operations. -* timeToLive <1>: TCP.UDPSocketImpl-multicasting. -* timeToLive <2>: TCP.MulticastSocketImpl-multicasting. -* timeToLive: TCP.MulticastSocket-instance creation. -* timeToLive_ <1>: TCP.UDPSocketImpl-multicasting. -* timeToLive_ <2>: TCP.MulticastSocketImpl-multicasting. -* timeToLive_: TCP.MulticastSocket-instance creation. -* to: BLOX.BArc-accessing. -* to_: BLOX.BArc-accessing. -* toggle: BLOX.BDropDown-widget protocol. -* toplevel: BLOX.Blox-widget protocol. -* translatorInformation: I18N.LcMessagesDomain-querying. -* translatorInformationAt_: I18N.LcMessagesDomain-querying. -* translatorInformationAt_at_: I18N.LcMessagesDomain-querying. -* tweakedLoopbackTest: TCP.Socket class-tests. -* udpLoopbackTest: TCP.Socket class-tests. -* underline <1>: BLOX.BTextAttributes-setting attributes. -* underline: BLOX.BTextAttributes class-instance-creation shortcuts. -* unhighlight: BLOX.BList-widget protocol. -* unknownAddress: TCP.SocketAddress class-accessing. -* unmap: BLOX.BWindow-widget protocol. -* unmapList: BLOX.BDropDown-widget protocol. -* unselect_: BLOX.BList-widget protocol. -* upArrow: BLOX.BImage class-arrows. -* update_ <1>: I18N.LocaleData class-accessing. -* update_ <2>: TCP.SocketAddress class-initialization. -* update_: BLOX.Blox class-event dispatching. -* value <1>: BLOX.BToggle-accessing. -* value <2>: BLOX.BRadioGroup-accessing. -* value <3>: BLOX.BRadioButton-accessing. -* value <4>: BLOX.BProgress-accessing. -* value: BLOX.BCheckMenuItem-accessing. -* value_ <1>: I18N.RunTimeExpression-computing. -* value_ <2>: BLOX.BToggle-accessing. -* value_ <3>: BLOX.BRadioGroup-accessing. -* value_ <4>: BLOX.BRadioButton-accessing. -* value_ <5>: BLOX.BProgress-accessing. -* value_: BLOX.BCheckMenuItem-accessing. -* variable_: BLOX.BToggle-accessing. -* version: TCP.IPAddress class-constants. -* vertical: BLOX.BViewport-scrollbars. -* vertical_: BLOX.BViewport-scrollbars. -* verticalNeeded: BLOX.BViewport-scrollbars. -* verticalShown: BLOX.BViewport-scrollbars. -* waitForConnection: TCP.ServerSocket-accessing. -* waitForException: TCP.AbstractSocketImpl-asynchronous operations. -* white <1>: BLOX.BTextAttributes-colors. -* white: BLOX.BTextAttributes class-instance-creation shortcuts. -* widget: BLOX.BEventSet-accessing. -* width <1>: BLOX.BWindow-widget protocol. -* width <2>: BLOX.BWidget-geometry management. -* width <3>: BLOX.BRectangle-accessing. -* width <4>: BLOX.BPolyline-accessing. -* width: BLOX.BLine-accessing. -* width_ <1>: BLOX.BWindow-widget protocol. -* width_ <2>: BLOX.BWidget-geometry management. -* width_ <3>: BLOX.BRectangle-accessing. -* width_ <4>: BLOX.BPolyline-accessing. -* width_: BLOX.BLine-accessing. -* width_height_ <1>: BLOX.BWindow-widget protocol. -* width_height_: BLOX.BWidget-geometry management. -* widthAbsolute <1>: BLOX.BWindow-widget protocol. -* widthAbsolute: BLOX.BWidget-geometry management. -* widthChild_ <1>: BLOX.BWidget-geometry management. -* widthChild_ <2>: BLOX.BText-geometry management. -* widthChild_ <3>: BLOX.BPopupWindow-geometry management. -* widthChild_: BLOX.BCanvas-geometry management. -* widthOffset: BLOX.BWidget-geometry management. -* widthOffset_ <1>: BLOX.BWindow-widget protocol. -* widthOffset_: BLOX.BWidget-geometry management. -* widthPixels_: BLOX.BWidget-geometry management. -* window <1>: BLOX.BWindow-widget protocol. -* window: BLOX.Blox-widget protocol. -* with_with_with_with_: TCP.IPAddress class-instance creation. -* withChildrenDo_: BLOX.Blox-widget protocol. -* withFileDo_: I18N.FileStreamSegment-basic. -* wrap: BLOX.BText-accessing. -* wrap_: BLOX.BText-accessing. -* writeBufferSize: TCP.Socket class-accessing. -* writeBufferSize_ <1>: TCP.Socket-stream protocol. -* writeBufferSize_: TCP.Socket class-accessing. -* x <1>: BLOX.BWindow-widget protocol. -* x: BLOX.BWidget-geometry management. -* x_ <1>: BLOX.BWindow-widget protocol. -* x_: BLOX.BWidget-geometry management. -* x_y_ <1>: BLOX.BWindow-widget protocol. -* x_y_: BLOX.BWidget-geometry management. -* x_y_width_height_ <1>: BLOX.BWindow-widget protocol. -* x_y_width_height_: BLOX.BWidget-geometry management. -* xAbsolute <1>: BLOX.BWindow-widget protocol. -* xAbsolute: BLOX.BWidget-geometry management. -* xChild_ <1>: BLOX.BWidget-geometry management. -* xChild_ <2>: BLOX.BText-geometry management. -* xChild_ <3>: BLOX.BPopupWindow-geometry management. -* xChild_: BLOX.BCanvas-geometry management. -* xOffset: BLOX.BWidget-geometry management. -* xOffset_ <1>: BLOX.BWindow-widget protocol. -* xOffset_: BLOX.BWidget-geometry management. -* xPixels_: BLOX.BWidget-geometry management. -* xRoot: BLOX.BWidget-geometry management. -* y <1>: BLOX.BWindow-widget protocol. -* y: BLOX.BWidget-geometry management. -* y_ <1>: BLOX.BWindow-widget protocol. -* y_: BLOX.BWidget-geometry management. -* yAbsolute <1>: BLOX.BWindow-widget protocol. -* yAbsolute: BLOX.BWidget-geometry management. -* yChild_ <1>: BLOX.BWidget-geometry management. -* yChild_ <2>: BLOX.BText-geometry management. -* yChild_ <3>: BLOX.BPopupWindow-geometry management. -* yChild_: BLOX.BCanvas-geometry management. -* yellow <1>: BLOX.BTextAttributes-colors. -* yellow: BLOX.BTextAttributes class-instance-creation shortcuts. -* yOffset: BLOX.BWidget-geometry management. -* yOffset_ <1>: BLOX.BWindow-widget protocol. -* yOffset_: BLOX.BWidget-geometry management. -* yPixels_: BLOX.BWidget-geometry management. -* yRoot: BLOX.BWidget-geometry management. - diff -rNU3 smalltalk-2.1.6/doc/gst.1 smalltalk-2.1.7/doc/gst.1 --- smalltalk-2.1.6/doc/gst.1 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.1 2003-12-17 14:51:17.000000000 +0100 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. -.TH SMALLTALK "1" "December 2003" "Smalltalk version 2.1.6" "User Commands" +.TH SMALLTALK "1" "December 2003" "Smalltalk version 2.1.7" "User Commands" .SH NAME Smalltalk \- the GNU Smalltalk virtual machine .SH DESCRIPTION diff -rNU3 smalltalk-2.1.6/doc/gst.info smalltalk-2.1.7/doc/gst.info --- smalltalk-2.1.6/doc/gst.info 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info 2003-12-17 14:58:51.000000000 +0100 @@ -1,12 +1,12 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. +This is gst.info, produced by makeinfo version 4.6 from +/home/local/bonzini/smalltalk-2.1.6/doc/gst-fixed.texi. INFO-DIR-SECTION GNU Smalltalk START-INFO-DIR-ENTRY * GNU Smalltalk: (gst). The GNU Smalltalk environment. END-INFO-DIR-ENTRY -This file documents GNU Smalltalk Version 2.1.6. It was last updated +This file documents GNU Smalltalk Version 2.1.7. It was last updated on 16 September 2003. Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, @@ -24,163 +24,7010 @@ There are no Cover Texts and no Invariant Sections; this text, along with its equivalent in the printed manual, constitutes the Title Page.  -Indirect: -gst.info-1: 1016 -gst.info-2: 44404 -gst.info-3: 93400 -gst.info-4: 138544 -gst.info-5: 188072 -gst.info-6: 233041 -gst.info-7: 281006 +File: gst.info, Node: Top, Up: (DIR) + + + +This document describes installing and operating the GNU Smalltalk +programming language. + +This file documents GNU Smalltalk Version 2.1.7. It was last updated +on 16 September 2003. + + Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, +2002 Free Software Foundation, Inc. + + This document is released under the terms of the GNU Free +Documentation License as published by the Free Software Foundation; +either version 1.1, or (at your option) any later version. + + You should have received a copy of the GNU Free Documentation +License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, +write to the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + + There are no Cover Texts and no Invariant Sections; this text, along +with its equivalent in the printed manual, constitutes the Title Page. +* Menu: + + +* Overview:: What GNU Smalltalk is. +* Using GNU Smalltalk:: Running GNU Smalltalk. +* Features:: A description of GNU Smalltalk's special features. +* Emacs:: GNU Smalltalk and Emacs. +* C and Smalltalk:: GNU Smalltalk's C/Smalltalk interoperability features. +* Tutorial:: An introduction to Smalltalk and OOP. +* Future:: Tasks for GNU Smalltalk's subsequent releases. + Volunteers to help out in performing some of these + tasks would be greatly appreciated. + Please see this node to find out what you can do + to help make GNU Smalltalk a truly winning system. + +--- The detailed node listing --- + +Invocation: +* Invocation:: What you can specify on the command line. +* Operation:: A step-by-step description of the + startup process and a short description of + how to interact with GNU Smalltalk. +* Syntax:: A description of the input file syntax +* Test suite:: How to run the test suite system. +* Legal concerns:: Licensing of GNU Smalltalk + +Features: +* Memory access:: The direct memory accessing classes and methods. +* Namespaces:: Avoiding clashes between class names. +* Disk file-IO:: Methods for reading and writing disk files. +* Object dumping:: Methods that read and write objects in binary format. +* GC:: The GNU Smalltalk memory manager. +* Security:: Sandboxing and access control. +* Special objects:: Methods to assign particular properties to objects. +* Dynamic loading:: Picking external libraries and modules at run-time. +* Packages:: An easy way to install Smalltalk code into an image. + +Packages +* Blox:: GNU Smalltalk's user interface building blocks. +* Smalltalk-in-Smalltalk:: Beyond Smalltalk's standard reflective abilities. +* Database:: Access databases from Smalltalk programs +* Locales:: Intenationalize and localize Smalltalk programs +* SUnit: SUnit. +* Network support:: An interface to TCP/IP and UDP and support for + popular network protocols. +* XML:: An XML parser and XSL processor. +* Minor packages:: Various interesting modules. + +Emacs +* Autoloading:: Autoloading GNU Smalltalk mode. +* Editing:: Autoindent and more for GNU Smalltalk. +* Interactor:: Smalltalk interactor mode. + +C and Smalltalk: +* External modules:: Linking your libraries to the virtual machine +* C callout:: Calls from Smalltalk to C. +* C data types:: Manipulating C data from Smalltalk. +* Smalltalk types:: Manipulating Smalltalk data from C. +* Smalltalk callin:: Calls from C to Smalltalk. +* Using Smalltalk:: Using the Smalltalk environment as an extension library. +* Incubator:: Protecting newly created objects from garbage + collections. + +Tutorial: +* Getting started:: Starting to explore GNU Smalltalk +* Some classes:: Using some of the Smalltalk classes +* The hierarchy:: The Smalltalk class hierarchy +* Creating classes:: Creating a new class of objects +* Creating subclasses:: Adding subclasses to another class +* Code blocks (I):: Control structures in Smalltalk +* Code blocks (II):: Guess what? More control structures +* Debugging:: Things go bad in Smalltalk too! +* More subclassing:: Coexisting in the class hierarchy +* Streams:: Something really powerful +* Behind the scenes:: Some nice stuff from the Smalltalk innards +* And now:: Some final words +* The syntax:: For the most die-hard computer scientists + + +File: gst.info, Node: Overview, Next: Using GNU Smalltalk, Prev: Top, Up: Top + +Introduction +************ + +GNU Smalltalk is an implementation that closely follows the Smalltalk-80 +language as described in the book `Smalltalk-80: the Language and its +Implementation' by Adele Goldberg and David Robson, which will +hereinafter be referred to as `the Blue Book'. + + The Smalltalk programming language is an object oriented programming +language. This means, for one thing, that when programming you are +thinking of not only the data that an object contains, but also of the +operations available on that object. The object's data representation +capabilities and the operations available on the object are +"inseparable"; the set of things that you can do with an object is +defined precisely by the set of operations, which Smalltalk calls +"methods", that are available for that object: each object belongs to a +"class" (a datatype and the set of functions that operate on it) or, +better, it is an "instance" of that class. You cannot even examine the +contents of an object from the outside--to an outsider, the object is a +black box that has some state and some operations available, but that's +all you know: when you want to perform an operation on an object, you +can only send it a "message", and the object picks up the method that +corresponds to that message. + + In the Smalltalk language, everything is an object. This includes +not only numbers and all data structures, but even classes, methods, +pieces of code within a method ("blocks" or "closures"), stack frames +("contexts"), etc. Even `if' and `while' structures are implemented as +methods sent to particular objects. + + Unlike other Smalltalks (including Smalltalk-80), GNU Smalltalk +emphasizes Smalltalk's rapid prototyping features rather than the +graphical and easy-to-use nature of the programming environment (did +you know that the first GUIs ever ran under Smalltalk?). The +availability of a large body of system classes, once you master them, +makes it pretty easy to write complex programs which are usually a task +for the so called "scripting languages". Therefore, even though we +have a nice GUI environment including a class browser (*note Blox::), +the goal of the GNU Smalltalk project is currently to produce a +complete system to be used to write your scripts in a clear, +aesthetically pleasing, and philosophically appealing programming +language. + + An example of what can be obtained with Smalltalk in this novel way +can be found in *Note Class reference: (gst-libs)Top. That part of the +manual is entirely generated by a Smalltalk program, starting from the +source code for the class libraries distributed together with the +system. + + +File: gst.info, Node: Using GNU Smalltalk, Next: Features, Prev: Overview, Up: Top + +Using GNU Smalltalk +******************* + +* Menu: + +* Invocation:: What you can specify on the command line. +* Operation:: A step-by-step description of the + startup process and a short description of + how to interact with GNU Smalltalk. +* Syntax:: A description of the input file syntax +* Test suite:: How to run the test suite system. +* Legal concerns:: Licensing of GNU Smalltalk + + +File: gst.info, Node: Invocation, Next: Operation, Up: Using GNU Smalltalk + +Command line arguments +====================== + +GNU Smalltalk may be invoked via the following command: + gst [ flags ... ] [ file ... ] + + When you first invoke GNU Smalltalk, it will attempt to see if any +of the kernel method definition files are newer than the last saved +binary image in the current directory (if there is one). If there is a +newer kernel method definition file, or if the binary image file (called +`gst.im') does not exist, a new binary image will be built by loading +in all the kernel method definition files, performing a full garbage +collection in order to compact the space in use, and then saving the +resulting data in a position independent format. Your first invocation +should look something like this: + + "Major scavenging... done, used space = 51%" + GNU Smalltalk Ready + + st> + + If you specify , that file will be read and executed and +Smalltalk will exit when end of file is reached. If you specify more +than one file, each will be read and processed in turn. If you don't +specify , standard input is read, and if the standard input is a +terminal, a prompt is issued. You may specify `-' for the name of a +file to invoke an explicit read from standard input; furthermore, +specifying `--' stops the interpretation of options so that every +argument that follows is considered a file name even if it begins with a +minus. + + You can specify both short and long flags; for example, `--version' +is exactly the same as `-v', but is easier to remember. Short flags +may be specified one at a time, or in a group. A short flag or a group +of short flags always starts off with a single dash to indicate that +what follows is a flag or set of flags instead of a file name; a long +flag starts off with two consecutive dashes, without spaces between +them. + + In the current implementation the flags can be intermixed with file +names, but their effect is as if they were all specified first. The +various flags are interpreted as follows: + +`-a --smalltalk' + Used to make arguments available to Smalltalk code. The C option + parser discards everything after the parameter including -a, while + Smalltalk code can get it sending the `arguments' message to the + `Smalltalk' object. + + Examples: + command line Options seen by GNU Smalltalk `Smalltalk arguments' + (empty) (none) `#()' + `-Via foo bar' `-Vi' `#('foo' 'bar')' + `-Vai test' `-Vi' `#('test')' + `-Vaq' `-Vq' `#()' + `--verbose -aq -c ' `--verbose -q' `#('-c')' + + That should be clear. + +`-c --core-dump' + When this flag is set and a fatal signal occurs, a core dump is + produced after an error message is printed. Normally, the + backtrace is produced and the system terminates without dumping + core. + +`-d --user-declaration-trace' + Declaration tracing prints the class name, the method name, and + the byte codes that the compiler is generating as it compiles + methods. Only for files that are named explicitly on the command + line; kernel files that are loaded automatically as part of + rebuilding the image file do not have their declarations traced. + +`-D --kernel-declaration-trace' + Like the -d flag, but also includes declarations processed for the + kernel files. + +`-e --user-execution-trace' + Prints the byte codes being executed as the interpreter operates. + Only works for those executions that occur after the kernel files + have been loaded and the image file dumped. + +`-E --kernel-declaration-trace' + Like the -e flag, but includes all byte codes executed, whether + they occur during the loading of the kernel method definition + files, or during the loading and execution of user files. + +`-g --no-gc-messages' + Suppress garbage collection messages. + +`-h --help' + Prints out a brief summary of the command line syntax of GNU + Smalltalk, including the definitions of all of the option flags, + and then exits. + +`-i --rebuild-image' + Ignore the saved image file; always load from the kernel method + definition files. Setting this flag bypasses the normal checks for + kernel files newer than the image file, or the image file's version + stamp out of date with respect to the Smalltalk version. After the + kernel definitions have been loaded, a new image file will be + saved. + +`-I FILE --image-file FILE' + Use the image file named as the image file to load. + Completely bypasses checking the file dates on the kernel files and + standard image file. + +`-l --log-changes' + Produce a log of the compiled Smalltalk code to st-changes.st, in + the current working directory. + +`-L FILE --log-file FILE' + Produce a log of the compiled Smalltalk code to the file named + . + +`-q --quiet --silent' + Suppress the printing of returned values while GNU Smalltalk runs. + +`-Q --no-messages' + Suppress the printing of execution information and any other + informative message while GNU Smalltalk runs. + +`-r --regression-test' + Controls printing of certain informative I/O; this is used by the + regression testing system and is probably not of interest to the + general user. + +`-S --snapshot' + Save a snapshot after loading files from the command line. Of + course the snapshot is not saved if you include - (stdin) on the + command line and exit by typing Ctrl-C. + +`-v --version' + Prints out the Smalltalk version number, then exits. + +`-V --verbose' + Enables verbose mode. When verbose mode is on, various diagnostic + messages are printed (the name of each file as it's loaded, plus + messages about the beginning of execution or how many byte codes + were executed). + +`-y --yacc-debug' + Turns on parser debugging. Not typically used. + + +File: gst.info, Node: Operation, Next: Syntax, Prev: Invocation, Up: Using GNU Smalltalk + +Startup sequence +================ + +When GNU Smalltalk is invoked, the first thing it does is choosing two +paths, respectively the "image path" and the "kernel path". the image +path is set to the value of the `SMALLTALK_IMAGE' environment variable +(if it is defined); if `SMALLTALK_IMAGE' is not defined, Smalltalk will +try the path compiled in the binary (usually, under Unix systems, +`/usr/local/share/gnu-smalltalk' or a similar data file path) and then +the current directory. + + The "kernel path" directory in which to look for each of the kernel +method definition files. There are only two possibilities in this case: +the directory pointed to by `SMALLTALK_KERNEL' if it is defined, and a +subdirectory named `kernel' in the current directory. However, kernel +files are not required to be in this directory: Smalltalk also knows +about a system default location for kernel files, which is compiled in +the binary (usually, under Unix systems, +`/usr/local/share/gnu-smalltalk/kernel' or a similar data file path), +and which is used for kernel files not found in the directory chosen as +above. + + Then, if the `-i' flag is not used, Smalltalk tries to find a saved +binary image file in the image path. If this is found, it is checked to +be compatible with the current version of Smalltalk and with the current +system; Smalltalk is able to load an image created on a system with the +same `sizeof(long)' but different endianness (for example, a 68k image +on an x86), but not an image created on a system with different +`sizeof(long)' like an Alpha image on an x86. Finally, if the images +are compatible, it compares the write dates of all of the kernel method +definition files against the write date of the binary image file. + + If the image is not found, is incompatible, or older than any of the +kernel files, a new image has to be created. The set of files that make +up the kernel is loaded, one at a time. The list can be found in +`libgst/lib.c', in the `standardFiles' variable. If the image lies in +the current directory, or if at least a kernel file was found outside +of the system default path, a user-dependant `.stpre'(1) + + At this point, independent of whether the binary image file was +loaded or created, the `initialize' event is sent to the dependants of +the special class `ObjectMemory' (*note Memory access::). After the +initialization blocks have been executed, the user initialization file +`.stinit' is loaded if found in the user's home directory(2). + + Finally, if there were any files specified on the command line, they +are loaded, otherwise standard input is read and executed until an EOF +is detected. You are then able to operate GNU Smalltalk by typing in +expressions to the `st>' prompt, and/or reading in files that contain +Smalltalk code. + + At some time, you may wish to abort what GNU Smalltalk is doing and +return to the command prompt: you can use `C-c' to do this. + + ---------- Footnotes ---------- + + (1) The file is called `_stpre' under MS-DOS and `.gstpre' on the +Atari ST. Under OSes that don't use home directories it is looked for +in the current directory. + + (2) The same considerations made above hold here too. The file is +called `_stinit' under MS-DOS and `.gstinit' on the Atari ST, and is +looked for in the current directory under OSes that don't use home +directories. + + +File: gst.info, Node: Syntax, Next: Test suite, Prev: Operation, Up: Using GNU Smalltalk + +Syntax of GNU Smalltalk +======================= + +The language that GNU Smalltalk accepts is based on the "file out" +syntax as shown in the "Green Book", also known as `Smalltalk-80: Bits +of History, Words of Advice' by Glenn Krasner. The entire grammar of +GNU Smalltalk is described in the `libgst/gst.y' file, but a brief +description may be in order: + ! + +executes the given statements immediately. For example, + + 16rFFFF printNl ! + +prints out the decimal value of hex `FFFF', followed by a newline. + + Smalltalk quitPrimitive ! + +exits from the system. You can also type a `C-d' to exit from +Smalltalk if it's reading statements from standard input. + + ! methodsFor: ! + ! + ! + ... + ! ! + + This syntax is used to define new methods in a given class. The + is an expression that evaluates to a class object, +which is typically just the name of a class, although it can be the +name of a class followed by the word `class', which causes the method +definitions that follow to apply to the named class itself, rather than +to its instances. Two consecutive bangs terminate the set of method +definitions. should be a string object that describes +what category to file the methods in. + + !Float methodsFor: 'pi calculations'! + + radiusToArea + ^self squared * Float pi ! + + radiusToCircumference + ^self * 2 * Float pi ! ! + + It also bears mentioning that there are two assignment operators: +`_' and `:='. Both are usable interchangeably, provided that they are +surrounded by spaces. The GNU Smalltalk kernel code uses the `:=' form +exclusively, but `_' is supported a) for compatibility with previous +versions of GNU Smalltalk b) because this is the correct mapping +between the assignment operator mentioned in the Blue Book and the +current ASCII definition. In the ancient days (like the middle 70's), +the ASCII underscore character was also printed as a back-arrow, and +many terminals would display it that way, thus its current usage. +Anyway, using `_' may lead to portability problems. + + The return operator, which is represented in the Blue Book as an +up-arrow, is mapped to the ASCII caret symbol `^'. + + A complete treatment of the Smalltalk syntax and of the class library +can be found in the included tutorial and class reference (*note Class +Reference: (gst-libs)Top.). + + More information on the implementation of the language can be found +in the `Blue Book'; the relevant parts are also available online as +HTML documents, at +. + + +File: gst.info, Node: Test suite, Next: Legal concerns, Prev: Syntax, Up: Using GNU Smalltalk + +Running the test suite +====================== + +GNU Smalltalk comes with a set of files that provides a simple +regression test suite. + + To run the test suite, you should be connected to the top-level +Smalltalk directory. Type + make check + + You should see the names of the test suite files as they are +processed, but that's it. Any other output indicates some problem. +The only system that I know of which currently fails the test suite is +the NeXT, and this is apparently due to their non-standard C runtime +libraries. + + The test suite is by no means exhaustive. *Note Future::. + + +File: gst.info, Node: Legal concerns, Prev: Test suite, Up: Using GNU Smalltalk + +Licensing of GNU Smalltalk +========================== + +Different parts of GNU Smalltalk comes under two licenses: the virtual +machine and the development environment (compiler and browser) come +under the GNU General Public License, while the system class libraries +come under the Lesser General Public License. + + The GPL licensing of the virtual machine means that all derivatives +of the virtual machine must be put under the same license. In other +words, it is strictly forbidden to put programs that include the GNU +Smalltalk virtual machine under a proprietary license. + + This however does not extend to Smalltalk programs, since these are +merely input data for the virtual machine. In general, these must +respect the terms of the Lesser General Public License(1). The +interpretation of this license for architectures different from that of +the C language is often difficult; the accepted one for Smalltalk is as +follows. The image file can be considered as an object file, falling +under Subsection 6a of the license, as long as it allows a user to load +an image, upgrade the library or otherwise apply modifications to it, +and save a modified image: this is most conveniently obtained by +allowing the user to use the read-eval-print loop that is embedded in +the GNU Smalltalk virtual machine. + + In other words, provided that you leave access to the loop in a +documented way, or that you provide a way to file in arbitrary files in +an image and save the result to a new image, you are obeying Subsection +6a of the Lesser General Public License, which is reported here: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that + the user can modify the Library and then relink to produce a + modified executable containing the modified Library. (It is + understood that the user who changes the contents of + definitions files in the Library will not necessarily be able + to recompile the application to use the modified definitions.) + + ---------- Footnotes ---------- + + (1) Of course, they may be more constrained by usage of GPL class +libraries. + + +File: gst.info, Node: Features, Next: Emacs, Prev: Using GNU Smalltalk, Up: Top + +Features of GNU Smalltalk +************************* + +In this section, the features which are specific to GNU Smalltalk are +described. These features include support for calling C functions from +within Smalltalk, accessing environment variables, and controlling +various aspects of compilation and execution monitoring. + + Note that, in general, GNU Smalltalk is much more powerful than the +original Smalltalk-80, as it contains a lot of methods that are common +in today's Smalltalk implementation and are present in the ANSI +Standard for Smalltalk, but were absent in the Blue Book. Examples +include Collection's `allSatisfy:' and `anySatisfy:' methods and many +methods in SystemDictionary (the Smalltalk dictionary's class). + +* Menu: + +* Memory access:: The direct memory accessing classes and methods, plus + broadcasts from the virtual machine. +* Namespaces:: Avoiding clashes between class names. +* Disk file-IO:: Methods for reading and writing disk files. +* Object dumping:: Methods that read and write objects in binary format. +* GC:: The GNU Smalltalk memory manager. +* Security:: Sandboxing and access control. +* Special objects:: Methods to assign particular properties to objects. +* Dynamic loading:: Picking external libraries and modules at run-time. +* Packages:: An easy way to install Smalltalk code into an image. + + +File: gst.info, Node: Memory access, Next: Namespaces, Up: Features + +Memory accessing methods +======================== + +GNU Smalltalk provides methods to query its own internal data +structures. You may determine the real memory address of an object or +the real memory address of the OOP table that points to a given object, +by using messages to the `Memory' class, described below. + + - Method on Object: asOop + Returns the index of the OOP for anObject. This index is immume + from garbage collection and is the same value used by default as + an hash value for anObject (it is returned by Object's + implementation of `hash' and `identityHash'). + + - Method on Integer: asObject + Converts the given OOP _index_ (not address) back to an object. + Fails if no object is associated to the given index. + + - Method on Integer: asObjectNoFail + Converts the given OOP _index_ (not address) back to an object. + Returns nil if no object is associated to the given index. + + Other methods in ByteArray and Memory allow to read various C types +(`doubleAt:', `ucharAt:', etc.). For examples of using `asOop' and +`asObject', look at the Blox source code in `blox-tk/BloxBasic.st'. + + Another interesting class is ObjectMemory. This provides a few +methods that enable one to tune the virtual machine"s usage of memory; +many methods that in the past were instance methods of Smalltalk or +class methods of Memory are now class methods of ObjectMemory. In +addition, and that's what the rest of this section is about, the +virtual machines signals events to its dependants exactly through this +class. + + The events that can be received are +"returnFromSnapshot" + This is sent every time an image is restarted, and substitutes the + concept of an "init block" that was present in previous versions. + +"aboutToQuit" + This is sent just before the interpreter is exiting, either because + `ObjectMemory quit' was sent or because the specified files were + all filed in. Exiting from within this event might cause an + infinite loop, so be careful. + +"aboutToSnapshot" + This is sent just before an image file is created. Exiting from + within this event will leave any preexisting image untouched. + +"finishedSnapshot" + This is sent just after an image file is created. Exiting from + within this event will not make the image unusable. + + +File: gst.info, Node: Namespaces, Next: Disk file-IO, Prev: Memory access, Up: Features + +Namespaces +========== + +[This section (and the implementation of namespaces in GNU Smalltalk) +is based on the paper `Structured Symbolic Name Spaces in Smalltalk', +by Augustin Mrazik.] + +Introduction +------------ + +The standard Smalltalk-80 programming environment supports symbolic +identification of objects in one global namespace--in the `Smalltalk' +system dictionary. This means that each global variable in the system +has its unique name which is used for symbolic identification of the +particular object in the source code (e.g. in expressions or methods). +Most important global variables are classes defining the behavior of +objects. + + In a development dealing with modelling of real systems, polymorphic +symbolic identification is often needed. This means that it should be +possible to use the same name for different classes or other global +variables. Let us mention class Module as an example which would mean +totaly different things for a programmer, for a computer technician and +for a civil engineer or an architect. + + This issue becomes inevitable if we start to work in a Smalltalk +environment supporting persistence. Polymorphism of classes becomes +necessary in the moment we start to think about storing classes in the +database since after restoring them into the running Smalltalk image a +mismatch with the current symbolic identification of the present classes +could occur. For example you might have the class Module already in +your image with the meaning of a program module (e.g. in a CASE system) +and you might attempt to load the class Module representing a part of +the computer hardware from the database for hardware configuration +system. The last class could get bound to the #Module symbol in the +Smalltalk system dictionary and the other class could remain in the +system as unbound class with full functionality, however, it could not +be accessed anymore at the symbolical level in the source code. + + Objects which have to be identified in the source code of methods or +message sends by their names are included in Smalltalk which is a sole +instance of SystemDictionary. Such objects may be identified simply by +stating their name as primary in a Smalltalk statement. The code is +compiled in the Smalitalk environment and if such a primary is found it +is bound to the corresponding object as receiver of the rest of the +message send. In this way Smalltalk as instance of SystemDictionary +represents the sole symbolic name space in the Smalltalk system. In the +following text the symbolic name space will be called simply environment +to make the text more clear. + +Concepts +-------- + +To support polymorphic symbolical identification several environments +will be needed. The same name may be located concurrently in several +environments and point to diverse objects. + + However, symbolic navigation between these environments is needed. +Before approaching the problem of the syntax to be implemented and of +its very implementation, we have to point out which structural relations +are going to be established between environments. + + Since the environment has first to be symbolically identified to gain +access to its global variables, it has to be a global variable in +another environment. Obviously, `Smalltalk' will be the first +environment from which the navigation begins. From `Smalltalk' some of +the existing environments may be seen. From these environments other +sub-environments may be seen, etc. This means that environments +represent nodes in a graph where symbolic identifications from one +environment to another one represent branches. + + However, the symbolic identification should be unambiguous although +it will be polymorphic. This is why we should avoid cycles in the +environment graph. Cycles in the graph could cause also other problems +in the implementation, e.g. unability to use recursive algorithms. This +is why in general the environments build a directed acyclic graph(1). + + Let us call the partial ordering relation which occurs between the +two environments to be inheritance. Sub-environments inherits from their +super-environments. + + Not only that "inheritance" is the standard term for the partial +ordering relation in the lattice theory but the feature of inheritance +in the meaning of object-orientation is associated with this relation. +This means that all associations of the super-environment are valid +also in its sub-environments unless they are locally redefined in the +sub-environment. + + A super-environment includes all its sub-enviroments as associations +under their names. The sub-environment includes its super-environment +under the symbol `#Super'. Most environments inherit from Smalltalk, +the standard root environment, but they are not required to do so; this +is similar to how most classes derive from Object, yet one can derive a +class directly from nil. Since they all inherit from Smalltalk all +global variables defined in it, it is not necessary to define a special +global variable pointing to root in each environment. + + The inheritance links to the super-environments are used in the +lookup for a potentially inherited global variable. This includes +lookups by a compiler searching for a variable and lookups via methods +such as `#at:' and `#includesKey:'. + +Syntax +------ + +Global objects of an environment (local or inherited) may be referenced +by their symbol used in the source code, e.g. + John goHome + +if the `#John -> aMan' association exists in the particular environment +or one of its super-environments, all along the way to the root +environment. + + If an object has to be referenced from another environment (i.e. +which is not on the inheritance link) it has to be referenced either +relatively to the position of the current environment (using the Super +symbol), or absolutely (using the "full pathname" of the object, +navigating from Smalltalk through the tree of sub-environments). + + For the identification of global objects in another environment a +"pathname" of symbols is used. The symbols are separated by blanks, +i.e. the "look" to be implemented is that of + Smalltalk Tasks MyTask + +and of + Super Super Peter. + + Its similarity to a sequence of message sends is not casual, and +suggests the following syntax for write access:(2) + Smalltalk Tasks MyTask: anotherTask + + This resembles the way accessors are used for other objects. As it +is custom in Smalltalk, however, we are reminded by uppercase letters +that we are accessing global objects. + + For compatibility and efficiency (compile-time name resolving is +faster than run-time resolving), two special syntaxes have been +implemented. Standard dot notation can be used to read the value of a +global (like in `Tasks.MyTask' or `Tasks::MyTask'), and another syntax +returns the Association object for a particular global: so the last +example above can be written also like + #{Smalltalk.Tasks.MyTask} value: anotherTask + + The latter kind of literal (called a "variable binding") is also +valid inside literal arrays. + +Implementation +-------------- + +A superclass of `SystemDictionary' called `RootNamespace' has to be +defined and many of the features of Smalltalk-80 SystemDictionaries will +be hosted by that class. `Namespace' and `RootNamespace' will in turn +become subclasses of `AbstractNamespace'. + + To handle inheritance, the following methods have to be defined or +redefined in Namespace (_not_ in RootNamespace): + +Accessors like `#at:ifAbsent:' and `#includesKey:' + Inheritance has to be implemented. + +Enumerators like `#do:' and `#keys' + This should return *all* the objects in the namespace, including + those which are inherited. + + For programs to be able to process correctly the "pathnames" and the +accessors, this feature must be implemented directly in +`AbstractNamespace'; it is easily handled through the standard +`doesNotUnderstand:' message for trapping message sends that the +virtual machine could not resolve. `AbstractNamespace' will also +implement a new set of methods that allow one to navigate through the +namespace hierarchy; these parallel those found in `Behavior' for the +class hierarchy. + + The most important task of the `Namespace' class is to provide +organization for the most important global objects in the Smalltalk +system--for the classes. This importance becomes even more crucial in +the structured environments which is first of all a framework for class +polymorphism. + + In Smalltalk the classes have the instance variable `name' which +holds the name of the class. Each defined class is included in +Smalltalk under this name. In a framework with several environments +the class should know the environment in which it has been created and +compiled. This is a new variable of Class which has to be defined and +properly set in relevant methods. In the mother environment the class +should be included under its name. + + Of course, any class (just like any other object) may be included +concurrently in several environments, even under different symbols in +the same or in diverse environments. We can consider this 'alias +names' of the particular class or global variable. However, classes +may be referenced under the other names or in other environments as +their mother environment e.g. for the purpose of intance creation or +messages to he class (class methods), but they cannot be compiled in +other environment. If a class compiles its methods it always compiles +them in its mother environment even if this compilation is requested +from another environment. If the syntax is not correct in the mother +environment, a compilation error simply occurs. + + An important issue is also the name of the class answered by the +class for the purpose of its identification in diverse tools (e.g. in a +browser). This has to be change to reflect the environment in which it +is shown, i.e. the method `nameIn: environment' has to be implemented +and used on proper places. + + These methods are not all which have to redefined in the Smalltalk +system to achieve full functionality of structured environments. In +particular, changes have to be made to the behavior classes, to the +user interface, to the compiler, to a few classes supporting +persistance. An interesting point that could not be noticed is that +the environment is easier to use if evaluations ("doits") are parsed as +if UndefinedObject's mother environment was _the current namespace_. + +Using namespaces +---------------- + +Using namespaces if often merely a matter of rewriting the loading +script this way: + Smalltalk addSubspace: #NewNS! + Namespace current: NewNS! + ... + Namespace current: Smalltalk! + + Also remember that pool dictionaries are actually "pool namespaces", +in the sense that including a namespace in the pool dictionaries list +will automatically include its superspaces too. Declaring a namespace +as a pool dictionaries is similar in this way to C++'s `using namespace' +declaration. + + Finally, be careful when working with fundamental system classes. +Although you can use code like + Smalltalk Set variableSubclass: #Set + ... + category: 'My application-Extensions' + +or the equivalent syntax `Set extend', this approach won't work when +applied to core classes. For example, you might be successful with a +`Set' or `WriteStream' object, but subclassing SmallInteger this way +can bite you in strange ways: integer literals will still belong to the +Smalltalk dictionary's version of the class (this holds for Arrays, +Strings, etc. too), primitive operations will still answer standard +Smalltalk `SmallIntegers', and so on. Or, `variableWordSubclasses' will +recognize 32-bit `Smalltalk LargeInteger' objects, but not LargeIntegers +belonging to your own namespace. + + Unfortunately this problem is not easy to solve since Smalltalk has +to cache the OOPs of determinate class objects for speed--it would not +be feasible to lookup the environment to which sender of a message +belongs every time the `+' message was sent to an Integer. + + So, GNU Smalltalk namespaces cannot yet solve 100% of the problem of +clashes between extensions to a class--for that you'll still have to +rely on prefixes to method names. But they _do_ solve the problem of +clashes between class names, or between class names and pool dictionary +names, so you might want to give them a try. An example of using +namespaces is given by the `examples/Publish.st' file in the GNU +Smalltalk source code directory. + + ---------- Footnotes ---------- + + (1) An inheritance tree in the current GNU Smalltalk implementation +of namespaces; a class can fake multiple inheritance by specifying a +namespace (environment, if you prefer) as one of its pool dictionaries. + + (2) Absent from the original paper. + + +File: gst.info, Node: Disk file-IO, Next: Object dumping, Prev: Namespaces, Up: Features + +Disk file-IO primitive messages +=============================== + +Four classes (`FileDescriptor', `FileStream', `File', `Directory') +allow you to create files and access the file system in a fully +object-oriented way. + + `FileDescriptor' and `FileStream' are much more powerful than the +corresponding C language facilities (the difference between the two is +that, like the C `stdio' library, `FileStream' does buffering). For one +thing, they allow you to write raw binary data in a portable +endian-neutral format. But, more importantly, these classes +transparently implement virtual filesystems and asynchronous I/O. + + Asynchronous I/O means that an input/output operation blocks the +Smalltalk Process that is doing it, but not the others, which makes them +very useful in the context of network programming. Virtual file systems +mean that these objects can transparently extract files from archives +such as `tar' and `gzip' files, through a mechanism that can be +extended through either shell scripting or Smalltalk programming. For +more information on these classes, look in the class reference, under +the `VFS' namespace. URLs may be used as file names; though, unless +you have loaded the `NetClients' package (*note Network support::), +only `file' URLs will be accepted. + + In addition, the three files, `stdin', `stdout', and `stderr' are +declared as global instances of `FileStream' that are bound to the +proper values as passed to the C virtual machine. They can be accessed +as either `stdout' and `FileStream stdout'--the former is easier to +type, but the latter can be clearer. + + Finally, `Object' defines four other methods: `print' and `printNl', +`store' and `storeNl'. These do a `printOn:' or `storeOn:' to the +"Transcript" object; this object, which is the sole instance of class +`TextCollector', normally delegates write operations to `stdout'. If +you load the Blox GUI, instead, the Transcript Window will be attached +to the Transcript object (*note Blox::). + + The `fileIn:' message sent to the FileStream class, with a file name +as a string argument, will cause that file to be loaded into Smalltalk. + + For example, + FileStream fileIn: 'foo.st' ! + +will cause `foo.st' to be loaded into GNU Smalltalk. + + +File: gst.info, Node: Object dumping, Next: GC, Prev: Disk file-IO, Up: Features + +The GNU Smalltalk ObjectDumper +============================== + +Another GNU Smalltalk-specific class, the `ObjectDumper' class, allows +you to dump objects in a portable, endian-neutral, binary format. Note +that you can use the `ObjectDumper' on ByteArrays too, thanks to another +GNU Smalltalk-specific class, `ByteStream', which allows you to treat +ByteArrays the same way you would treat disk files. + + For more information on the usage of the `ObjectDumper', look in the +class reference. + + +File: gst.info, Node: GC, Next: Security, Prev: Object dumping, Up: Features + +Memory management in GNU Smalltalk +================================== + +The GNU Smalltalk virtual machine is equipped with a garbage collector, +a facility that reclaims the space occupied by objects that are no +longer accessible from the system roots. The collector is composed of +several parts, each of which can be invoked by the virtual machine +using various tunable strategies, or invoked manually by the programmer. + + These parts include a "generation scavenger", a "mark & sweep" +collectory with an incremental sweep phase, and a "compactor". All +these facilities work on different memory spaces and differs from the +other in its scope, speed and disadvantages (which are hopefully +balanced by the availability of different algorithms). What follows is +a description of these algorithms and of the memory spaces they work in. + + "NewSpace" is the memory space where young objects live. It is +composed of three sub-spaces: an object-creation space ("Eden") and two +"SurvivorSpaces". When an object is first created, it is placed in +Eden. When Eden starts to fill up (i.e., when the number of used bytes +in Eden exceeds the scavenge threshold), objects that are housed in +Eden or in the occupied SurvivorSpace and that are still reachable from +the system roots are copied to the unoccupied SurvivorSpace. As an +object survives different scavenging passes, it will be shuffled by the +scavenger from the occupied SurvivorSpace to the unoccupied one. When +the number of used bytes in SurvivorSpace is high enough that the +scavenge pause might be excessively long, the scavenger will move some +of the older surviving objects from NewSpace to "OldSpace". In the +garbage collection jargon, we say that such objects are being "tenured" +to OldSpace. + + This garbage collection algorithm is designed to reclaim short-lived +objects, that is those objects that expire while residing in NewSpace, +and to decide when enough data is residing in NewSpace that it is +useful to move some of it in OldSpace. A "copying" garbage collector +is particularly efficient in an object population whose members are +more likely to die than survive, because a scavenger spends most of its +time copying survivors, who will be few in number in such populations, +rather than tracing corpses, who will be many in number in such +populations. This fact makes scavenging especially well suited to +NewSpace, where a percentage of 90% or more objects often fails to +survive across a single scavenge. + + The particular structure of NewSpace has many advantages. On one +hand, having a large Eden and two small SurvivorSpaces has a smaller +memory footprint than having two equally big semi-spaces and allocating +new objects directly from the occupied one (by default, GNU Smalltalk +uses 420=300+60*2 kilobytes of memory, while a simpler configuration +would use 720=360*2 kilobytes). On the other hand, it makes tenuring +decisions particularly simple: the copying order is such that +short-lived objects tend to be copied last, while objects that are +being referred from OldSpace tend to be copied first: this is because +the tenuring strategy of the scavenger is simply to treat the +destination SurvivorSpace as a circular buffer, tenuring objects with a +First-In-First-Out policy. + + An object might become part of the scavenger root set for several +reasons: objects that have been tenured are roots if their data lives +in an OldSpace page that has been written to since the last scavenge +(more on this later), plus all objects can be roots if they are known +to be referenced from C code or from the Smalltalk stacks. + + In turn, some of the old objects can be made to live in a special +area, called "FixedSpace". Objects that reside in FixedSpace are +special in that their body is guaranteed to remain at a fixed address +(in general, GNU Smalltalk only ensures that the header of the object +remains at a fixed address in the Object Table). Because the garbage +collector can and does move objects, passing objects to foreign code +which uses the object's address as a fixed key, or which uses a +ByteArray as a buffer, presents difficulties. One can use `CObject' to +manipulate C data on the `malloc' heap, which indeed does not move, but +this can be tedious and requires the same attentions to avoid memory +leaks as coding in C. FixedSpace provides a much more convenient +mechanism: once an object is deemed fixed, the object's body will never +move through-out its life-time; the space it occupies will however +still be returned automatically to the FixedSpace pool when the object +is garbage collected. Note that because objects in FixedSpace cannot +move, FixedSpace cannot be compacted and can therefore suffer from +extensive fragmentation. For this reason, FixedSpace should be used +carefully. FixedSpace however is rebuilt (of course) every time an +image is brought up, so a kind of compaction of FixedSpace can be +achieved by saving a snapshot, quitting, and then restarting the newly +saved image. + + Memory for OldSpace and FixedSpace is allocated using a variation of +the system allocator `malloc': in fact, GNU Smalltalk uses the same +allocator for its own internal needs, for OldSpace and for FixedSpace, +but it ensures that a given memory page never hosts objects that reside +in separate spaces. New pages are mapped into the address space as +needed and devoted to OldSpace or FixedSpace segments; similarly, when +unused they may be subsequently unmapped, or they might be left in +place waiting to be reused by `malloc' or by another Smalltalk data +space. + + Garbage that is created among old objects is taken care of by a mark +& sweep collector which, unlike the scavenger which only reclaims +objects in NewSpace, can only reclaim objects in OldSpace. Note that +as objects are allocated, they will not only use the space that was +previously occupied in the Eden by objects that have survived, but they +will also reuse the entries in the global Object Table that have been +freed by object that the scavenger could reclaim. This quest for free +object table entries can be combined with the sweep phase of the +OldSpace collector, which can then be done incrementally, limiting the +disruptive part of OldSpace garbage collection to the mark phase. + + Several runs of the mark & sweep collector can lead to fragmentation +(where objects are allocated from several pages, and then become +garbage in an order such that a bunch of objects remain in each page +and the system is not able to recycle them). For this reason, the +system periodically tries to compact OldSpace. It does so simply by +looping through every old object and copying it into a new OldSpace. +Since the OldSpace allocator does not suffer from fragmentation until +objects start to be freed nor after all objects are freed, at the end +of the copy all the pages in the fragmented OldSpace will have been +returned to the system (some of them might already have been used by +the compacted OldSpace), and the new, compacted OldSpace is ready to be +used as the system oldspace. Growing the object heap (which is done +when it is found to be quite full even after a mark & sweep collection) +automatically triggers a compaction. + + You can run the compactor without marking live objects. Since the +amount of garbage in OldSpace is usually quite limited, the overhead +incurred by copying potentially dead objects is small enough that the +compactor still runs considerably faster than a full garbage +collection, and can still give the application some breathing room. + + Keeping OldSpace and FixedSpace in the same heap would then make +compaction of OldSpace (whereby it is rebuilt from time to time in +order to limit fragmentation) much less effective. Also, the `malloc' +heap is not used for FixedSpace objects because GNU Smalltalk needs to +track writes to OldSpace and FixedSpace in order to support efficient +scavenging of young objects. + + To do so, the grey page table(1) contains one entry for each page in +OldSpace or FixedSpace that is thought to contain at least a reference +to an object housed in NewSpace. Every page in OldSpace is created as +grey, and is considered grey until a scavenging pass finds out that it +actually does not contain pointers to NewSpace. Then the page is +recolored black(2), and will stay black until it is written to or +another object is allocated in them (either a new fixed object, or a +young object being tenured). The grey page table is expanded and +shrunk as needed by the virtual machine. + + Drawing an histogram of object sizes shows that there are only a few +sources of large objects on average (i.e., objects greater than a page +in size), but that enough of these objects are created dynamically that +they must be handled specially. Such objects should not be allocated +in NewSpace along with ordinary objects, since they would fill up +NewSpace prematurely (or might not even fit in it), thus accelerating +the scavenging rate, reducing performance and resulting in an increase +in tenured garbage. Even though this is not an optimal solution +because it effectively tenures these objects at the time they are +created, a benefit can be obtained by allocating these objects directly +in FixedSpace. The reason why FixedSpace is used is that these objects +are big enough that they don't result in fragmentation(3); and using +FixedSpace instead of OldSpace avoids that the compactor copies them +because this would not provide any benefit in terms of reduced +fragmentation. + + Smalltalk activation records are allocated from another special heap, +the context pool. This is because it is often the case that they can +be deallocated in a Last-In-First-Out (stack) fashion, thereby saving +the work needed to allocate entries in the object table for them, and +quickly reusing the memory that they use. When the activation record +is accessed by Smalltalk, however, the activation record must be turned +into a first-class `OOP'(4). Since even these objects are usually very +short-lived, the data is however not copied to the Eden: the eviction +of the object bodies from the context pool is delayed to the next +scavenging, which will also empty the context pool just like it empties +Eden. If few objects are allocated and the context pool turns full +before the Eden, a scavenging is also triggered; this is however quite +rare. + + Optionally, GNU Smalltalk can avoid the overhead of interpretation by +executing a given Smalltalk method only after that method has been +compiled into the underlying microprocessor's machine code. This +machine-code generation is performed automatically, and the resulting +machine code is then placed in `malloc'-managed memory. Once executed, +a method's machine code is left there for subsequent execution. +However, since it would require way too much memory to permanently +house the machine-code version of every Smalltalk method, methods might +be compiled more than once: when a translation is not used at the time +that two garbage collection actions are taken (scavenges and global +garbage collections count equally), the incremental sweeper discards +it, so that it will be recomputed if and when necessary. + + ---------- Footnotes ---------- + + (1) The denomination "grey" comes from the lexicon of "tri-color +marking", which is an abstraction of every possible garbage +collection algorithms: in tri-color marking, grey objects are those +that are known to be reachable or that we are not interested in +reclaiming, yet have not been scanned yet to mark the objects that +they refer to as reachable. + + (2) Black objects are those that are known to be reachable or that +we are not interested in reclaiming, and are known to have references +only to other black or grey objects (in case you're curious, the +tri-color marking algorithm goes on like this: object not yet known +to be reachable are white, and when all objects are either black or +white, the white ones are garbage). + + (3) Remember that free pages are shared among the three heaps, +that is, OldSpace, FixedSpace and the `malloc' heap. When a large +object is freed, the memory that it used can be reused by `malloc' or +by OldSpace allocation + + (4) This is short for "Ordinary Object Pointer". + + +File: gst.info, Node: Security, Next: Special objects, Prev: GC, Up: Features + +Security in GNU Smalltalk +========================= + + +File: gst.info, Node: Special objects, Next: Dynamic loading, Prev: Security, Up: Features + +Special kinds of object +======================= + +A few methods in Object support the creation of particular objects. +This include: + + * finalizable objects + + * weak and ephemeron objects (i.e. objects whose contents are + considered specially, during the heap scanning phase of garbage + collection). + + * read-only objects (like literals found in methods) + + * fixed objects (guaranteed not to move across garbage collections) + + + They are: + + - Method on Object: makeWeak + Marks the object so that it is considered weak in subsequent + garbage collection passes. The garbage collector will consider + dead an object which has references only inside weak objects, and + will replace references to such an "almost-dead" object with nils, + and then send the `mourn' message to the object. + + - Method on Object: makeEphemeron + Marks the object so that it is considered specially in subsequent + garbage collection passes. Ephemeron objects are sent the message + `mourn' when the first instance variable is not referenced or is + referenced _only through another instance variable in the + ephemeron_. + + Ephemerons provide a very versatile base on which complex + interactions with the garbage collector can be programmed (for + example, finalization which is described below is implemented with + ephemerons). + + - Method on Object: addToBeFinalized + Marks the object so that, as soon as it becomes unreferenced, its + `finalize' method is called. Before `finalize' is called, the VM + implicitly removes the objects from the list of finalizable ones. + If necessary, the `finalize' method can mark again the object as + finalizable, but by default finalization will only occur once. + + Note that a finalizable object is kept in memory even when it has + no references, because tricky finalizers might "resuscitate" the + object; automatic marking of the object as not to be finalized has + the nice side effect that the VM can simply delay the releasing of + the memory associated to the object, instead of being forced to + waste memory even after finalization happens. + + An object must be explicitly marked as to be finalized _every time + the image is loaded_; that is, finalizability is not preserved by + an image save. This was done because in most cases finalization is + used together with `CObject's that would be stale when the image is + loaded again, causing a segmentation violation as soon as they are + accessed by the finalization method. + + - Method on Object: removeToBeFinalized + Removes the to-be-finalized mark from the object. As I noted + above, the finalize code for the object does not have to do this + explicitly. + + - Method on Object: finalize + This method is called by the VM when there are no more references + to the object (or, of course, if it only has references inside + weak objects). + + - Method on Object: isReadOnly + This method answers whether the VM will refuse to make changes to + the objects when methods like `become:', `basicAt:put:', and + possibly `at:put:' too (depending on the implementation of the + method). Note that GNU Smalltalk won't try to intercept + assignments to fixed instance variables, nor assignments via + `instVarAt:put:'. Many objects (Characters, `nil', `true', + `false', method literals) are read-only by default. + + - Method on Object: makeReadOnly: aBoolean + Changes the read-only or read-write status of the receiver to that + indicated by `aBoolean'. + + - Method on Object: basicNewInFixedSpace + Same as `#basicNew', but the object won't move across garbage + collections. + + - Method on Object: basicNewInFixedSpace: + Same as `#basicNew:', but the object won't move across garbage + collections. + + - Method on Object: makeFixed + Ensure that the receiver won't move across garbage collections. + This can be used either if you decide after its creation that an + object must be fixed, or if a class does not support using `#new' + or `#new:' to create an object + + Note that, although particular applications will indeed have a need +for fixed, read-only or finalizable objects, the `#makeWeak' primitive +is seldom needed and weak objects are normally used only indirectly, +through the so called "weak collections". These are easier to use +because they provide additional functionality (for example, `WeakArray' +is able to determine whether an item has been garbage collected, and +`WeakSet' implements hash table functionality); they are: + + * `WeakArray' + + * `WeakSet' + + * `WeakKeyDictionary' + + * `WeakValueLookupTable' + + * `WeakIdentitySet' + + * `WeakKeyIdentityDictionary' + + * `WeakValueIdentityDictionary' + + Versions of GNU Smalltalk preceding 2.1 included a +`WeakKeyLookupTable' class which has been replaced by +`WeakKeyDictionary'; the usage is completely identical, but the +implementation was changed to use a more efficient approach based on +ephemeron objects. + + +File: gst.info, Node: Dynamic loading, Next: Packages, Prev: Special objects, Up: Features + +Dynamic loading +=============== + +The `DLD' class enhances the C callout mechanism to automatically look +for unresolved functions in a series of program-specified libraries. To +add a library to the list, evaluate code like the following: + DLD addLibrary: '/usr/lib/libc' + + The extension (`.so', `.sl', `.a', `.dll' depending on your +operating system) will be added automatically. You are advised not to +specify it for portability reasons. + + You will then be able to use the standard C call-out mechanisms to +define all the functions in the C run-time library. Note that this is +a potential security problem (especially if your program is SUID root +under Unix), so you might want to disable dynamic loading when using +GNU Smalltalk as an extension language. To disable dynamic loading, +configure GNU Smalltalk passing the `--without-dld' switch. + + Note that a `DLD' class will be present even if dynamic loading is +disabled (either because your system is not supported, or by the +`--without-dld' configure switch) but any attempt to perform dynamic +linking will result in an error. + + +File: gst.info, Node: Packages, Prev: Dynamic loading, Up: Features + +Packages +======== + +Thanks to Andreas Klimas' insight, GNU Smalltalk now includes a +powerful packaging system which allows one to file in components +("goodies" in Smalltalk's very folkloristic terminology) without caring +of whether they need other goodies to be loaded. + + The packaging system is implemented by a Smalltalk class, +`PackageLoader', which looks for information about packages in the XML +file named (guess what) `packages.xml', in the current image directory. +There are two ways to load something using the packaging system. The +first way is to use the PackageLoader's `fileInPackage:' and +`fileInPackages:' methods. For example: + PackageLoader fileInPackages: #('Blox' 'Browser'). + PackageLoader fileInPackage: 'Compiler'. + + The second way is to use the `Load.st' file which lies in the GST +image directory. For example, start GNU Smalltalk with this command +line: + + gst -qsK Load.st -a Browser Blox Compiler(1) + +and GST will automatically file in: + + * BloxTK, needed by Blox + + * Blox, loaded first because Browser needs it + + * Parser, not specified, but needed by Browser and Compiler + + * Browser + + * Compiler (Blox is skipped because it has already been loaded) + + Then it will save the Smalltalk image, and finally exit! + + To provide support for this system, you have to give away with your +GST goodies a small file (say you call it `mypkg') which looks like +this: + + + + + MyPackage + MyPrereq1 + MyPrereq2 + MyCallout1 + MyCallout2 + Load.st + Finish.st + libmymodule + yourDirectoryName + + Load.st + Finish.st + MyFile1.st + MyFile2.st + + + + + + + + then people who install your package will only have to do + gst-package mypkg + + which is a small shell script which will merge the file with +`packages.xml', install the files specified in the `file' tags and load +the packages. + + Simple, isn't it? For examples of package declarations, have a look +at the `packages.xml' file as distributed with GNU Smalltalk. The GNU +Smalltalk makefile also use `gst-package' to install packages and to +prepare the distribution tarballs. + + The rest of this chapter discusses the packages provided with GNU +Smalltalk. + +* Menu: + +* Blox, BloxTK, and Browser: Blox. +* Parser, STInST, Compiler: Smalltalk-in-Smalltalk. +* DB and MySQL: Database. +* I18N: Locales. +* SUnit: SUnit. +* TCP, WebServer, NetClients: Network support. +* XML, XPath, XSL: XML. +* Minor packages: Minor packages. + + ---------- Footnotes ---------- + + (1) When using an alternate image path, don't use the -K option and +pass the full path to the `Load.st' script. + + +File: gst.info, Node: Blox, Next: Smalltalk-in-Smalltalk, Up: Packages + +Blox +---- + +Blox is a GUI building block tool kit. It is an abstraction on top of +the a platform's native GUI toolkit that is common across all platforms. +Writing to the Blox interface means your GUI based application will be +portable to any platform where Blox is supported. + + The Blox classes, which reside in the `BLOX' namespace and are fully +documented in *Note BLOX: (gst-libs)BLOX, act as wrappers around other +toolkits, which constitute the required portability layer; currently +the only one supported is Tcl/Tk but alternative versions of Blox, for +example based on Gtk+ and GNOME, have been considered and might even +replace Tcl/Tk in the future(1). Instead of having to rewrite widgets +and support for each platform, Blox simply asks the other toolkit to do +so (currently, it hands valid Tcl code to a standard Tcl 8.0 +environment); the abstraction from the operating system being used is +then extracted out of GNU Smalltalk. + + Together with the toolkit, there is a browsing system in the +`browser' directory that will allow the programmer to view the source +code for existing classes, to modify existing classes and methods, to +get detailed information about the classes and methods, and to evaluate +code within the browser. In addition, some simple debugging tools are +provided. An Inspector window allows the programmer to graphically +inspect and modify the representation of an object and a walkback +inspector was designed which will display a backtrace when the program +encounters an error. + + The Transcript global object is redirected to print to the +transcript window instead of printing to stdout, and the transcript +window as well as the workspaces, unlike the console read-eval-print +loop, support variables that live across multiple evaluations: + + a := 2 "Do-it" + a + 2 "Print-it: 4 will be shown" + + This browser evolved from an Xt-based version developed around 1993 +written by Brad Diller (bdiller@docent.com). Because of legal concerns +about possible copyright infringement because his initial +implementation used parts of ParcPlace's Model-View-Controller (MVC) +message interface, he and Richard Stallman devised a new window update +scheme which is more flexible and powerful than MVC's dependency +mechanism, and allowed him to purge all the MVC elements from the +implementation. + + The code was then further improved to employ a better class design +(for example, Brad used Dictionaries for classes still to be fleshed +out), to be aesthetically more appealing (taking advantage of the new +Blox text widget, the code browsers were enhanced with syntax +highlighting), and to be more complete (adding multiple "views" to the +inspector, namespace support and a complete debugger). + + To start the browser you can simply type: + + gst -qK browser/Run.st + + This will load any requested packages, then, if all goes well, a +worksheet window with a menu named "Smalltalk" will appear in the +top-left corner of the screen. You might want to file-in +`browser/Run.st' from your `.stinit' file (*note Startup sequence: +Operation.) or to run it automatically through ObjectMemory (*note +Memory access::). + + ---------- Footnotes ---------- + + (1) The Gtk+ bindings for GNU Smalltalk are in an embryonic +state; you can find them in the `GTK' package if you have Gtk+ 2.0 +or later installed + + +File: gst.info, Node: Smalltalk-in-Smalltalk, Next: Database, Prev: Blox, Up: Packages + +The Smalltalk-in-Smalltalk library +---------------------------------- + +The Smalltalk-in-Smalltalk library is a set of classes for looking at +Smalltalk code, constructing models of Smalltalk classes that can later +be created for real, analyzing and performing changes to the image, +finding smelly code and automatically doing repetitive changes. This +package incredibly enhances the reflective capabilities of Smalltalk. + + Being quite big (20000 source code lines) this package is split into +three different packages: `Parser' loads the parser only, `STInST' +loads various other tools (which compose the "Refactoring Browser" +package by John Brant and Don Roberts and will be the foundation for +GNU Smalltalk's next generation browser), `STInSTTest' performs +comprehensive unit tests(1) (*note SUnit::). Porting of the `STInST' +package will be completed in GNU Smalltalk 2.2. + + A fundamental part of the system is the recursive-descent parser +which creates parse nodes in the form of instances of subclasses of +`RBProgramNode'. + + The parser's extreme flexibility can be exploited in three ways, all +of which are demonstrated by source code available in the distribution: + + * First, actions are not hard-coded in the parser itself: the parser + creates a parse tree, then hands it to methods in `RBParser' that + can be overridden in different `RBParser' subclasses. This is done + by the compiler itself, in which a subclass of `RBParser' (class + `STFileInParser') hands the parse trees to the `STCompiler' class. + + * Second, an implementation of the "visitor" pattern is provided to + help in dealing with parse trees created along the way; this + approach is demonstrated by the Smalltalk code pretty-printer in + class `RBFormatter', by the syntax highlighting engine included + with the browser, and by the compiler. + + * The parser is able to perform complex tree searches and rewrites, + through the ParseTreeSearcher and ParseTreeRewriter classes. This + mechanism is exploited by most of the tools loaded by the `STInST' + package. + + In addition, two applications were created on top of this library +which are specific to GNU Smalltalk. The first is a compiler for +Smalltalk methods written in Smalltalk itself, whose source code +provides good insights into the GNU Smalltalk virtual machine. + + The second is the automatic documentation extractor, contained in +two files, `compiler/STLoader.st' and `compiler/STLoaderObjs.st'. To +be able to create Texinfo files even if the library cannot be loaded +(for example, `BLOX' requires a running X server) Smalltalk source code +is interpreted and objects for the classes and methods being read in +are created; then, polymorphism allows one to treat these exactly like +usual classes which can be fed to GNU Smalltalk's `ClassPublisher' +(found in `examples/Publish.st'. + + ---------- Footnotes ---------- + + (1) The tests can take *hours* to complete! + + +File: gst.info, Node: Database, Next: Locales, Prev: Smalltalk-in-Smalltalk, Up: Packages + +Database connectivity +--------------------- + +GNU Smalltalk includes support for connecting to databases. Currently +this support is limited to retrieving result sets from SQL selection +queries and executing SQL data manipulation queries; in the future +however a full object model will be available that hides the usage of +SQL. + + Classes that are independent of the database management system that +is in use reside in package `DB', while the drivers proper reside in +separate packages which have `DB' as a prerequisite; currently, the +only driver that is currently supplied is for _MySQL_ (loaded with +package _MySQL_). + + Using the library is fairly simple. To execute a query you need to +create a connection to the database, create a statement on the +connection, and execute your query. For example, let's say I want to +connect to the `test' database on the localhost. My user name is `doe' +and my password is `mypass'. + + | connection statement result | + + connection := Jdm MySQL JdmConnection on: + (Jdm JdmConnectionSpec new initialize + user: 'doe'; password: 'mypass'; + database: 'test'). + + You can see that the DBMS-specific classes live in a sub-namespace +of `Jdm', while DBMS-independent classes live in `Jdm'. `Jdm' are the +initials of the original developer of the driver, and also an acronym +for _Just a Database Manager_--silly acronym, I know. + + Here is how I execute a query. + + statement := connection createStatement. + result := statement + executeQuery: 'insert into aTable (aField) values (aValue)'. + + The result that is returned is a `JdmResult'. It holds two values: +the result type and the actual result value. For update queries the +type is set to #update and the value is an integer designating the +number of rows effected. For read queries (such as selection queries) +the type is set to #read and the value is a `JdmResultSet'. + + A `JdmResultSet' reads rows off the result stream. It also contains +a collection of column information (instances of `JdmColumn') which +describe the type, size, and other characteristics of the returned +column. Generally you grab the columns by sending the "next" message +to the result set. The next message returns a Boolean which indicates +whether or not there are any more rows to be read. Do NOT read past +the last row: currently the driver will block when this happens. + + A common usage of a JdmResultSet would be: + + | resultSet value | + [resultSet next] whileFalse: [value := resultSet valueNamed: 'columnName']. + + The result set has several accessing methods. They are: + +`valueAt: anInteger' + returns the Smalltalk value at column number anInteger + +`rawValueAt: anInteger' + returns the raw (String) value at column number anInteger + +`valueNamed: aString' + returns the Smalltalk value for the column named aString. + +`rawValueNamed: aString' + returns the raw (String) value for the column named aString + + To run the test suites your mysql server needs to be on the local +machine, the database "test" needs to exist, and a user named `utente' +on the localhost need full access to the database "test". + + The aforementioned conditions are true when Mysql is first installed. + + The tests run fairly slow since each row consists of all possible +Mysql types and many of the inserted values are generated. + + To run the tests execute the following: + + Jdm MySQL JdmMysqlTestSuite new run printNl + + +File: gst.info, Node: Locales, Next: SUnit, Prev: Database, Up: Packages + +Internationalization and localization support +--------------------------------------------- + +Different countries and cultures have varying conventions for how to +communicate. These conventions range from very simple ones, such as the +format for representing dates and times, to very complex ones, such as +the language spoken. Provided the programs are written to obey the +choice of conventions, they will follow the conventions preferred by the +user. GNU Smalltalk provides the `I18N' package to ease you in doing +so. + + "Internationalizing" software means programming it to be able to +adapt to the user's favorite conventions. These conventions can get +pretty complex; for example, the user might specify the locale +`espana-castellano' for most purposes, but specify the locale +`usa-english' for currency formatting: this might make sense if the user +is a Spanish-speaking American, working in Spanish, but representing +monetary amounts in US dollars. You can see that this system is simple +but, at the same time, very complete. This manual, however, is not the +right place for a thorough discussion of how an user would set up his +system for these conventions; for more information, refer to your +operating system's manual or to the GNU C library's manual. + + GNU Smalltalk inherits from ISO C the concept of a "locale", that +is, a collection of conventions, one convention for each purpose, and +maps each of these purposes to a Smalltalk class defined by the `I18N' +package, and these classes form a small hierarchy with class +`Locale'(1) as its roots: + + * `LcNumeric' formats numbers; `LcMonetary' and `LcMonetaryISO' + format currency amounts. + + * `LcTime' formats dates and times. + + * `LcMessages' translates your program's output. Of course, the + package can't automatically translate your program's output + messages into other languages; the only way you can support output + in the user's favorite language is to translate these messages by + hand. The package does, though, provide methods to easily handle + translations into multiple languages. + + Basic usage of the `I18N' package involves a single selector, the +question mark (`?'), which is a rarely used yet valid character for a +Smalltalk binary message. The meaning of the question mark selector is +"Hey, how do you say ... under your convention?". You can send `?' to +either a specific instance of a subclass of `Locale', or to the class +itself; in this case, rules for the default locale (which is specified +via environment variables) apply. You might say, for example, `LcTime +? Date today' or, for example, `germanMonetaryLocale ? account +balance'. This syntax can be at first confusing, but turns out to be +convenient because of its consistency and overall simplicity. + + Here is how `?' works for different classes: + + - Method on LcTime: ? aString + Format a date, a time or a timestamp (`DateTime' object). + + - Method on LcNumber: ? aString + Format a number. + + - Method on LcMonetary: ? aString + Format a monetary value together with its currency symbol. + + - Method on LcMonetaryISO: ? aString + Format a monetary value together with its ISO currency symbol. + + - Method on LcMessages: ? aString + Answer an `LcMessagesDomain' that retrieves translations from the + specified file. + + - Method on LcMessagesDomain: ? aString + Retrieve the translation of the given string.(2) + + The package provides much more functionality, including more advanced +formatting options support for Unicode, and conversion to and from +several character sets. For more information, refer to *Note I18N: +(gst-libs)I18N. + + As an aside, the representation of locales that the package uses is +exactly the same as the C library, which has many advantages: the burden +of mantaining locale data is removed from GNU Smalltalk's mantainers; +the need of having two copies of the same data is removed from GNU +Smalltalk's users; and finally, uniformity of the conventions assumed +by different internationalized programs is guaranteed to the end user. + + In addition, the representation of translated strings is the standard +MO file format adopted by the GNU `gettext' library. + + ---------- Footnotes ---------- + + (1) All the classes mentioned in this section reside in the +`I18N' namespace. + + (2) The `?' method does not apply to the LcMessagesDomain class +itself, but only to its instances. This is because LcMessagesDomain +is not a subclass of Locale. + + +File: gst.info, Node: SUnit, Next: Network support, Prev: Locales, Up: Packages + +The SUnit testing package +------------------------- + +`SUnit' is a framework to write and perform test cases in Smalltalk, +originarily written by the father of Extreme Programming(1), Kent Beck. +`SUnit' allows one to write the tests and check results in Smalltalk; +while this approach has the disadvantage that testers need to be able +to write simple Smalltalk programs, the resulting tests are very stable. + + What follows is a description of the philosophy of `SUnit' and a +description of its usage, excerpted from Kent Beck's paper in which he +describes `SUnit'. + +Where should you start? +....................... + +Testing is one of those impossible tasks. You'd like to be absolutely +complete, so you can be sure the software will work. On the other hand, +the number of possible states of your program is so large that you can't +possibly test all combinations. + + If you start with a vague idea of what you'll be testing, you'll +never get started. Far better to _start with a single configuration +whose behavior is predictable_. As you get more experience with your +software, you will be able to add to the list of configurations. + + Such a configuration is called a "fixture". Two example fixtures +for testing Floats can be `1.0' and `2.0'; two fixtures for testing +Arrays can be `#()' and `#(1 2 3)'. + + By choosing a fixture you are saying what you will and won't test +for. A complete set of tests for a community of objects will have many +fixtures, each of which will be tested many ways. + + To design a test fixture you have to + * Subclass TestCase + + * Add an instance variable for each known object in the fixture + + * Override setUp to initialize the variables + +How do you represent a single unit of testing? +.............................................. + +You can predict the results of sending a message to a fixture. You need +to represent such a predictable situation somehow. The simplest way to +represent this is interactively. You open an Inspector on your fixture +and you start sending it messages. There are two drawbacks to this +method. First, you keep sending messages to the same fixture. If a test +happens to mess that object up, all subsequent tests will fail, even +though the code may be correct. + + More importantly, though, you can't easily communicate interactive +tests to others. If you give someone else your objects, the only way +they have of testing them is to have you come and inspect them. + + By representing each predictable situation as an object, each with +its own fixture, no two tests will ever interfere. Also, you can easily +give tests to others to run. _Represent a predictable reaction of a +fixture as a method._ Add a method to TestCase subclass, and stimulate +the fixture in the method. + +How do you test for expected results? +..................................... + +If you're testing interactively, you check for expected results +directly, by printing and inspecting your objects. Since tests are in +their own objects, you need a way to programmatically look for +problems. One way to accomplish this is to use the standard error +handling mechanism (`#error:') with testing logic to signal errors: + + 2 + 3 = 5 ifFalse: [self error: 'Wrong answer'] + + When you're testing, you'd like to distinguish between errors you are +checking for, like getting six as the sum of two and three, and errors +you didn't anticipate, like subscripts being out of bounds or messages +not being understood. + + There's not a lot you can do about unanticipated errors (if you did +something about them, they wouldn't be unanticipated any more, would +they?) When a catastrophic error occurs, the framework stops running the +test case, records the error, and runs the next test case. Since each +test case has its own fixture, the error in the previous case will not +affect the next. + + The testing framework makes checking for expected values simple by +providing a method, `#should:', that takes a Block as an argument. If +the Block evaluates to true, everything is fine. Otherwise, the test +case stops running, the failure is recorded, and the next test case +runs. + + So, you have to _turn checks into a Block evaluating to a Boolean, +and send the Block as the parameter to `#should:'_. + + In the example, after stimulating the fixture by adding an object to +an empty Set, we want to check and make sure it's in there: + + SetTestCasee>>#testAdd + empty add: 5. + self should: [empty includes: 5] + + There is a variant on `TestCase>>#should:'. `TestCase>>#shouldnt:' +causes the test case to fail if the Block argument evaluates to true. +It is there so you don't have to use `(...) not'. + + Once you have a test case this far, you can run it. Create an +instance of your TestCase subclass, giving it the selector of the +testing method. Send `run' to the resulting object: + + (SetTestCase selector: #testAdd) run + + If it runs to completion, the test worked. If you get a walkback, +something went wrong. + +How do you collect and run many different test cases? +..................................................... + +As soon as you have two test cases running, you'll want to run them both +one after the other without having to execute two do it's. You could +just string together a bunch of expressions to create and run test +cases. However, when you then wanted to run "this bunch of cases and +that bunch of cases" you'd be stuck. + + The testing framework provides an object to represent "a bunch of +tests", `TestSuite'. A `TestSuite' runs a collection of test cases and +reports their results all at once. Taking advantage of polymorphism, +`TestSuites' can also contain other `TestSuites', so you can put Joe's +tests and Tammy's tests together by creating a higher level suite. +_Combine test cases into a test suite._ + + (TestSuite named: 'Money') + add: (MoneyTestCase selector: #testAdd); + add: (MoneyTestCase selector: #testSubtract); + run + + The result of sending `#run' to a `TestSuite' is a `TestResult' +object. It records all the test cases that caused failures or errors, +and the time at which the suite was run. + + All of these objects are suitable for being stored in the image and +retrieved. You can easily store a suite, then bring it in and run it, +comparing results with previous runs. + + ---------- Footnotes ---------- + + (1) Extreme Programming is a software engineering technique that +focuses on team work (to the point that a programmer looks in +real-time at what another one is typing), frequent testing of the +program, and incremental design. + + +File: gst.info, Node: Network support, Next: XML, Prev: SUnit, Up: Packages + +TCP, WebServer, NetClients +-------------------------- + +GNU Smalltalk includes an almost complete abstraction of the TCP, UDP +and IP protocols. Although based on the standard BSD sockets, this +library provides facilities such as buffering and preemptive I/O which +a C programmer usually has to implement manually. + + The distribution includes a few tests (mostly loopback tests that +demonstrate both client and server connection), which are class methods +in `Socket'. This code should guide you in the process of creating and +using both server and client sockets; after creation, sockets behave +practically the same as standard Smalltalk streams, so you should not +have particular problems. For more information, refer to *Note TCP: +(gst-libs)TCP. + + In addition, package `WebServer' implements a servlet-based web +serving framework engine, including support for file servers as well as +Wiki-style servers(1); each server is a subclass of `Servlet', and +different servers can live together under different paths. See the +class side examples protocol of WebServer to get it up and running +quick. + + The server is based on the GPL'ed WikiWorks project. For up to +date/more info go see >. +Many thanks go to the various people who had worked on the version on +which the server is based: + + Joseph Bacanskas joeb@mutual.navigant.com + Travis Griggs tgriggs@keyww.com + Ralph Johnson johnson@cs.uiuc.edu + Eliot Miranda eliot@objectshare.com + Ken Treis ktreis@keyww.com + John Brant brant@cs.uiuc.edu + Joe Whitesell whitesell@physsoft.com + + Apart from porting to GNU Smalltalk, a number of changes were made +to the code, including refactoring of classes, better aesthetics, +authentication support, virtual hosting, and HTTP 1.1 compliance. + + There is also code implementing the most popular Internet protocols: +FTP, HTTP, NNTP, SMTP, POP3 and IMAP. These classes, loaded by the +`NetClients' package, are derived from multiple public domain and free +software packages available for other Smalltalk dialects and ported to +GNU Smalltalk. Future version of GNU Smalltalk will include +documentation for these as well. + + ---------- Footnotes ---------- + + (1) A Wiki is a kind of collaborative web site, which allows one to +edit the contents of a page. + + +File: gst.info, Node: XML, Next: Minor packages, Prev: Network support, Up: Packages + +An XML parser and object model for GNU Smalltalk +------------------------------------------------ + +The XML parser library for Smalltalk, loaded as package XML includes a +validating XML parser and Document Object Model. This library is +rapidly becoming a standard in the Smalltalk world and a XSL +interpreter based on it is bundled with GNU Smalltalk as well (see +packages XPath and XSL). + + +File: gst.info, Node: Minor packages, Prev: XML, Up: Packages + +Minor packages +-------------- + +Various other "minor" packages are provided, typically as examples of +writing modules for GNU Smalltalk (*note Linking your libraries to the +virtual machine: External modules.). These are Regex, providing Perl5 +regular expressions, GDBM, which is an interface to the GNU database +manager, and MD5, which provides a simple class to quickly compute +cryptographically strong hash values. + + +File: gst.info, Node: Emacs, Next: C and Smalltalk, Prev: Features, Up: Top + +Smalltalk interface for GNU Emacs +********************************* + +GNU Smalltalk comes with its own Emacs mode for hacking Smalltalk code. +It also provides tools for interacting with a running Smalltalk system +in an Emacs subwindow. + +* Menu: + +* Autoloading:: Autoloading GNU Smalltalk mode. +* Editing:: Autoindent and more for GNU Smalltalk. +* Interactor:: Smalltalk interactor mode. + + +File: gst.info, Node: Autoloading, Next: Editing, Up: Emacs + +Autoloading GNU Smalltalk mode +============================== + +To cause Emacs to automatically go into Smalltalk mode when you edit a +Smalltalk file (one with the extension `.st'), you need to add the +following lines to your `.emacs' file: + + (setq auto-mode-alist + (append '(("\\.st\\'" . smalltalk-mode)) + auto-mode-alist)) + + (autoload 'smalltalk-mode "smalltalk-mode.elc" "" t) + +where is the path to where the two Emacs Lisp files included +with GNU Smalltalk are installed (by default, something like +`/usr/local/share/emacs/site-lisp'). + + +File: gst.info, Node: Editing, Next: Interactor, Prev: Autoloading, Up: Emacs + +Smalltalk editing mode +====================== + +The GNU Smalltalk editing mode is there to assist you in editing your +Smalltalk code. It tries to be smart about indentation and provides a +few cooked templates to save you keystrokes. + + Since Smalltalk syntax is highly context sensitive, the Smalltalk +editing mode will occasionally get confused when you are editing +expressions instead of method definitions. In particular, using local +variables, thus: + + | foo | + foo := 3. + ^foo squared ! + +will confuse the Smalltalk editing mode, as this might also be a +definition the binary operator `|', with second argument called +. If you find yourself confused when editing this type of +expression, put a dummy method name before the start of the expression, +and take it out when you're done editing, thus: + + x + | foo | + foo := 3. + ^foo squared ! + + +File: gst.info, Node: Interactor, Prev: Editing, Up: Emacs + +Smalltalk interactor mode +========================= + +An interesting feature of Emacs Smalltalk is the Smalltalk interactor, +which basically allows you run in GNU Emacs with Smalltalk files in one +window, and Smalltalk in the other. You can, with a single command, +edit and change method definitions in the live Smalltalk system, +evaluate expressions, make image snapshots of the system so you can +pick up where you left off, file in an entire Smalltalk file, etc. It +makes a tremendous difference in the productivity and enjoyment that +you'll have when using GNU Smalltalk. + + To start up the Smalltalk interactor, you must be running GNU Emacs +and in a buffer that's in Smalltalk mode. Then, if you type `C-c m'. +A second window will appear with GNU Smalltalk running in it. + + This window is in most respects like a Shell mode window. You can +type Smalltalk expressions to it directly and re-execute previous things +in the window by moving the cursor back to the line that contains the +expression that you wish to re-execute and typing return. + + Notice the status in the mode line (e.g. `starting-up', `idle', +etc). This status will change when you issue various commands from +Smalltalk mode. + + When you first fire up the Smalltalk interactor, it puts you in the +window in which Smalltalk is running. You'll want to switch back to +the window with your file in it to explore the rest of the interactor +mode, so do it now. + + To execute a range of code, mark the region around and type `C-c e'. +The expression in the region is sent to Smalltalk and evaluated. The +status will change to indicate that the expression is executing. This +will work for any region that you create. If the region does not end +with an exclamation point (which is syntactically required by +Smalltalk), one will be added for you. + + There is also a shortcut, `C-c d' (also invokeable as `M-x +smalltalk-doit'), which uses a simple heuristic to figure out the start +and end of the expression: it searches forward for a line that begins +with an exclamation point, and backward for a line that does not begin +with space, tab, or the comment character, and sends all the text in +between to Smalltalk. If you provide a prefix argument (by typing `C-u +C-c d' for instance), it will bypass the heuristic and use the region +instead (just like `C-c e' does). + + `C-c c' will compile a method; it uses a similar heuristic to +determine the bounds of the method definition. Typically, you'll +change a method definition, type `C-c c' and move on to whatever's +next. If you want to compile a whole bunch of method definitions, +you'll have to mark the entire set of method definitions (from the +`methodsFor:' line to the `! !') as the region and use `C-c e'. + + After you've compiled and executed some expressions, you may want to +take a snapshot of your work so that you don't have to re-do things +next time you fire up Smalltalk. To do this, you use the `C-c s' +command, which invokes `ObjectMemory snapshot'. If you invoke this +command with a prefix argument, you can specify a different name for +the image file, and you can have that image file loaded instead of the +default one by using the `-I' flag on the command line when invoking +Smalltalk. + + You can also evaluate an expression and have the result of the +evaluation printed by using the `C-c p' command. Mark the region and +use the command. + + To file in an entire file (perhaps the one that you currently have in +the buffer that you are working on), type `C-c f'. You can type the +name of a file to load at the prompt, or just type return and the file +associated with the current buffer will be loaded into Smalltalk. + + When you're ready to quit using GNU Smalltalk, you can quit cleanly +by using the `C-c q' command. If you want to fire up Smalltalk again, +or if (heaven forbid) Smalltalk dies on you, you can use the `C-c m' +command, and Smalltalk will be reincarnated. Even if it's running, but +the Smalltalk window is not visible, `C-c m' will cause it to be +displayed right away. + + You might notice that as you use this mode, the Smalltalk window +will scroll to keep the bottom of the buffer in focus, even when the +Smalltalk window is not the current window. This was a design choice +that I made to see how it would work. On the whole, I guess I'm pretty +happy with it, but I am interested in hearing your opinions on the +subject. + + +File: gst.info, Node: C and Smalltalk, Next: Tutorial, Prev: Emacs, Up: Top + +Interoperability between C and GNU Smalltalk +******************************************** + +* Menu: + +* External modules:: Linking your libraries to the virtual machine +* C callout:: Calls from Smalltalk to C +* C data types:: Manipulating C data from Smalltalk +* Smalltalk types:: Manipulating Smalltalk data from C +* Smalltalk callin:: Calls from C to Smalltalk +* Object representation:: Manipulating your own Smalltalk objects +* Incubator:: Protecting newly created objects from garbage + collections +* Other C functions:: Handling and creating OOPs +* Using Smalltalk:: The Smalltalk environment as an extension library + + +File: gst.info, Node: External modules, Next: C callout, Up: C and Smalltalk + +Linking your libraries to the virtual machine +============================================= + +A nice thing you can do with GNU Smalltalk is enhancing it with your own +goodies. If they're written in Smalltalk only, no problem: getting them +to work as packages (*note Packages::), and to fit in with the GNU +Smalltalk packaging system, is likely to be a five-minutes task. + + If your goodie is mostly written in C and you don't need particular +glue to link it to Smalltalk (for example, there are no callbacks from +C code to Smalltalk code), you can use the `dynamic library linking' +system. When using this system, you have to link GNU Smalltalk with the +library at run-time using DLD; the method to be used here is `DLD +class>>#addLibrary:'. + + But if you want to provide a more intimate link between C and +Smalltalk, as is the case with Blox, you should use the `dynamic module +linking' system. This section explains what to do, taking the Blox +library as a guide. + + Modules are searched for in the `gnu-smalltalk' subdirectory of the +system library path, or in the directory that the `SMALLTALK_MODULES' +environment variable points to. A module is distinguished from a +standard shared library because it has a function which Smalltalk calls +to initialize the module; the name of this function must be +`gst_initModule'. Here is the initialization function used by Blox: + + void + gst_initModule(proxy) + VMProxy *proxy; + { + vmProxy = proxy; + vmProxy->defineCFunc("Tcl_Eval", Tcl_Eval); + vmProxy->defineCFunc("Tcl_GetStringResult", Tcl_GetStringResult); + vmProxy->defineCFunc("tclInit", tclInit); + vmProxy->defineCFunc("bloxIdle", bloxIdle); + } + + Note that the `defineCFunc' function is called through a function +pointer in `gst_initModule', and that Blox saves the value of its +parameter to be used elsewhere in its code. This is not strictly +necessary on many platforms, namely those where the module is +effectively _linked with the Smalltalk virtual machine_ at run-time; +but since some(1) cannot obtain this, for maximum portability you must +always call the virtual machine through the proxy and never refer to +any symbol which the virtual machine exports. For uniformity, even +programs that link with `libgst.a' should not call these functions +directly, but through a `VMProxy' exported by `libgst.a' and accessible +through the `gst_interpreter_proxy' variable. + + First of all, you have to build your package as a shared library; +using GNU Automake and `libtool', this is as easy as changing your +`Makefile.am' file so that it reads like this + + pkglib_LTLIBRARIES = libblox.la + libblox_la_LDFLAGS = -module -no-undefined "... more flags ..." + libblox_la_SOURCES = "... your source files ..." + +instead of reading like this + + pkglib_LIBRARIES = libblox.a + libblox_a_LDFLAGS = "... more flags ..." + libblox_a_SOURCES = "... your source files ..." + + As you see, you only have to change `.a' extensions to `.la', +`LIBRARIES' targets to `LTLIBRARIES', and add appropriate options to +`LDFLAGS'(2). You will also have to run `libtoolize' and follow its +instruction, but this is really simpler than it looks. + + Note that this example uses `pkglib' because TCP is installed +together with Smalltalk, but in general this is not necessary. You can +install the library wherever you want; `libtool' will even generate +appropriate warnings to the installer if `ldconfig' (or an equivalent +program) has to be re-run. + + Finally, you will have to specify the name of the module in the +`packages' file. In this case, the relevant entry in that file will be + + Blox + Kernel + Blox.st libblox + ../blox + + Everything not ending with `.st' will be picked by the package +loader as a module, and will be passed to `DLD class>>#addModule:' +before attempting to file-in the Smalltalk source files. + + ---------- Footnotes ---------- + + (1) The most notable are AIX and Windows. + + (2) Specifying `-no-undefined' is not necessary, but it does perform +that the portability conditions explained above (no reference to +symbols in the virtual machine) are satisfied + + +File: gst.info, Node: C callout, Next: C data types, Prev: External modules, Up: C and Smalltalk + +Using the C callout mechanism +============================= + +To use the C callout mechanism, you first need to inform Smalltalk about +the C functions that you wish to call. You currently need to do this in +two places: 1) you need to establish the mapping between your C +function's address and the name that you wish to refer to it by, and 2) +define that function along with how the argument objects should be +mapped to C data types to the Smalltalk interpreter. As an example, let +us use the pre-defined (to GNU Smalltalk) functions of `system' and +`getenv'. + + First, the mapping between these functions and string names for the +functions needs to be established in your module. If you are writing an +external Smalltalk module (which can look at Smalltalk objects and +manipulate them), see *Note Linking your libraries to the virtual +machine: External modules; if you are using function from a dynamically +loaded library, see *Note Dynamic loading::. + + Second, we need to define a method that will invoke these C functions +and describe its arguments to the Smalltalk runtime system. Such a +method is automatically generated by calling a method which is available +to every class, `defineCFunc:withSelectorArgs:returning:args:'. + + Here are the definitions for the two functions `system' and `getenv' +(taken from `kernel/CFuncs.st') + SystemDictionary defineCFunc: 'system' + withSelectorArgs: 'system: aString' + returning: #int + args: #(string)! + + SystemDictionary defineCFunc: 'getenv' + withSelectorArgs: 'getenv: aString' + returning: #string + args: #(string)! + + The various keyword arguments are described below. + + The arguments are as follows: + +`SystemDictionary' + This specifies where the new method should be stored. In our + case, the method will be installed in the SystemDictionary, so + that we would invoke it thus: + Smalltalk system: 'lpr README' ! + + Again, there is no special significance to which class receives the + method; it could have just as well been Float, but it might look + kind of strange to see: + 1701.0 system: 'mail sbb@gnu.org' ! + +`defineCFunc: 'system'' + This says that we are defining the C function `system'. This name + must be *exactly* the same as the string passed to `defineCFunc'. + +`withSelectorArgs: 'system: aString'' + This defines how this method will be invoked from Smalltalk. The + name of the method does not have to match the name of the C + function; we could have just as easily defined the selector to be + `'rambo: fooFoo''; it's just good practice to define the method + with a similar name and the argument names to reflect the data + types that should be passed. + +`returning: #int' + This defines the C data type that will be returned. It is + converted to the corresponding Smalltalk data type. The set of + valid return types is: + `char' + Single C character value + + `string' + A C char *, converted to a Smalltalk string + + `stringOut' + A C char *, converted to a Smalltalk string and then freed. + + `symbol' + A C char *, converted to a Smalltalk symbol + + `int' + A C int value + + `uInt' + A C unsigned int value + + `long' + A C long value + + `uLong' + A C unsigned long value + + `double' + A C double, converted to an instance of FloatD + + `void' + No returned value + + `cObject' + An anonymous C pointer; useful to pass back to some C + function later + + `smalltalk' + An anonymous (to C) Smalltalk object pointer; should have + been passed to C at some point in the past or created by the + program by calling other public GNU Smalltalk functions + (*note Smalltalk types::). + + `CTYPE' + You can pass an instance of CType or one of its subclasses + (*note C data types::). In this case the object will be sent + `#narrow' before being returned: an example of this feature + is given in the experimental Gtk+ bindings. + +`args: #(string)' + This is an array of symbols that describes the types of the + arguments in order. For example, to specify a call to open(2), + the arguments might look something like: + args: #(string int int) + + The following argument types are supported; see above for details. + + `unknown' + Smalltalk will make the best conversion that it can guess for + this object; see the mapping table below + + `boolean' + passed as `char', which is promoted to `int' + + `char' + passed as `char', which is promoted to `int' + + `string' + passed as `char *' + + `stringOut' + passed as `char *', the contents are expected to be + overwritten with a new C string, and the object that was + passed becomes the new string on return + + `symbol' + passed as `char *' + + `byteArray' + passed as `char *', even though may contain NUL's + + `int' + passed as `int' + + `uInt' + passed as `unsigned int' + + `long' + passed as `long' + + `uLong' + passed as `unsigned long' + + `double' + passed as `double' + + `cObject' + C object value passed as `long' or `void *' + + `smalltalk' + Pass the object pointer to C. The C routine should treat the + value as a pointer to anonymous storage. This pointer can be + returned to Smalltalk at some later point in time. + + `variadic' + `variadicSmalltalk' + an Array is expected, each of the elements of the array will + be converted like an `unknown' parameter if `variadic' is + used, or passed as a raw object pointer for + `variadicSmalltalk'. + + `self' + `selfSmalltalk' + Pass the receiver, converting it to C like an `unknown' + parameter if `self' is used or passing the raw object pointer + for `selfSmalltalk'. Parameters passed this way don't map to + the message's arguments, instead they map to the message's + receiver. + + Table of parameter conversions: + +Declared param type Object type C parameter type used +boolean Boolean (True, False) int +byteArray ByteArray char * +cObject CObject void * +char Boolean (True, False) int +char Character int (C promotion rule) +char Integer int +double Float double (C promotion) +int Boolean (True, False) int +int Integer int +uInt Boolean (True, False) unsigned int +uInt Integer unsigned int +long Boolean (True, False) long +long Integer long +uLong Boolean (True, False) unsigned long +uLong Integer unsigned long +smalltalk, anything OOP +selfSmalltalk +string String char * +string Symbol char * +stringOut String char * +symbol Symbol char * +unknown, self Boolean (True, False) int +unknown, self ByteArray char * +unknown, self CObject void * +unknown, self Character int +unknown, self Float double +unknown, self Integer long +unknown, self String char * +unknown, self Symbol char * +unknown, self anything else OOP +variadic Array each element is passed + according to "unknown" +variadicSmalltalk Array each element is passed as + an OOP + + When your call-out returns `#void', depending on your application +you might consider using "asynchronous call-outs". These are call-outs +that do not suspend the process that initiated them, so the process +might be scheduled again, executing the code that follows the call-out, +during the execution of the call-out itself. This is particularly +handy when writing event loops (the most common place where you call +back into Smalltalk) because then _you can handle events that arrive +during the handling of an outer event_ before the outer event's +processing has ended. Depending on your application this might be +correct or not, of course. In the future, asynchronous call-outs might +be started into a separate thread. + + An asynchronous call-out is defined using an alternate method, +`defineAsyncCFunc:withSelectorArgs:args:'. Note that the returned +value parameter is missing because an asynchronous call-out always +returns `nil'. + + +File: gst.info, Node: C data types, Next: Smalltalk types, Prev: C callout, Up: C and Smalltalk + +The C data type manipulation system +=================================== + +`CType' is a class used to represent C data types themselves (no +storage, just the type). There are subclasses called things like +`CCType'. The instances can answer their size and alignment. +Their `valueType' is the underlying type of data. It's either an +integer, which is interpreted by the interpreter as the scalar type, or +the underlying element type, which is another `CType' subclass instance. + + To make life easier, there are global variables which hold onto +instances of `CScalarCType': they are called `CType' (like +`CIntType', not like `CIntCType'), and can be used wherever a C +datatype is used. If you had an array of strings, the elements would +be CStringType's (a specific instance of CScalarCType). + + `CObject' is the base class of the instances of C data. It has a +subclass called `CScalar', which has subclasses called `C'. +These subclasses can answer size and alignment information. + + Instances of `CObject' holds a pointer to a C type variable. The +variable can be allocated from Smalltalk by doing ` new', where +`' is a `CType' subclass instance, or it may have been returned +through the C callout mechanism as a return value. Remember that +`CObject' and its subclasses represent a pointer to a C object and as +such provide the full range of operations supported by C pointers. + + For example, `+' `anInteger' which returns a CObject which is higher +in memory by `anInteger' times the size of each item. There is also `-' +which acts like `+' if it is given an integer as its parameter. If a +CObject is given, it returns the difference between the two pointers. +`incr', `decr', `incrBy:', `decrBy:' adjust the string either forward or +backward, by either 1 or `n' characters. Only the pointer to the +string is changed; the actual characters in the string remain untouched. + + CObjects can be divided into two families, scalars and non-scalars, +just like C data types. Scalars fetch a Smalltalk object when sent the +`value' message, and change their value when sent the `value:' message. +Non-scalars do not support these two messages. + + `replaceWith:' `aString' replaces the string the instance points to +with the new string. Actually, it copies the bytes from the Smalltalk +String instance aString into the C string object, and null terminates. +Be sure that the C string has enough room! You can also use a +Smalltalk ByteArray as the data source. + + Non-scalars include instances of `CArray', `CPtr' and subclasses of +`CStruct' and `CUnion'. + + CPtrs and CArrays get their underlying element type through a +`CType' subclass instance which is associated with the `CArray' or +`CPtr' instance. + + CPtr's also have `value' and `value:' which get or change the +underlying value that's pointed to. In practice, `value' dereferences +the pointer. CString is a subclass that answers a Smalltalk String when +sent `value', and automatically allocates storage to copy and +null-terminate a Smalltalk `String' when sent `value:'. + + Note that a `CPtr' to `long' points to a place in memory where a +pointer to long is stored. In other words it is really a `long **' and +must be dereferenced twice with `cPtr value value' to get the `long'. + + Finally, there are `CStruct' and `CUnion', which are abstract +subclasses of `CObject'(1). In the following I will refer to CStruct, +but the same considerations apply to CUnion as well, with the only +difference that CUnions of course implement the semantics of a C union. + + These classes provide direct access to C data structures including + * `long' (unsigned too) + + * `short' (unsigned too) + + * `char' (unsigned too) & byte type + + * `double' (and `float') + + * `string' (NUL terminated char *, with special accessors) + + * arrays of any type + + * pointers to any type + + * other structs containing any fixed size types + + Here is an example struct decl in C: + struct audio_prinfo { + unsigned channels; + unsigned precision; + unsigned encoding; + unsigned gain; + unsigned port; + unsigned _xxx[4]; + unsigned samples; + unsigned eof; + unsigned char pause; + unsigned char error; + unsigned char waiting; + unsigned char _ccc[3]; + unsigned char open; + unsigned char active; + }; + + struct audio_info { + audio_prinfo_t play; + audio_prinfo_t record; + unsigned monitor_gain; + unsigned _yyy[4]; + }; + + And here is a Smalltalk equivalent decision: + CStruct subclass: #AudioPrinfo + declaration: #( (sampleRate uLong) + (channels uLong) + (precision uLong) + (encoding uLong) + (gain uLong) + (port uLong) + (xxx (array uLong 4)) + (samples uLong) + (eof uLong) + (pause uChar) + (error uChar) + (waiting uChar) + (ccc (array uChar 3)) + (open uChar) + (active uChar)) + classVariableNames: '' + poolDictionaries: '' + category: 'C interface-Audio' + ! + + CStruct subclass: #AudioInfo + declaration: #( (play #{AudioPrinfo} ) + (record #{AudioPrinfo} ) + (monitorGain uLong) + (yyy (array uLong 4))) + classVariableNames: '' + poolDictionaries: '' + category: 'C interface-Audio' + ! + + This creates two new subclasses of `CStruct' called `AudioPrinfo' +and `AudioInfo', with the given fields. The syntax is the same as for +creating standard subclasses, with the `instanceVariableNames' replaced +by `declaration'(2). You can make C functions return `CObject's that +are instances of these classes by passing `AudioPrinfo type' as the +parameter to the `returning:' keyword. + + AudioPrinfo has methods defined on it like: + #sampleRate + #channels + #precision + #encoding + +etc. These access the various data members. The array element +accessors (xxx, ccc) just return a pointer to the array itself. + + For simple scalar types, just list the type name after the variable. +Here's the set of scalars names, as defined in `kernel/CStruct.st': + #long CLong + #uLong CULong + #ulong CULong + #byte CByte + #char CChar + #uChar CUChar + #uchar CUChar + #short CShort + #uShort CUShort + #ushort CUShort + #int CInt + #uInt CUInt + #uint CUInt + #float CFloat + #double CDouble + #string CString + #smalltalk CSmalltalk + #{...} A given subclass of `CObject' + + The `#{...}' syntax is not in the Blue Book, but it is present in +GNU Smalltalk and other Smalltalks; it returns an Association object +corresponding to a global variable. + + To have a pointer to a type, use something like: + (example (ptr long)) + + To have an array pointer of size `', use: + (example (array string )) + + Note that this maps to `char *example[]' in C. + + The objects returned by using the fields are CObjects; there is no +implicit value fetching currently. For example, suppose you somehow got +ahold of an instance of class AudioPrinfo as described above (the +instance is a CObject subclass and points to a real C structure +somewhere). Let's say you stored this object in variable `audioInfo'. +To get the current gain value, do + audioInfo gain value + + to change the gain value in the structure, do + audioInfo gain value: 255 + + The structure member message just answers a `CObject' instance, so +you can hang onto it to directly refer to that structure member, or you +can use the `value' or `value:' methods to access or change the value +of the member. + + Note that this is the same kind of access you get if you use the +`addressAt:' method on CStrings or CArrays or CPtrs: they return a +CObject which points to a C object of the right type and you need to use +`value' and `value:' to access and modify the actual C variable. + + ---------- Footnotes ---------- + + (1) Actually they have a common superclass named `CCompound'. + + (2) The old `#newStruct:declaration:' method for creating CStructs is +deprecated because it does not allow one to set the category. + + +File: gst.info, Node: Smalltalk types, Next: Smalltalk callin, Prev: C data types, Up: C and Smalltalk + +Manipulating Smalltalk data from C +================================== + +GNU Smalltalk internally maps every object except Integers to a data +structure named an "OOP" (which is not an acronym for anything, as far +as I know). An OOP is a pointer to an internal data structure; this +data structure basically adds a level of indirection in the +representation of objects, since it contains + * a pointer to the actual object data + + * a bunch of flags, most of which interest the garbage collection + process + + This additional level of indirection makes garbage collection very +efficient, since the collector is free to move an object in memory +without updating every reference to that object in the heap, thereby +keeping the heap fully compact and allowing very fast allocation of new +objects. However, it makes C code that wants to deal with objects even +more messy than it would be without; if you want some examples, look at +the hairy code in GNU Smalltalk that deals with processes. + + To shield you as much as possible from the complications of doing +object-oriented programming in a non-object-oriented environment like C, +GNU Smalltalk provides friendly functions to map between common +Smalltalk objects and C types. This way you can simply declare OOP +variables and then use these functions to treat their contents like C +data. + + These functions are passed to a module via the `VMProxy' struct a +pointer to which is passed to the module, as shown in *Note Linking +your libraries to the virtual machine: External modules. They can be +divided in two groups, those that map _from Smalltalk objects to C data +types_ and those that map _from C data types to Smalltalk objects_. + + Here are those in the former group (Smalltalk to C); you can see that +they all begin with `OOPTo': + + - Function: long OOPToInt (OOP) + This function assumes that the passed OOP is an Integer and + returns the C `signed long' for that integer. + + - Function: long OOPToId (OOP) + This function returns an unique identifier for the given OOP, valid + until the OOP is garbage-collected. + + - Function: double OOPToFloat (OOP) + This function assumes that the passed OOP is an Float and returns + the C `double' for that integer. + + - Function: int OOPToBool (OOP) + This function returns a C integer which is true (i.e. `!= 0') if + the given OOP is the `true' object, false (i.e. `== 0') otherwise. + + - Function: char OOPToChar (OOP) + This function assumes that the passed OOP is a Character and + returns the C `char' for that integer. + + - Function: char *OOPToString (OOP) + This function assumes that the passed OOP is a String or ByteArray + and returns a C null-terminated `char *' with the same contents. + It is the caller's responsibility to free the pointer and to + handle possible `NUL' characters inside the Smalltalk object. + + - Function: char *OOPToByteArray (OOP) + This function assumes that the passed OOP is a String or ByteArray + and returns a C `char *' with the same contents, without + null-terminating it. It is the caller's responsibility to free the + pointer. + + - Function: PTR OOPToCObject (OOP) + This functions assumes that the passed OOP is a kind of CObject and + returns a C `PTR' to the C data pointed to by the object. The + caller should not free the pointer, nor assume anything about its + size and contents, unless it exactly knows what it's doing. A + `PTR' is a `void *' if supported, or otherwise a `char *'. + + - Function: long OOPToC (OOP) + This functions assumes that the passed OOP is a String, a + ByteArray, a CObject, or a built-in object (nil, true, false, + character, integer). If the OOP is nil, it answers 0; else the + mapping for each object is exactly the same as for the above + functions. Note that, even though the function is declared as + returning a `long', you might need to cast it to either a `char *' + or `PTR'. + + While special care is needed to use the functions above (you will +probably want to know at least the type of the Smalltalk object you're +converting), the functions below, which convert C data to Smalltalk +objects, are easier to use and also put objects in the incubator so that +they are not swept by a garbage collection (*note Incubator::). These +functions all "end" with `ToOOP', except `cObjectToTypedOOP': + + - Function: OOP intToOOP (long) + This object returns a Smalltalk Integer which contains the same + value as the passed C `long'. Note that Smalltalk Integers are + always signed and have a bit less of precision with respect to C + longs. On 32 bit machines, their precision is 30 bits (if + unsigned) or 31 bits (if signed); on 64 bit machines, their + precision is 62 bits (if unsigned) or 63 bits (if signed). + + - Function: OOP idToOOP (OOP) + This function returns an OOP from a unique identifier returned by + `OOPToId'. The OOP will be the same that was passed to `OOPToId' + only if the original OOP has not been garbage-collected since the + call to `OOPToId'. + + - Function: OOP floatToOOP (double) + This object returns a Smalltalk FloatD which contains the same + value as the passed `double'. Unlike Integers, FloatDs have + exactly the same precision as C doubles. + + - Function: OOP boolToOOP (int) + This object returns a Smalltalk Boolean which contains the same + boolean value as the passed C `int'. That is, the returned OOP is + the sole instance of either `False' or `True', depending on where + the parameter is zero or not. + + - Function: OOP charToOOP (char) + This object returns a Smalltalk Character which represents the + same char as the passed C `char'. + + - Function: OOP classNameToOOP (char *) + This method returns the Smalltalk class (i.e. an instance of a + subclass of Class) whose name is the given parameter. This method + is slow; you can safely cache its result. + + - Function: OOP stringToOOP (char *) + This method returns a String which maps to the given + null-terminated C string, or the builtin object `nil' if the + parameter points to address 0 (zero). + + - Function: OOP byteArrayToOOP (char *, int) + This method returns a ByteArray which maps to the bytes that the + first parameters points to; the second parameter gives the size of + the ByteArray. The builtin object `nil' is returned if the first + parameter points to address 0 (zero). + + - Function: OOP symbolToOOP (char *) + This method returns a String which maps to the given + null-terminated C string, or the builtin object `nil' if the + parameter points to address 0 (zero). + + - Function: OOP cObjectToOOP (PTR) + This method returns a CObject which maps to the given C pointer, + or the builtin object `nil' if the parameter points to address 0 + (zero). The returned value has no precise CType assigned. To + assign one, use `cObjectToTypedOOP'. + + - Function: OOP cObjectToTypedOOP (PTR, OOP) + This method returns a CObject which maps to the given C pointer, + or the builtin object `nil' if the parameter points to address 0 + (zero). The returned value has the second parameter as its type; + to get possible types you can use `typeNameToOOP'. + + - Function: OOP typeNameToOOP (char *) + All this method actually does is evaluating its parameter as + Smalltalk code; so you can, for example, use it in any of these + ways: + cIntType = typeNameToOOP("CIntType"); + myOwnCStructType = typeNameToOOP("MyOwnCStruct type"); + + This method is primarily used by msgSendf (*note Smalltalk + callin::), but it can be useful if you use lower level call-in + methods. This method is slow too; you can safely cache its result. + + As said above, the C to Smalltalk layer automatically puts the +objects it creates in the incubator which prevents objects from being +collected as garbage. A plugin, however, has limited control on the +incubator, and the incubator itself is not at all useful when objects +should be kept registered for a relatively long time, and whose lives +in the registry typically overlap. + + To avoid garbage collection of such object, you can use these +functions, which access a separate registry: + + - Function: void registerOOP (OOP) + Puts the given OOP in the registry. If you register an object + multiple times, you will need to unregister it the same number of + times. You may want to register objects returned by Smalltalk + call-ins. + + - Function: void unregisterOOP (OOP) + Removes an occurrence of the given OOP from the registry. + + - Function: void registerOOPArray (OOP **, OOP **) + Tells the garbage collector that an array of objects must be made + part of the root set. The two parameters point indirectly to the + base and the top of the array; that is, they are pointers to + variables holding the base and the top of the array: having + indirect pointers allows you to dynamically change the size of the + array and even to relocate it in memory without having to + unregister and re-register it every time you modify it. If you + register an array multiple times, you will need to unregister it + the same number of times. + + - Function: void unregisterOOPArray (OOP **) + Removes the array with the given base from the registry. + + +File: gst.info, Node: Smalltalk callin, Next: Object representation, Prev: Smalltalk types, Up: C and Smalltalk + +Calls from C to Smalltalk +========================= + +GNU Smalltalk provides seven different function calls that allow you to +call Smalltalk methods in a different execution context than the current +one. The priority in which the method will execute will be the same as +the one of Smalltalk process which is currently active. + + Four of these functions are more low level and are more suited when +the Smalltalk program itself gave a receiver, a selector and maybe some +parameters; the others, instead, are more versatile. One of them +(`msgSendf') automatically handles most conversions between C data +types and Smalltalk objects, while the others takes care of compiling +full snippets of Smalltalk code. + + All these functions handle properly the case of specifying, say, 5 +arguments for a 3-argument selector--see the description of the single +functions for more information). + + - Function: OOP msgSend (OOP receiver, OOP selector, ...) + This function sends the given selector (should be a Symbol, + otherwise nilOOP is returned) to the given receiver. The message + arguments should also be OOPs (otherwise, an access violation + exception is pretty likely) and are passed in a NULL-terminated + list after the selector. The value returned from the method is + passed back as an OOP to the C program as the result of `msgSend', + or nilOOP if the number of arguments is wrong. Example (same as + `1 + 2'): + + OOP shouldBeThreeOOP = vmProxy->msgSend( + intToOOP(1), + symbolToOOP("+"), + intToOOP(2), + nil); + + - Function: OOP strMsgSend (OOP receiver, char *selector, ...) + This function is the same as above, but the selector is passed as + a C string and is automatically converted to a Smalltalk symbol. + + Theoretically, this function is a bit slower than `msgSend' if your + program has some way to cache the selector and avoiding a call to + `symbolToOOP' on every call-in. However, this is not so apparent + in "real" code because the time spent in the Smalltalk interpreter + will usually be much higher than the time spent converting the + selector to a Symbol object. Example: + + OOP shouldBeThreeOOP = vmProxy->strMsgSend( + intToOOP(1), + "+", + intToOOP(2), + nil); + + - Function: OOP vmsgSend (OOP receiver, OOP selector, OOP *args) + This function is the same as msgSend, but accepts a pointer to the + NULL-terminated list of arguments, instead of being a + variable-arguments functions. Example: + + OOP arguments[2], shouldBeThreeOOP; + arguments[0] = intToOOP(2); + arguments[1] = nil; + /* ... some more code here ... */ + + shouldBeThreeOOP = vmProxy->vmsgSend( + intToOOP(1), + symbolToOOP("+"), + arguments); + + - Function: OOP nvmsgSend (OOP receiver, OOP selector, OOP *args, int + nargs) + This function is the same as msgSend, but accepts an additional + parameter containing the number of arguments to be passed to the + Smalltalk method, instead of relying on the NULL-termination of + args. Example: + + OOP argument, shouldBeThreeOOP; + argument = intToOOP(2); + /* ... some more code here ... */ + + shouldBeThreeOOP = vmProxy->nvmsgSend( + intToOOP(1), + symbolToOOP("+"), + &argument, + 1); + + The two functions that directly accept Smalltalk code are named +`evalCode' and `evalExpr', and they're basically the same. They both +accept a single parameter, a pointer to the code to be submitted to the +parser. The main difference is that `evalCode' discards the result, +while `evalExpr' returns it to the caller as an OOP. + + `msgSendf', instead, has a radically different syntax. Let's first +look at some examples. + + /* 1 + 2 */ + int shouldBeThree; + vmProxy->msgSendf(&shouldBeThree, "%i %i + %i", 1, 2) + + /* aCollection includes: 'abc' */ + OOP aCollection; + int aBoolean; + vmProxy->msgSendf(&aBoolean, "%b %o includes: %s", aCollection, "abc") + + /* 'This is a test' printNl -- in two different ways */ + vmProxy->msgSendf(nil, "%v %s printNl", "This is a test"); + vmProxy->msgSendf(nil, "%s %s printNl", "This is a test"); + + /* 'This is a test', ' ok?' */ + char *str; + vmProxy->msgSendf(&str, "%s %s , %s", "This is a test", " ok?"); + + As you can see, the parameters to msgSendf are, in order: + + * A pointer to the variable which will contain the record. If this + pointer is nil, it is discarded. + + * A description of the method's interface in this format (the object + types, after percent signs, will be explained later in this + section) + + %result_type %receiver_type selector %param1_type %param2_type + + * A C variable or Smalltalk object (depending on the type specifier) + for the receiver + + * If needed, The C variables and/or Smalltalk object (depending on + the type specifiers) for the arguments. + + Note that the receiver and parameters are NOT registered in the +object registry (*note Smalltalk types::). "receiver_type" and +"paramX_type" can be any of these characters, with these meanings: + + Specifier C data type equivalent Smalltalk class + i long Integer (see intToOOP) + f double Float (see floatToOOP) + F long double Float (see floatToOOP) + b int True or False (see boolToOOP) + c char Character (see charToOOP) + C PTR CObject (see cObjToOOP) + s char * String (see stringToOOP) + S char * Symbol (see symbolToOOP) + o OOP any + t char *, PTR CObject (see below) + T OOP, PTR CObject (see below) + +`%t' and `%T' are particular in the sense that you need to pass "two" +additional arguments to `msgSendf', not one. The first will be a +description of the type of the CObject to be created, the second +instead will be the CObject's address. If you specify `%t', the first +of the two arguments will be converted to a Smalltalk `CType' via +`typeNameToOOP' (*note Smalltalk types::); instead, if you specify +`%T', you will have to directly pass an OOP for the new CObject's type. + + The type specifiers you can pass for "result_type" are a bit +different: + + Result + Specifier if nil C data type expected result + i 0L long nil or an Integer + f 0.0 double nil or a Float + b 0 int nil or a Boolean + c '\0' char nil or a Character + C NULL PTR nil or a CObject + s NULL char * nil, a String, or a Symbol + ? 0 char *, PTR See oopToC + o nilOOP OOP any (result is not converted) + v / any (result is discarded) + + Note that, if resultPtr is nil, the "result_type" is always treated +as `%v'. If an error occurs, the value in the `result if nil' column +is returned. + + +File: gst.info, Node: Other C functions, Next: Using Smalltalk, Prev: Incubator, Up: C and Smalltalk + +Other functions available to modules +==================================== + +In addition to the functions above, the `VMProxy' that is made +available to modules contains entry-points for many functions that aid +in developing GNU Smalltalk extensions in C. This node documents these +functions and the macros that are defined by `libgst/gstpub.h'. + + - Function: void asyncSignal (OOP) + This functions accepts an OOP for a `Semaphore' object and signals + that object so that one of the processes waiting on that semaphore + is waken up. Since a Smalltalk call-in is not an atomic + operation, the correct way to signal a semaphore is not to send + the `signal' method to the object but, rather, to use: + + asyncSignal(semaphoreOOP) + + The signal request will be processed as soon as the next message + send is executed. + + _Caution:_ This and the next one are the only functions in the + `intepreterProxy' that can be called from within a signal handler. + + - Function: void asyncSignalAndUnregister (OOP) + This functions accepts an OOP for a `Semaphore' object and signals + that object so that one of the processes waiting on that semaphore + is waken up; the signal request will be processed as soon as the + next message send is executed. The object is then removed from + the registry. + + - Function: void syncWait (OOP) + This functions accepts an OOP for a `Semaphore' object and puts the + current process to sleep, unless the semaphore has excess signals + on it. Since a Smalltalk call-in is not an atomic operation, the + correct way to signal a semaphore is not to send the `wait' method + to the object but, rather, to use: + + syncWait(semaphoreOOP) + + The `sync' in the name of this function distinguishes it from + `asyncSignal', in that it cannot be called from within a signal + handler. + + - Function: OOP objectAlloc (OOP, int) + The `objectAlloc' function allocates an OOP for a newly created + instance of the class whose OOP is passed as the first parameter; + if that parameter is not a class the results are undefined (for + now, read as "the program will most likely core dump", but that + could change in a future version). + + The second parameter is used only if the class is an indexable one, + otherwise it is discarded: it contains the number of indexed + instance variables in the object that is going to be created. + Simple uses of `objectAlloc' include: + + OOP myClassOOP; + OOP myNewObject; + myNewObjectData obj; + ... + myNewObject = objectAlloc(myClassOOP, 0); + obj = (myNewObjectData) OOP_TO_OBJ (myNewObject); + obj->arguments = objectAlloc(classNameToOOP("Array"), 10); + ... + + The macros are(1): + + - Macro: mst_Object OOP_TO_OBJ (OOP) + Dereference a pointer to an OOP into a pointer to the actual + object data (*note Object representation::). The result of + `OOP_TO_OBJ' is not valid anymore if a garbage-collection happens; + for this reason, you should assume that a pointer to object data + is not valid after doing a call-in, calling `objectAlloc', and + caling any of the "C to Smalltalk" functions (*note Smalltalk + types::). + + - Macro: OOP OOP_CLASS (OOP) + Return the OOP for the class of the given object. For example, + `OOP_CLASS(proxy->stringToOOP("Wonderful GNU Smalltalk"))' is the + `String' class, as returned by `classNameToOOP("String")'. + + - Macro: mst_Boolean IS_INT (OOP) + Return a Boolean indicating whether or not the OOP is an Integer + object; the value of SmallInteger objects is encoded directly in + the OOP, not separately in a `mst_Object' structure. It is not + safe to use `OOP_TO_OBJ' and `OOP_CLASS' if `isInt' returns false. + + - Macro: mst_Boolean IS_OOP (OOP) + Return a Boolean indicating whether or not the OOP is a `real' + object (and not a SmallInteger). It is safe to use `OOP_TO_OBJ' + and `OOP_CLASS' only if `IS_OOP' returns true. + + - Macro: mst_Boolean ARRAY_OOP_AT (mst_Object, int) + Access the character given in the second parameter of the given + Array object. Note that this is necessary because of the way + `mst_Object' is defined, which prevents `indexedOOP' from working. + + - Macro: mst_Boolean STRING_OOP_AT (mst_Object, int) + Access the character given in the second parameter of the given + String or ByteArray object. Note that this is necessary because + of the way `mst_Object' is defined, which prevents `indexedByte' + from working. + + - Macro: mst_Boolean INDEXED_WORD (SOME-OBJECT-TYPE, int) + Access the given indexed instance variable in a + `variableWordSubclass'. The first parameter must be a structure + declared as described in *Note Object representation::). + + - Macro: mst_Boolean INDEXED_BYTE (SOME-OBJECT-TYPE, int) + Access the given indexed instance variable in a + `variableByteSubclass'. The first parameter must be a structure + declared as described in *Note Object representation::). + + - Macro: mst_Boolean INDEXED_OOP (SOME-OBJECT-TYPE, int) + Access the given indexed instance variable in a `variableSubclass'. + The first parameter must be a structure declared as described in + *Note Object representation::). + + ---------- Footnotes ---------- + + (1) IS_NIL and IS_CLASS have been removed because they are +problematic in shared libraries (modules), where they caused +undefined symbols to be present in the shared library. These are now +private to `libgst.a'. + + +File: gst.info, Node: Object representation, Next: Incubator, Prev: Smalltalk callin, Up: C and Smalltalk + +Manipulating instances of your own Smalltalk classes from C +=========================================================== + +Although GNU Smalltalk's library exposes functions to deal with +instances of the most common base class, it's likely that, sooner or +later, you'll want your C code to directly deal with instances of +classes defined by your program. There are three steps in doing so: + + * Defining the Smalltalk class + + * Defining a C `struct' that maps the representation of the class + + * Actually using the C struct + + In this chapter you will be taken through these steps considering the +hypotetical task of defining a Smalltalk interface to an SQL server. + + The first part is also the simplest, since defining the Smalltalk +class can be done in a single way which is also easy and very +practical; just evaluate the standard Smalltalk code that does that: + + Object subclass: #SQLAction + instanceVariableNames: 'database request' + classVariableNames: '' + poolDictionaries: '' + category: 'SQL-C interface' + + SQLAction subclass: #SQLRequest + instanceVariableNames: 'returnedRows' + classVariableNames: '' + poolDictionaries: '' + category: 'SQL-C interface' + + To define the C `struct' for a class derived from Object, GNU +Smalltalk's `gstpub.h' include file defines an `OBJ_HEADER' macro which +defines the fields that constitute the header of every object. Defining +a `struct' for SQLAction results then in the following code: + + struct st_SQLAction { + OBJ_HEADER; + OOP database; + OOP request; + } + + The representation of SQLRequest in memory is this: + + .------------------------------. + | common object header | 2 longs + |------------------------------| + | SQLAction instance variables | + | database | 2 longs + | request | + |------------------------------| + | SQLRequest instance variable | + | returnedRows | 1 long + '------------------------------' + + A first way to define the struct would then be: + typedef struct st_SQLAction { + OBJ_HEADER; + OOP database; + OOP request; + OOP returnedRows; + } *SQLAction; + + but this results in a lot of duplicated code. Think of what would +happen if you had other subclasses of `SQLAction' such as +`SQLObjectCreation', `SQLUpdateQuery', and so on! The solution, which +is also the one used in GNU Smalltalk's source code is to define a +macro for each superclass, in this way: + + /* SQLAction + |-- SQLRequest + | `-- SQLUpdateQuery + `-- SQLObjectCreation */ + + #define ST_SQLACTION_HEADER \ + OBJ_HEADER; \ + OOP database; \ + OOP request /* no semicolon */ + + #define ST_SQLREQUEST_HEADER \ + ST_SQLACTION_HEADER; \ + OOP returnedRows /* no semicolon */ + + typedef struct st_SQLAction { + ST_SQLACTION_HEADER; + } *SQLAction; + + typedef struct st_SQLRequest { + ST_SQLREQUEST_HEADER; + } *SQLRequest; + + typedef struct st_SQLObjectCreation { + ST_SQLACTION_HEADER; + OOP newDBObject; + } *SQLObjectCreation; + + typedef struct st_SQLUpdateQuery { + ST_SQLREQUEST_HEADER; + OOP numUpdatedRows; + } *SQLUpdateQuery; + + Note that the macro you declare is used instead of `OBJ_HEADER' in +the declaration of both the superclass and the subclasses. + + Although this example does not show that, please note that you should +not declare anything if the class has indexed instance variables. + + The first step in actually using your structs is obtaining a pointer +to an OOP which is an instance of your class. Ways to do so include +doing a call-in, receiving the object from a call-out (using +`#smalltalk', `#self' or `#selfSmalltalk' as the type specifier). + + Let's assume that the `oop' variable contains such an object. Then, +you have to dereference the OOP (which, as you might recall from *Note +Smalltalk types::, point to the actual object only indirectly) and get +a pointer to the actual data. You do that with the `OOP_TO_OBJ' macro +(note the type casting): + + SQLAction action = (SQLAction) OOP_TO_OBJ(oop); + + Now you can use the fields in the object like in this pseudo-code: + + /* These are retrieved via classNameToOOP and then cached in global + variables */ + OOP sqlUpdateQueryClass, sqlActionClass, sqlObjectCreationClass; + ... + invoke_sql_query( + vmProxy->oopToCObject(action->database), + vmProxy->oopToString(action->request); + query_completed_callback, /* Callback function */ + oop); /* Passed to the callback */ + + ... + + /* Imagine that invoke_sql_query runs asynchronously and calls this + when the job is done. */ + void + query_completed_callback(result, database, request, clientData) + struct query_result *result; + struct db *database; + char *request; + OOP clientData; + { + SQLUpdateQuery query; + OOP rows; + OOP cObject; + + /* Free the memory allocated by oopToString */ + free(request); + + if (OOP_CLASS (oop) == sqlActionClass) + return; + + if (OOP_CLASS (oop) == sqlObjectCreationClass) + { + SQLObjectCreation oc; + oc = (SQLObjectCreation) OOP_TO_OBJ (clientData); + cObject = vmProxy->cObjectToOOP (result->dbObject) + oc->newDBObject = cObject; + } + else + { + /* SQLRequest or SQLUpdateQuery */ + cObject = vmProxy->cObjectToOOP (result->rows); + query = (SQLUpdateQuery) OOP_TO_OBJ (clientData); + query->returnedRows = cObject; + if (OOP_CLASS (oop) == sqlUpdateQueryClass) + query->numReturnedRows = vmProxy->intToOOP (result->count); + } + + } + + Note that the result of `OOP_TO_OBJ' is not valid anymore if a +garbage-collection happens; for this reason, you should assume that a +pointer to object data is not valid after doing a call-in, calling +`objectAlloc', and using any of the "C to Smalltalk" functions except +`intToOOP' (*note Smalltalk types::). That's why I passed the OOP to +the callback, not the object pointer itself. + + If your class has indexed instance variables, you can use the +`INDEXED_WORD', `INDEXED_OOP' and `INDEXED_BYTE' macros declared in +`gstpub.h', which return an lvalue for the given indexed instance +variable--for more information, *note Other C functions::. + + +File: gst.info, Node: Using Smalltalk, Prev: Other C functions, Up: C and Smalltalk + +Using the Smalltalk environment as an extension library +======================================================= + +If you are reading this chapter because you are going to write +extensions to GNU Smalltalk, this section won't probably interest you. +But if you intend to use GNU Smalltalk as a scripting language or an +extension language for your future marvellous software projects, you +might be interest. + + How to initialize GNU Smalltalk is most briefly and easily explained +by looking at GNU Smalltalk's own source code. For this reason, here +is a snippet from `main.c'. + + + /* From main.c */ + int main(argc, argv) + int argc; + char **argv; + { + int result; + gst_smalltalk_args(argc, argv); + result = gst_init_smalltalk(); + if (result < 0) + result = 0; + else if (result == 0) + gst_top_level_loop(); + + exit(result); + } + + Your initialization code will be almost the same as that in GNU +Smalltalk's `main()', with the exception of the call to +`gst_top_level_loop'. All you'll have to do is to pass some arguments +to the GNU Smalltalk library via `gst_smalltalk_args', and then call +`gst_init_smalltalk'. + + Note that `gst_init_smalltalk' will likely take some time (from a +second to 30-40 seconds), because it has to check if the image file must +be be rebuilt and, if so, it reloads and recompiles the 37000 lines of +Smalltalk code in a basic image. To avoid this check, pass a `-I' flag: + + char myArgv[][] = { "-I", "myprog.im", nil }; + int myArgc; + /* ... */ + myArgc = sizeof(myArgv) / sizeof (char *) - 1; + smalltalkArgs(myArgc, myArgv); + + The result of `gst_init_smalltalk' is as follows: `0' means "go on", +`-1' means "don't run the top-level loop, but exit with a zero error +code", while anything else is an error code to be passed to `exit'. In +practice, `-1' is answered when you pass the `--help' or `--version' +options: if you don't pass them, you can safely ignore it. + + If you're using GNU Smalltalk as an extension library, you might +also want to disable the two `ObjectMemory' class methods, `quit' and +`quit:' method. I advice you not to change the Smalltalk kernel code. +Instead, in the script that loads your extension classes add these two +lines: + + ObjectMemory class compile: 'quit self shouldNotImplement'! + ObjectMemory class compile: 'quit: n self shouldNotImplement'! + + which will effectively disable the two offending methods. Other +possibilities include using `atexit' (from the C library) to exit your +program in a less traumatic way, or redefining these two methods to +exit through a call out to a C routine in your program. + + Also, note that it is not a problem if you develop the class +libraries for your programs within GNU Smalltalk's environment without +`defineCFunc'-ing your own C call-outs, since GNU Smalltalk recalculates +the addresses of the C call-outs every time it is started. + + +File: gst.info, Node: Incubator, Next: Other C functions, Prev: Object representation, Up: C and Smalltalk + +Incubator support +================= + +The incubator concept provides a mechanism to protect newly created +objects from being accidentally garbage collected before they can be +attached to some object which is reachable from the root set. + + If you are creating some set of objects which will not be +immediately (that means, before the next object is allocated from the +Smalltalk memory system) be attached to an object which is still "live" +(reachable from the root set of objects), you'll need to use this +interface. + + If you are writing a C call-out from Smalltalk (for example, inside a +module), you will not have direct access to the incubator; instead the +functions described in *Note Smalltalk types:: automatically put the +objects that they create in the incubator, and the virtual machine +takes care of wrapping C call-outs so that the incubator state is +restored at the end of the call. + + This section describes its usage from the point of view of a program +that is linking with `libgst.a'. Such a program has much finer control +to the incubator. The interface provides the following operations: + + - Macro: void INC_ADD_OOP (OOP anOOP) + Adds a new object to the protected set. + + - Macro: inc_ptr INC_SAVE_POINTER () + Retrieves the current incubator pointer. Think of the incubator + as a stack, and this operation returns the current stack pointer + for later use (restoration) with the incRestorePointer function. + + - Macro: void INC_RESTORE_POINTER (inc_ptr ptr) + Sets (restores) the incubator pointer to the given pointer value. + + Typically, when you are within a function which allocates more than +one object at a time, either directly or indirectly, you'd want to use +the incubator mechanism. First you'd save a copy of the current +pointer in a local variable. Then, for each object you allocate +(except the last, if you want to be optimal), after you create the +object you add it to the incubator's list. When you return, you need +to restore the incubator's pointer to the value you got with +incSavePointer using the incRestorePointer function. + + Here's an example from cint.c: + + The old code was (the comments are added for this example): + + desc = (_gst_cfunc_descriptor) + new_instance_with (cFuncDescriptorClass, numArgs); + desc->cFunction = _gst_cobject_new (funcAddr); // 1 + desc->cFunctionName = _gst_string_new (funcName); // 2 + desc->numFixedArgs = FROM_INT (numArgs); + desc->returnType = _gst_classify_type_symbol (returnTypeOOP, true); + for (i = 1; i <= numArgs; i++) { + desc->argTypes[i - 1] = + _gst_classify_type_symbol(ARRAY_AT(argsOOP, i), false); + } + + return (_gst_alloc_oop(desc)); + + `desc' is originally allocated via `newInstanceWith' and `allocOOP', +two private routines which are encapsulated by the public routine +`objectAlloc'. At "1", more storage is allocated, and the garbage +collector has the potential to run and free (since no live object is +referring to it) desc's storage. At "2" another object is allocated, +and again the potential for losing both `desc' and `desc->cFunction' is +there if the GC runs (this actually happened!). + + To fix this code to use the incubator, modify it like this: + + OOP descOOP; + IncPtr ptr; + + incPtr = INC_SAVE_POINTER(); + desc = (_gst_cfunc_descriptor) + new_instance_with (cFuncDescriptorClass, numArgs); + descOOP = _gst_alloc_oop(desc); + INC_ADD_OOP (descOOP); + + desc->cFunction = _gst_cobject_new (funcAddr); // 1 + INC_ADD_OOP (desc->cFunction); + + desc->cFunctionName = _gst_string_new (funcName); // 2 + /* since none of the rest of the function (or the functions it calls) + * allocates any storage, we don't have to add desc->cFunctionName + * to the incubator's set of objects, although we could if we wanted + * to be completely safe against changes to the implementations of + * the functions called from this function. + */ + + desc->numFixedArgs = FROM_INT (numArgs); + desc->returnType = _gst_classify_type_symbol (returnTypeOOP, true); + for (i = 1; i <= numArgs; i++) { + desc->argTypes[i - 1] = + _gst_classify_type_symbol(ARRAY_AT(argsOOP, i), false); + } + + return (_gst_alloc_oop(desc)); + + Note that it is permissible for two or more functions to cooperate +with their use of the incubator. For example, say function A allocates +some objects, then calls function B which allocates some more objects, +and then control returns to A where it does some more execution with the +allocated objects. If B is only called by A, B can leave the management +of the incubator pointer up to A, and just register the objects it +allocates with the incubator. When A does a `INC_RESTORE_POINTER', it +automatically clears out the objects that B has registered from the +incubator's set of objects as well; the incubator doesn't know about +functions A & B, so as far as it is concerned, all of the registered +objects were registered from the same function. + + +File: gst.info, Node: Tutorial, Next: Future, Prev: C and Smalltalk, Up: Top + +Tutorial +******** + +What this manual presents + This document provides a tutorial introduction to the Smalltalk + language in general, and the GNU Smalltalk implementation in + particular. It does not provide exhaustive coverage of every + feature of the language and its libraries; instead, it attempts to + introduce a critical mass of ideas and techniques to get the + Smalltalk novice moving in the right direction. + +Who this manual is written for + This manual assumes that the reader is acquainted with the basics + of computer science, and has reasonable proficiency with a + procedural language such as C. It also assumes that the reader is + already familiar with the usual janitorial tasks associated with + programming: editing, moving files, and so forth. + +* Menu: + +* Getting started:: Starting to explore GNU Smalltalk +* Some classes:: Using some of the Smalltalk classes +* The hierarchy:: The Smalltalk class hierarchy +* Creating classes:: Creating a new class of objects +* Creating subclasses:: Adding subclasses to another class +* Code blocks (I):: Control structures in Smalltalk +* Code blocks (II):: Guess what? More control structures +* Debugging:: Things go bad in Smalltalk too! +* More subclassing:: Coexisting in the class hierarchy +* Streams:: Something really powerful +* Behind the scenes:: Some nice stuff from the Smalltalk innards +* And now:: Some final words +* The syntax:: For the most die-hard computer scientists + + +File: gst.info, Node: Getting started, Next: Some classes, Prev: Tutorial, Up: Tutorial + +Getting started +=============== + +* Menu: + +* Starting Smalltalk:: Starting up Smalltalk +* Saying hello:: Saying hello +* What happened:: But how does it say hello? +* Doing math:: Smalltalk too can do it! +* Math in Smalltalk:: But in a peculiar way of course... + + +File: gst.info, Node: Starting Smalltalk, Next: Saying hello, Prev: Getting started, Up: Getting started + +Starting up Smalltalk +--------------------- + +Assuming that GNU Smalltalk has been installed on your system, starting +it is as simple as: + $ gst + the system loads in Smalltalk, and displays a startup banner like: + GNU Smalltalk ready + + st> + + You are now ready to try your hand at Smalltalk! By the way, when +you're ready to quit, you exit Smalltalk by typing `control-D' on an +empty line. + + +File: gst.info, Node: Saying hello, Next: What happened, Prev: Starting Smalltalk, Up: Getting started + +Saying hello +------------ + +An initial exercise is to make Smalltalk say "hello" to you. Type in +the following line (`printNl' is a upper case N and a lower case L): + 'Hello, world' printNl ! + The system then prints back 'Hello, world' to you. It prints it +twice, the first time because you asked to print and the second time +because the snipped evaluated to the 'Hello, world' string.(1) + + ---------- Footnotes ---------- + + (1) You can also have the system print out a lot of statistics +which provide information on the performance of the underlying +Smalltalk engine. You can enable them by starting Smalltalk as: + $ gst -V + + +File: gst.info, Node: What happened, Next: Doing math, Prev: Saying hello, Up: Getting started + +What actually happened +---------------------- + +The front-line Smalltalk interpreter gathers all text until a '!' +character and executes it. So the actual Smalltalk code executed was: + 'Hello, world' printNl + + This code does two things. First, it creates an object of type +`String' which contains the characters "Hello, world". Second, it +sends the message named `printNl' to the object. When the object is +done processing the message, the code is done and we get our prompt +back. You'll notice that we didn't say anything about printing ing the +string, even though that's in fact what happened. This was very much +on purpose: the code we typed in doesn't know anything about printing +strings. It knew how to get a string object, and it knew how to send a +message to that object. That's the end of the story for the code we +wrote. + + But for fun, let's take a look at what happened when the string +object received the `printNl' message. The string object then went to +a table (1) which lists the messages which strings can receive, and +what code to execute. It found that there is indeed an entry for +`printNl' in that table and ran this code. This code then walked +through its characters, printing each of them out to the terminal. (2) + + The central point is that an object is entirely self-contained; only +the object knew how to print itself out. When we want an object to +print out, we ask the object itself to do the printing. + + ---------- Footnotes ---------- + + (1) Which table? This is determined by the type of the object. An +object has a type, known as the class to which it belongs. Each class +has a table of methods. For the object we created, it is known as a +member of the `String' class. So we go to the table associated with +the String class. + + (2) Actually, the message `printNl' was inherited from Object. It +sent a `print' message, also inherited by Object, which then sent +`printOn:' to the object, specifying that it print to the `Transcript' +object. The String class then prints its characters to the standard +output. + + +File: gst.info, Node: Doing math, Next: Math in Smalltalk, Prev: What happened, Up: Getting started + +Doing math +---------- + +A similar piece of code prints numbers: + 1234 printNl ! + + Notice how we used the same message, but have sent it to a new type +of object--an integer (from class `Integer'). The way in which an +integer is printed is much different from the way a string is printed +on the inside, but because we are just sending a message, we do not +have to be aware of this. We tell it to `printNl', and it prints +itself out. + + As a user of an object, we can thus usually send a particular +message and expect basically the same kind of behavior, regardless of +object's internal structure (for instance, we have seen that sending +`printNl' to an object makes the object print itself). In later +chapters we will see a wide range of types of objects. Yet all of them +can be printed out the same way--with `printNl'. + + White space is ignored, except as it separates words. This example +could also have looked like: + 1234 + printNl ! + + An integer can be sent a number of messages in addition to just +printing itself. An important set of messages for integers are the +ones which do math: + + (9 + 7) printNl ! + + Answers (correctly!) the value 16. The way that it does this, +however, is a significant departure from a procedural language. + + +File: gst.info, Node: Math in Smalltalk, Prev: Doing math, Up: Getting started + +Math in Smalltalk +----------------- + +In this case, what happened was that the object `9' (an Integer), +received a `+' message with an argument of `7' (also an Integer). The +`+' message for integers then caused Smalltalk to create a new object +`16' and return it as the resultant object. This `16' object was then +given the `printNl' message, and printed `16' on the terminal. + + Thus, math is not a special case in Smalltalk; it is done, exactly +like everything else, by creating objects, and sending them messages. +This may seem odd to the Smalltalk novice, but this regularity turns +out to be quite a boon: once you've mastered just a few paradigms, all +of the language "falls into place". Before you go on to the next +chapter, make sure you try math involving `*' (multiplication), `-' +(subtraction), and `/' (division) also. These examples should get you +started: + + (8 * (4 / 2)) printNl ! + (8 - (4 + 1)) printNl ! + (5 + 4) printNl ! + (2/3 + 7) printNl ! + (2 + 3 * 4) printNl ! + (2 + (3 * 4)) printNl ! + + +File: gst.info, Node: Some classes, Next: The hierarchy, Prev: Getting started, Up: Tutorial + +Using some of the Smalltalk classes +=================================== + +This chapter has examples which need a place to hold the objects they +create. The following line creates such a place; for now, treat it as +magic. At the end of the chapter we will revisit it with an +explanation. Type in: + Smalltalk at: #x put: 0 ! + + Now let's create some new objects. + +* Menu: + +* Arrays:: An array in Smalltalk +* Sets:: A set in Smalltalk +* Dictionaries:: Getting more sophisticated, eh? +* Smalltalk dictionary:: A very important dictionary, really +* Closing thoughts:: There always ought to be some closing thoughts + + +File: gst.info, Node: Arrays, Next: Sets, Prev: Some classes, Up: Some classes + +An array in Smalltalk +--------------------- + +An array in Smalltalk is similar to an array in any other language, +although the syntax may seem peculiar at first. To create an array +with room for 20 elements, do(1): + x := Array new: 20 ! + + The `Array new: 20' creates the array; the `x :=' part connects the +name `x' with the object. Until you assign something else to `x', you +can refer to this array by the name `x'. Changing elements of the +array is not done using the `:=' operator; this operator is used only +to bind names to objects. In fact, you never modify data structures; +instead, you send a message to the object, and it will modify itself. + + For instance: + (x at: 1) printNl ! + +which prints: + nil + + The slots of an array are initially set to "nothing" (which +Smalltalk calls `nil'). Let's set the first slot to the number 99: + x at: 1 put: 99 ! + +and now make sure the 99 is actually there: + (x at: 1) printNl ! + +which then prints out: + 99 + + These examples show how to manipulate an array. They also show the +standard way in which messages are passed arguments ments. In most +cases, if a message takes an argument, its name will end with `:'.(2) + + So when we said `x at: 1' we were sending a message to whatever +object was currently bound to `x' with an argument of 1. For an array, +this results in the first slot of the array being returned. + + The second operation, `x at: 1 put: 99' is a message with two +arguments. It tells the array to place the second argument (99) in the +slot specified by the first (1). Thus, when we re-examine the first +slot, it does indeed now contain 99. + + There is a shorthand for describing the messages you send to +objects. You just run the message names together. So we would say +that our array accepts both the `at:' and `at:put:' messages. + + There is quite a bit of sanity checking built into an array. The +request + 6 at: 1 + +fails with an error; 6 is an integer, and can't be indexed. Further, + x at: 21 + +fails with an error, because the array we created only has room for 20 +objects. + + Finally, note that the object stored in an array is just like any +other object, so we can do things like: + ((x at: 1) + 1) printNl ! + +which (assuming you've been typing in the examples) will print 100. + + ---------- Footnotes ---------- + + (1) GNU Smalltalk supports completion in the same way as Bash or +GDB. To enter the following line, you can for example type `x +:= Arr new: 20'. This can come in handy when you have to type +long names such as `IdentityDictionary', which becomes +`IdeD'. Everything starting with a capital letter or +ending with a colon can be completed. + + (2) Alert readers will remember that the math examples of the +previous chapter deviated from this. + + +File: gst.info, Node: Sets, Next: Dictionaries, Prev: Arrays, Up: Some classes + +A set in Smalltalk +------------------ + +We're done with the array we've been using, so we'll assign something +new to our `x' variable. Note that we don't need to do anything +special about the old array: the fact that nobody is using it any more +will be automatically detected, and the memory reclaimed. This is +known as garbage collection and it is generally done when Smalltalk +finds that it is running low on memory. So, to get our new object, +simply do: + x := Set new ! + +which creates an empty set. To view its contents, do: + x printNl ! + + The kind of object is printed out (i.e., `Set'), and then the +members are listed within parenthesis. Since it's empty, we see: + Set () + + Now let's toss some stuff into it. We'll add the numbers 5 and 7, +plus the string 'foo'. We could type: + + x add: 5 ! + x add: 7 ! + x add: 'foo' ! + + But let's save a little typing by using a Smalltalk shorthand: + + x add: 5; add: 7; add: 'foo' ! + + This line does exactly what the previous example's three lines did. +The trick is that the semicolon operator causes the message to be sent +to the same object as the last message sent. So saying `; add: 7' is +the same as saying `x add: 7', because `x' was the last thing a message +was sent to. This may not seem like such a big savings, but compare +the ease when your variable is named `aVeryLongVariableName' instead of +just `x'! We'll revisit some other occasions where `;' saves you +trouble, but for now let's continue with our set. Type either version +of the example, and make sure that we've added 5, 7, and "foo": + x printNl ! + +we'll see that it now contains our data: + Set (5 'foo' 7) + + What if we add something twice? No problem--it just stays in the +set. So a set is like a big checklist--either it's in there, or it +isn't. To wit: + x add:5; add: 5; add: 5; add: 5 ! + x printNl ! + + We've added 5 several times, but when we printed our set back out, +we just see: + Set (5 'foo' 7) + + What you put into a set with `add:', you can take out with +`remove:'. Try: + + x remove: 5 ! + x printNl ! + + The set now prints as: + Set ('foo' 7) + + The "5" is indeed gone from the set. + + We'll finish up with one more of the many things you can do with a +set--checking for membership. Try: + (x includes: 7) printNl ! + (x includes: 5) printNl ! + + From which we see that x does indeed contain 7, but not 5. Notice +that the answer is printed as `true' or `false'. Once again, the thing +returned is an object--in this case, an object known as a boolean. +We'll look at the use of booleans later, but for now we'll just say +that booleans are nothing more than objects which can only either be +true or false--nothing else. So they're very useful for answers to yes +or no questions, like the ones we just posed. Let's take a look at +just one more kind of data structure: + + +File: gst.info, Node: Dictionaries, Next: Smalltalk dictionary, Prev: Sets, Up: Some classes + +Dictionaries +------------ + +A dictionary is a special kind of collection. With a regular array, +you must index it with integers. With dictionaries, you can index it +with any object at all. Dictionaries thus provide a very powerful way +of correlating one piece of information to another. Their only +downside is that they are somewhat less efficient than simple arrays. +Try the following: + x := Dictionary new. + x at: 'One' put: 1 ! + x at: 'Two' put: 2 ! + x at: 1 put: 'One' ! + x at: 2 put: 'Two' ! + + This fills our dictionary in with some data. The data is actually +stored in pairs of key and value (the key is what you give to `at:'--it +specifies a slot; the value is what is actually stored at that slot). +Notice how we were able to specify not only integers but also strings +as both the key and the value. In fact, we can use any kind of object +we want as either--the dictionary doesn't care. + + Now we can map each key to a value: + (x at: 1) printNl ! + (x at: 'Two') printNl ! + + which prints respectively: + 'One' + 2 + + We can also ask a dictionary to print itself: + x printNl ! + +which prints: + Dictionary (1->'One' 2->'Two' 'One'->1 'Two'->2 ) + +where the first member of each pair is the key, and the second the +value. + + +File: gst.info, Node: Smalltalk dictionary, Next: Closing thoughts, Prev: Dictionaries, Up: Some classes + +Smalltalk dictionary +-------------------- + +If you'll remember from the beginning of the chapter, we started out by +saying: + Smalltalk at: #x put: 0 ! + + This code should look familiar--the `at:put:' message is how we've +been storing information in our own arrays and dictionaries. In a +Smalltalk environment the name `Smalltalk' has been preset to point to +a dictionary (1) which both you and Smalltalk can use. To see how this +sharing works, we'll first try to use a variable which Smalltalk +doesn't know about: + y := 0 ! + + Smalltalk complains because `y' is an unknown variable. Using our +knowledge of dictionaries, and taking advantage of our access to +Smalltalk's dictionary, we can add it ourselves: + + Smalltalk at: #y put: 0 ! + + The only mystery left is why we're using `#y' instead of our usual +quoted string. This is one of those simple questions whose answer runs +surprisingly deep. The quick answer is that `#y' and `'y'' are pretty +much the same, except that the former will always be the same object +each time you use it, whereas the latter can be a new string each time +you do so. (2) + + Now that we've added `y' to Smalltalk's dictionary, we try again: + y := 1 ! + It works! Because you've added an entry for `y', Smalltalk is now +perfectly happy to let you use this new variable. If you have some +spare time, you can print out the entire Smalltalk dictionary with: + Smalltalk inspect ! + + As you might suspect, this will print out quite a large list of +names! If you get tired of watching Smalltalk grind it out, use your +interrupt key (control-C, usually) to bring Smalltalk back to +interactive mode. + + ---------- Footnotes ---------- + + (1) Actually, a SystemDictionary, which is just a Dictionary with +some extra methods to run things when Smalltalk first starts and to do +nice things with a Smalltalk environment + + (2) For more detail, *Note Two flavors of equality:: + + +File: gst.info, Node: Closing thoughts, Prev: Smalltalk dictionary, Up: Some classes + +Closing thoughts +---------------- + +You've seen how Smalltalk provides you with some very powerful data +structures. You've also seen how Smalltalk itself uses these same +facilities to implement the language. But this is only the tip of the +iceberg--Smalltalk is much more than a collection of "neat" facilities +to use. The objects and methods which are automatically available are +only the beginning of the foundation on which you build your +programs--Smalltalk allows you to add your own objects and methods into +the system, and then use them along with everything else. The art of +programming in Smalltalk is the art of looking at your problems in +terms of objects, using the existing object types to good effect, and +enhancing Smalltalk with new types of objects. Now that you've been +exposed to the basics of Smalltalk manipulation, we can begin to look +at this object-oriented technique of programming. + + +File: gst.info, Node: The hierarchy, Next: Creating classes, Prev: Some classes, Up: Tutorial + +The Smalltalk class hierarchy +============================= + +When programming in Smalltalk, you sometimes need to create new kinds +of objects, and define what various messages will do to these objects. +In the next chapter we will create some new classes, but first we need +to understand how Smalltalk organizes the types and objects it contains. +Because this is a pure "concept" chapter, without any actual Smalltalk +code to run, we will keep it short and to the point. + +* Menu: + +* Class Object:: The grandfather of every class +* Animals:: A classic in learning OOP! +* But why:: The bottom line of the class hierarchy + + +File: gst.info, Node: Class Object, Next: Animals, Prev: The hierarchy, Up: The hierarchy + +Class `Object' +-------------- + +Smalltalk organizes all of its classes as a tree hierarchy. At the +very top of this hierarchy is class Object. Following somewhere below +it are more specific classes, such as the ones we've worked +with--strings, integers, arrays, and so forth. They are grouped +together based on their similarities; for instance, types of objects +which may be compared as greater or less than each other fall under a +class known as Magnitude. + + One of the first tasks when creating a new object is to figure out +where within this hierarchy your object falls. Coming up with an +answer to this problem is at least as much art as science, and there +are no hard-and-fast rules to nail it down. We'll take a look at three +kinds of objects to give you a feel for how this organization matters. + + +File: gst.info, Node: Animals, Next: But why, Prev: Class Object, Up: The hierarchy + +Animals +------- + +Imagine that we have three kinds of objects, representing Animals, +Parrots, and Pigs. Our messages will be eat, sing, and snort. Our +first pass at inserting these objects into the Smalltalk hierarchy would +organize them like: + Object + Animals + Parrots + Pigs + + This means that Animals, Parrots, and Pigs are all direct +descendants of Object, and are not descendants of each other. + + Now we must define how each animal responds to each kind of message. + + Animals + eat -> Say "I have now eaten" + sing -> Error + snort -> Error + Parrots + eat -> Say "I have now eaten" + sing -> Say "Tweet" + snort -> Error + Pigs + eat -> Say "I have now eaten"" + sing -> Error + snort -> Say "Oink" + + Notice how we kept having to indicate an action for eat. An +experienced object designer would immediately recognize this as a clue +that we haven't set up our hierarchy correctly. Let's try a different +organization: + Object + Animals + Parrots + Pigs + + That is, Parrots inherit from Animals, and Pigs from Parrots. Now +Parrots inherit all of the actions from Animals, and Pigs from both +Parrots and Animals. Because of this inheritance, we may now define a +new set of actions which spares us the redundancy of the previous set: + Animals + eat -> Say "I have now eaten" + sing -> Error + snort -> Error + Parrots + sing -> Say "Tweet" + Pigs + snort -> Say "Oink" + + Because Parrots and Pigs both inherit from Animals, we have only had +to define the eat action once. However, we have made one mistake in +our class setup--what happens when we tell a Pig to sing? It says +"Tweet", because we have put Pigs as an inheritor of Parrots. Let's +try one final organization: + Object + Animals + Parrots + Pigs + + Now Parrots and Pigs inherit from Animals, but not from each other. +Let's also define one final pithy set of actions: + Animals + eat -> Say "I have eaten" + Parrots + sing -> Say "Tweet" + Pigs + snort -> Say "Oink" + + The change is just to leave out messages which are inappropriate. +If Smalltalk detects that a message is not known by an object or any of +its ancestors, it will automatically give an error--so you don't have +to do this sort of thing yourself. Notice that now sending sing to a +Pig does indeed not say "Tweet"--it will cause a Smalltalk error +instead. + + +File: gst.info, Node: But why, Prev: Animals, Up: The hierarchy + +The bottom line of the class hierarchy +-------------------------------------- + +The goal of the class hierarchy is to allow you to organize objects +into a relationship which allows a particular object to inherit the +code of its ancestors. Once you have identified an effective +organization of types, you should find that a particular technique need +only be implemented once, then inherited by the children below. This +keeps your code smaller, and allows you to fix a bug in a particular +algorithm in only once place--then have all users of it just inherit +the fix. + + You will find your decisions for adding objects change as you gain +experience. As you become more familiar with the existing set of +objects and messages, your selections will increasingly "fit in" with +the existing ones. But even a Smalltalk pro stops and thinks carefully +at this stage, so don't be daunted if your first choices seem difficult +and error-prone. + + +File: gst.info, Node: Creating classes, Next: Creating subclasses, Prev: The hierarchy, Up: Tutorial + +Creating a new class of objects +=============================== + +With the basic techniques presented in the preceding chapters, we're +ready do our first real Smalltalk program. In this chapter we will +construct three new types of objects (known as classes), using the +Smalltalk technique of inheritance to tie the classes together, create +new objects belonging to these classes (known as creating instances of +the class), and send messages to these objects. + + We'll exercise all this by implementing a toy home-finance +accounting system. We will keep track of our overall cash, and will +have special handling for our checking and savings accounts. From this +point on, we will be defining classes which will be used in future +chapters. Since you will probably not be running this whole tutorial +in one Smalltalk session, it would be nice to save off the state of +Smalltalk and resume it without having to retype all the previous +examples. To save the current state of GNU Smalltalk, type: + + ObjectMemory snapshot: 'myimage.im' ! + +and from your shell, to later restart Smalltalk from this "snapshot": + $ gst -I myimage.im + + Such a snapshot currently takes a little more than a megabyte, and +contains all variables, classes, and definitions you have added. + +* Menu: + +* A new class:: Creating a new class +* Documenting the class:: So anybody will know what it's about +* Defining methods:: So it will be useful +* Instance methods:: One of two kind of methods (the others, + class methods, are above) +* A look at our object:: which will sorely show that something + is still missing. +* Moving money around:: Let's make it more fun! +* Next coming:: Yeah, what's next?!? + + +File: gst.info, Node: A new class, Next: Documenting the class, Prev: Creating classes, Up: Creating classes + +Creating a new class +-------------------- + +Guess how you create a new class? This should be getting monotonous by +now--by sending a message to an object. The way we create our first +"custom" class is by sending the following message: + + Object subclass: #Account + instanceVariableNames: 'balance' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + + Quite a mouthful, isn't it? Most people end up customizing their +editor to pop this up at a push of a button. But conceptually, it +isn't really that bad. The Smalltalk variable Object is bound to the +grand-daddy of all classes on the system. What we're doing here is +telling the Object class that we want to add to it a subclass known as +Account. The other parts of the message can be ignored, but +`instanceVariableNames: 'balance'' tells it that each object in this +subclass will have a hidden variable named `balance'. (1) + + ---------- Footnotes ---------- + + (1) In case you're having a hard time making out the font, the " +after `classVariableNames:' and `poolDictionaries:' are a pair of +single quotes--an empty string. + + +File: gst.info, Node: Documenting the class, Next: Defining methods, Prev: A new class, Up: Creating classes + +Documenting the class +--------------------- + +The next step is to associate a description with the class. You do +this by sending a message to the new class: + Account comment: + 'I represent a place to deposit and withdraw money' ! + + A description is associated with every Smalltalk class, and it's +considered good form to add a description to each new class you define. +To get the description for a given class: + (Account comment) printNl ! + + And your string is printed back to you. Try this with class +Integer, too: + (Integer comment) printNl ! + + +File: gst.info, Node: Defining methods, Next: Instance methods, Prev: Documenting the class, Up: Creating classes + +Defining a method for the class +------------------------------- + +We have created a class, but it isn't ready to do any work for us--we +have to define some messages which the class can process first. We'll +start at the beginning by defining methods for instance creation: + !Account class methodsFor: 'instance creation'! + + new + | r | + + r := super new. + r init. + ^r + ! ! + + Again, programming your editor to do this is recommended. The +important points about this are: + + * `Account class' means that we are defining messages which are to + be sent to the Account class itself. + + * `methodsFor: 'instance creation'' is more documentation support; + it says that all of the methods defined will be to support + creating objects of type Account. + + * The text starting with `new' and ending with `! !' defined what + action to take for the message `new'. When you enter this + definition, GNU Smalltalk will simply give you another prompt, but + your method has been compiled in and is ready for use. GNU + Smalltalk is pretty quiet on successful method definitions--but + you'll get plenty of error messages if there's a problem! + + This is also the first example where we've had to use more than one +statement, and thus a good place to present the statement +separator--the `.' period. Like Pascal, and unlike C, statements are +separated rather than terminated. Thus you need only use a `.' when +you have finished one statement and are starting another. This is why +our last statement, `^r', does not have a `.' following. Once again +like Pascal, however, Smalltalk won't complain if your enter a spurious +statement separator after the last statement. + + The best way to describe how this method works is to step through +it. Imagine we sent a message to the new class Account with the +command line: + Account new ! + + `Account' receives the message `new' and looks up how to process +this message. It finds our new definition, and starts running it. The +first line, `| r |', creates a local variable named `r' which can be +used as a placeholder for the objects we create. `r' will go away as +soon as the message is done being processed. + + The first real step is to actually create the object. The line `r +:= super new' does this using a fancy trick. The word `super' stands +for the same object that the message `new' was originally sent to +(remember? it's `Account'), except that when Smalltalk goes to search +for the methods, it starts one level higher up in the hierarchy than +the current level. So for a method in the Account class, this is the +Object class (because the class Account inherits from is Object--go +back and look at how we created the Account class), and the Object +class' methods then execute some code in response to the `#new' +message. As it turns out, Object will do the actual creation of the +object when sent a `#new' message. + + One more time in slow motion: the Account method `#new' wants to do +some fiddling about when new objects are created, but he also wants to +let his parent do some work with a method of the same name. By saying +`r := super new' he is letting his parent create the object, and then +he is attaching it to the variable `r'. So after this line of code +executes, we have a brand new object of type Account, and `r' is bound +to it. You will understand this better as time goes on, but for now +scratch your head once, accept it as a recipe, and keep going. + + We have the new object, but we haven't set it up correctly. +Remember the hidden variable `balance' which we saw in the beginning of +this chapter? `super new' gives us the object with the `balance' field +containing nothing, but we want our balance field to start at 0. (1) + + So what we need to do is ask the object to set itself up. By saying +`r init', we are sending the `init' message to our new Account. We'll +define this method in the next section--for now just assume that +sending the `init' message will get our Account set up. + + Finally, we say `^r'. In English, this is return what r is attached +to. This means that whoever sent to Account the `new' message will get +back this brand new account. At the same time, our temporary variable +`r' ceases to exist. + + ---------- Footnotes ---------- + + (1) And unlike C, Smalltalk draws a distinction between `0' and +`nil'. `nil' is the nothing object, and you will receive an error if +you try to do, say, math on it. It really does matter that we +initialize our instance variable to the number 0 if we wish to do math +on it in the future. + + +File: gst.info, Node: Instance methods, Next: A look at our object, Prev: Defining methods, Up: Creating classes + +Defining an instance method +--------------------------- + +We need to define the `init' method for our Account objects, so that +our `new' method defined above will work. Here's the Smalltalk code: + !Account methodsFor: 'instance initialization'! + init + balance := 0 + ! ! + + It looks quite a bit like the previous method definition, except +that the first one said `Account class methodsFor:...', and ours says +`Account methodsFor:...'. + + The difference is that the first one defined a method for messages +sent directly to `Account', but the second one is for messages which +are sent to Account objects once they are created. + + The method named `init' has only one line, `balance := 0'. This +initializes the hidden variable `balance' (actually called an instance +variable) to zero, which makes sense for an account balance. Notice +that the method doesn't end with `^r' or anything like it: this method +doesn't return a value to the message sender. When you do not specify +a return value, Smalltalk defaults the return value to the object +currently executing. For clarity of programming, you might consider +explicitly returning `self' in cases where you intend the return value +to be used.(1) + + ---------- Footnotes ---------- + + (1) And why didn't the designers default the return value to nil? +Perhaps they didn't appreciate the value of void functions. After all, +at the time Smalltalk was being designed, C didn't even have a void +data type. + + +File: gst.info, Node: A look at our object, Next: Moving money around, Prev: Instance methods, Up: Creating classes + +Looking at our Account +---------------------- + +Let's create an instance of class Account: + Smalltalk at: #a put: (Account new) ! + + Can you guess what this does? The `Smalltalk at: #a put: +' creates a Smalltalk variable. And the `Account new' +creates a new Account, and returns it. So this line creates a Smalltalk +variable named `a', and attaches it to a new Account--all in one line. +Let's take a look at the Account object we just created: + a printNl ! + + It prints: + an Account + + Hmmm... not very informative. The problem is that we didn't tell +our Account how to print itself, so we're just getting the default +system `printNl' method--which tells what the object is, but not what +it contains. So clearly we must add such a method: + !Account methodsFor: 'printing'! + printOn: stream + super printOn: stream. + stream nextPutAll: ' with balance: '. + balance printOn: stream + ! ! + + Now give it a try again: + a printNl ! + +which prints: + an Account with balance: 0 + + This may seem a little strange. We added a new method, printOn:, +and our printNl message starts behaving differently. It turns out that +the printOn: message is the central printing function--once you've +defined it, all of the other printing methods end up calling it. Its +argument is a place to print to--quite often it is the variable +`Transcript'. This variable is usually hooked to your terminal, and +thus you get the printout to your screen. + + The `super printOn: stream' lets our parent do what it did +before--print out what our type is. The `an Account' part of the +printout came from this. `stream nextPutAll: ' with balance: '' +creates the string ` with balance: ', and prints it out to the stream, +too; note that we don't use `printOn:' here because that would enclose +our string within quotes. Finally, `balance printOn: stream' asks +whatever object is hooked to the `balance' variable to print itself to +the stream. We set `balance' to 0, so the 0 gets printed out. + + +File: gst.info, Node: Moving money around, Next: Next coming, Prev: A look at our object, Up: Creating classes + +Moving money around +------------------- + +We can now create accounts, and look at them. As it stands, though, +our balance will always be 0--what a tragedy! Our final methods will +let us deposit and spend money. They're very simple: + + !Account methodsFor: 'moving money'! + spend: amount + balance := balance - amount + ! + deposit: amount + balance := balance + amount + ! ! + + With these methods you can now deposit and spend amounts of money. +Try these operations: + a deposit: 125! + a deposit: 20! + a printNl! + a spend: 10! + a printNl! + + +File: gst.info, Node: Next coming, Prev: Moving money around, Up: Creating classes + +What's next? +------------ + +We now have a generic concept, an "Account". We can create them, check +their balance, and move money in and out of them. They provide a good +foundation, but leave out important information that particular types +of accounts might want. In the next chapter, we'll take a look at +fixing this problem using subclasses. + + +File: gst.info, Node: Creating subclasses, Next: Code blocks (I), Prev: Creating classes, Up: Tutorial + +Two Subclasses for the Account Class +==================================== + +This chapter continues from the previous chapter in demonstrating how +one creates classes and subclasses in Smalltalk. In this chapter we +will create two special subclasses of Account, known as Checking and +Savings. We will continue to inherit the capabilities of Account, but +will tailor the two kinds of objects to better manage particular kinds +of accounts. + +* Menu: + +* The Savings class:: One of the two subclasses we'll put together +* The Checking class:: And here is the other +* Writing checks:: Only in Smalltalk, of course + + +File: gst.info, Node: The Savings class, Next: The Checking class, Prev: Creating subclasses, Up: Creating subclasses + +The Savings class +----------------- + +We create the Savings class as a subclass of Account. It holds money, +just like an Account, but has an additional property that we will +model: it is paid interest based on its balance. We create the class +Savings as a subclass of Account: + Account subclass: #Savings + instanceVariableNames: 'interest' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + + The instance variable `interest' will accumulate interest paid. +Thus, in addition to the `spend:' and `deposit:' messages which we +inherit from our parent, Account, we will need to define a method to +add in interest deposits, and a way to clear the interest variable +(which we would do yearly, after we have paid taxes). We first define +a method for allocating a new account--we need to make sure that the +interest field starts at 0. + !Savings methodsFor: 'initialization'! + init + interest := 0. + ^ super init + ! ! + + Recall that the parent took care of the `new' message, and created a +new object of the appropriate size. After creation, the parent also +sent an `init' message to the new object. As a subclass of Account, +the new object will receive the `init' message first; it sets up its own +instance variable, and then passes the `init' message up the chain to +let its parent take care of its part of the initialization. + + With our new `Savings' account created, we can define two methods +for dealing specially with such an account: + !Savings methodsFor: 'interest'! + interest: amount + interest := interest + amount. + self deposit: amount + ! + clearInterest + | oldinterest | + + oldinterest := interest. + interest := 0. + ^oldinterest + ! ! + + The first method says that we add the `amount' to our running total +of interest. The line `self deposit: amount' tells Smalltalk to send +ourselves a message, in this case `deposit: amount'. This then causes +Smalltalk to look up the method for `deposit:', which it finds in our +parent, Account. Executing this method then updates our overall +balance.(1) + + One may wonder why we don't just replace this with the simpler +`balance := balance + amount'. The answer lies in one of the +philosophies of object-oriented languages in general, and Smalltalk in +particular. Our goal is to encode a technique for doing something once +only, and then re-using that technique when needed. If we had directly +encoded `balance := balance + amount' here, there would have been two +places that knew how to update the balance from a deposit. This may +seem like a useless difference. But consider if later we decided to +start counting the number of deposits made. If we had encoded `balance +:= balance + amount' in each place that needed to update the balance, +we would have to hunt each of them down in order to update the count of +deposits. By sending `self' the message `deposit:', we need only +update this method once; each sender of this message would then +automatically get the correct up-to-date technique for updating the +balance. + + The second method, `clearInterest', is simpler. We create a +temporary variable `oldinterest' to hold the current amount of +interest. We then zero out our interest to start the year afresh. +Finally, we return the old interest as our result, so that our year-end +accountant can see how much we made.(2) + + ---------- Footnotes ---------- + + (1) `self' is much like `super', except that `self' will start +looking for a method at the bottom of the type hierarchy for the +object, while `super' starts looking one level up from the current +level. Thus, using `super' forces inheritance, but `self' will find +the first definition of the message which it can. + + (2) Of course, in a real accounting system we would never discard +such information--we'd probably throw it into a Dictionary object, +indexed by the year that we're finishing. The ambitious might want to +try their hand at implementing such an enhancement. + + +File: gst.info, Node: The Checking class, Next: Writing checks, Prev: The Savings class, Up: Creating subclasses + +The Checking class +------------------ + +Our second subclass of Account represents a checking account. We will +keep track of two facets: + + * What check number we are on + + * How many checks we have left in our checkbook + + We will define this as another subclass of Account: + Account subclass: #Checking + instanceVariableNames: 'checknum checksleft' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + + We have two instance variables, but we really only need to +initialize one of them--if there are no checks left, the current check +number can't matter. Remember, our parent class Account will send us +the `init' message. We don't need our own class-specific `new' +function, since our parent's will provide everything we need. + !Checking methodsFor: 'Initialization'! + init + checksleft := 0. + ^super init + ! ! + + As in Savings, we inherit most of abilities from our superclass, +Account. For initialization, we leave `checknum' alone, but set the +number of checks in our checkbook to zero. We finish by letting our +parent class do its own initialization. + + +File: gst.info, Node: Writing checks, Prev: The Checking class, Up: Creating subclasses + +Writing checks +-------------- + +We will finish this chapter by adding a method for spending money +through our checkbook. The mechanics of taking a message and updating +variables should be familiar: + !Checking methodsFor: 'spending'! + newChecks: number count: checkcount + checknum := number. + checksleft := checkcount + ! + + writeCheck: amount + | num | + + num := checknum. + checknum := checknum + 1. + checksleft := checksleft - 1. + self spend: amount. + ^ num + ! ! + + `newChecks:' fills our checkbook with checks. We record what check +number we're starting with, and update the count of the number of +checks in the checkbook. + + `writeCheck:' merely notes the next check number, then bumps up the +check number, and down the check count. The message `self spend: +amount' resends the message `spend:' to our own object. This causes +its method to be looked up by Smalltalk. The method is then found in +our parent class, Account, and our balance is then updated to reflect +our spending. + + You can try the following examples: + Smalltalk at: #c put: (Checking new) ! + c printNl ! + c deposit: 250 ! + c printNl ! + c newChecks: 100 count: 50 ! + c printNl ! + (c writeCheck: 32) printNl ! + c printNl ! + + For amusement, you might want to add a printOn: message to the +checking class so you can see the checking-specific information. + + In this chapter, you have seen how to create subclasses of your own +classes. You have added new methods, and inherited methods from the +parent classes. These techniques provide the majority of the structure +for building solutions to problems. In the following chapters we will +be filling in details on further language mechanisms and types, and +providing details on how to debug software written in Smalltalk. + + +File: gst.info, Node: Code blocks (I), Next: Code blocks (II), Prev: Creating subclasses, Up: Tutorial + +Code blocks +=========== + +The Account/Saving/Checking example from the last chapter has several +deficiencies. It has no record of the checks and their values. Worse, +it allows you to write a check when there are no more checks--the +Integer value for the number of checks will just calmly go negative! +To fix these problems we will need to introduce more sophisticated +control structures. + +* Menu: + +* Conditions:: Making some decisions +* Iteration:: Making some loops + + +File: gst.info, Node: Conditions, Next: Iteration, Prev: Code blocks (I), Up: Code blocks (I) + +Conditions and decision making +------------------------------ + +Let's first add some code to keep you from writing too many checks. We +will simply update our current method for the Checking class; if you +have entered the methods from the previous chapters, the old definition +will be overridden by this new one. + !Checking methodsFor: 'spending'! + writeCheck: amount + | num | + + (checksleft < 1) + ifTrue: [ ^self error: 'Out of checks' ]. + num := checknum. + checknum := checknum + 1. + checksleft := checksleft - 1. + self spend: amount + ^ num + ! ! + + The two new lines are: + (checksleft < 1) + ifTrue: [ ^self error: 'Out of checks' ]. + + At first glance, this appears to be a completely new structure. +But, look again! The only new construct is the square brackets. + + The first line is a simple boolean expression. `checksleft' is our +integer, as initialized by our Checking class. It is sent the message +`<', and the argument 1. The current number bound to `checksleft' +compares itself against 1, and returns a boolean object telling whether +it is less than 1. + + Now this boolean, which is either true or false, is sent the message +`ifTrue:', with an argument which is called a code block. A code block +is an object, just like any other. But instead of holding a number, or +a Set, it holds executable statements. So what does a boolean do with +a code block which is an argument to a `ifTrue:' message? It depends +on which boolean! If the object is the `true' object, it executes the +code block it has been handed. If it is the `false' object, it returns +without executing the code block. So the traditional conditional +construct has been replaced in Smalltalk with boolean objects which +execute the indicated code block or not, depending on their truth-value. +(1) + + In the case of our example, the actual code within the block sends +an error message to the current object. `error:' is handled by the +parent class Object, and will pop up an appropriate complaint when the +user tries to write too many checks. In general, the way you handle a +fatal error in Smalltalk is to send an error message to yourself +(through the `self' pseudo-variable), and let the error handling +mechanisms inherited from the Object class take over. + + As you might guess, there is also an `ifFalse:' message which +booleans accept. It works exactly like `ifTrue:', except that the +logic has been reversed; a boolean `false' will execute the code block, +and a boolean `true' will not. + + You should take a little time to play with this method of +representing conditionals. You can run your checkbook, but can also +invoke the conditional functions directly: + true ifTrue: [ 'Hello, world!' printNl ] ! + false ifTrue: [ 'Hello, world!' printNl ] ! + true ifFalse: [ 'Hello, world!' printNl ] ! + false ifFalse: [ 'Hello, world!' printNl ] ! + + ---------- Footnotes ---------- + + (1) It is interesting to note that because of the way conditionals +are done, conditional constructs are not part of the Smalltalk +language, instead they are merely a defined behavior for the Boolean +class of objects. + + +File: gst.info, Node: Iteration, Prev: Conditions, Up: Code blocks (I) + +Iteration and collections +------------------------- + +Now that we have some sanity checking in place, it remains for us to +keep a log of the checks we write. We will do so by adding a +Dictionary object to our Checking class, logging checks into it, and +providing some messages for querying our check-writing history. But +this enhancement brings up a very interesting question--when we change +the "shape" of an object (in this case, by adding our dictionary as a +new instance variable to the Checking class), what happens to the +existing class, and its objects? The answer is that the old objects +are mutated to keep their new shape, and all methods are recompiled so +that they work with the new shape. New objects will have exactly the +same shape as old ones, but old objects might happen to be initialized +incorrectly (since the newly added variables will be simply put to +nil). As this can lead to very puzzling behavior, it is usually best +to eradicate all of the old objects, and then implement your changes. + + If this were more than a toy object accounting system, this would +probably entail saving the objects off, converting to the new class, +and reading the objects back into the new format. For now, we'll just +ignore what's currently there, and define our latest Checking class. + + Account subclass: #Checking + instanceVariableNames: 'checknum checksleft history' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + + This is the same syntax as the last time we defined a checking +account, except that we have three instance variables: the `checknum' +and `checksleft' which have always been there, and our new `history' +variable; since we have removed no instance variables, the old method +will be recompiled without errors. We must now feed in our definitions +for each of the messages our object can handle, since we are basically +defining a new class under an old name. + + With our new Checking instance variable, we are all set to start +recording our checking history. Our first change will be in the +handling of the `init' message: + !Checking methodsFor: 'initialization'! + init + checksleft := 0. + history := Dictionary new. + ^ super init + ! ! + + This provides us with a Dictionary, and hooks it to our new +`history' variable. + + Our next method records each check as it's written. The method is a +little more involved, as we've added some more sanity checks to the +writing of checks. + + !Checking methodsFor: 'spending'! + writeCheck: amount + | num | + + "Sanity check that we have checks left in our checkbook" + (checksleft < 1) + ifTrue: [ ^self error: 'Out of checks' ]. + + "Make sure we've never used this check number before" + num := checknum. + (history includesKey: num) + ifTrue: [ ^self error: 'Duplicate check number' ]. + + "Record the check number and amount" + history at: num put: amount. + + "Update our next checknumber, checks left, and balance" + checknum := checknum + 1. + checksleft := checksleft - 1. + self spend: amount. + ^ num + ! ! + + We have added three things to our latest version of `writeCheck:'. +First, since our routine has become somewhat involved, we have added +comments. In Smalltalk, single quotes are used for strings; double +quotes enclose comments. We have added comments before each section of +code. + + Second, we have added a sanity check on the check number we propose +to use. Dictionary objects respond to the `includesKey:' message with +a boolean, depending on whether something is currently stored under the +given key in the dictionary. If the check number is already used, the +`error:' message is sent to our object, aborting the operation. + + Finally, we add a new entry to the dictionary. We have already seen +the `at:put:' message (often found written as `#at:put:', with a sharp +in front of it) at the start of this tutorial. Our use here simply +associates a check number with an amount of money spent.(1) With this, +we now have a working Checking class, with reasonable sanity checks and +per-check information. + + Let us finish the chapter by enhancing our ability to get access to +all this information. We will start with some simple print-out +functions. + + !Checking methodsFor: 'printing'! + printOn: stream + super printOn: stream. + ', checks left: ' printOn: stream. + checksleft printOn: stream. + ', checks written: ' printOn: stream. + (history size) printOn: stream. + ! + check: num + | c | + c := history + at: num + ifAbsent: [ ^self error: 'No such check #' ]. + ^c + ! ! + + There should be very few surprises here. We format and print our +information, while letting our parent classes handle their own share of +the work. When looking up a check number, we once again take advantage +of the fact that blocks of executable statements are an object; in this +case, we are using the `at:ifAbsent:' message supported by the +Dictionary class. As you can probably anticipate, if the requested key +value is not found in the dictionary, the code block is executed. This +allows us to customize our error handling, as the generic error would +only tell the user "key not found". + + While we can look up a check if we know its number, we have not yet +written a way to "riffle through" our collection of checks. The +following function loops over the checks, printing them out one per +line. Because there is currently only a single numeric value under +each key, this might seem wasteful. But we have already considered +storing multiple values under each check number, so it is best to leave +some room for each item. And, of course, because we are simply sending +a printing message to an object, we will not have to come back and +re-write this code so long as the object in the dictionary honors our +`printNl'/`printOn:' messages sages. + + !Checking methodsFor: 'printing'! + printChecks + history associationsDo: [ :assoc | + (assoc key) print. + ' - ' print. + (assoc value) printNl. + ] + ! ! + + We still see a code block object being passed to the dictionary, but +`:assoc |' is something new. A code block can optionally receive +arguments. In this case, the argument is the key/value pair, known in +Smalltalk as an Association. This is the way that a dictionary object +stores its key/value pairs internally. In fact, when you sent an +at:put: message to a dictionary object, the first thing it does is pack +them into a new object from the Association class. If you only wanted +the value portion, you could call history with a `do:' message instead; +if you only wanted the key portion, you could call history with a +`keysDo:' message instead. + + Our code merely uses the `key' and `value' messages to ask the +association for the two values. We then invoke our printing interface +upon them. We don't want a newline until the end, so the `print' +message is used instead. It is pretty much the same as `printNl', +since both implicitly use `Transcript', except it doesn't add a newline. + + It is important that you be clear on the relationship between an +Association and the argument to a code block. In this example, we +passed a `associationsDo:' message to a dictionary. A dictionary +invokes the passed code block with an Association when processing an +associationsDo: message. But code blocks can receive any type of +argument: the type is determined by the code which invokes the code +block; Dictionary's `associationDo:' method, in this case. In the next +chapter we'll see more on how code blocks are used; we'll also look at +how you can invoke code blocks in your own code. + + ---------- Footnotes ---------- + + (1) You might start to wonder what one would do if you wished to +associate two pieces of information under one key. Say, the value and +who the check was written to. There are several ways; the best would +probably be to create a new, custom object which contained this +information, and then store this object under the check number key in +the dictionary. It would also be valid (though probably over-kill) to +store a dictionary as the value--and then store as many pieces of +information as you'd like under each slot! + + +File: gst.info, Node: Code blocks (II), Next: Debugging, Prev: Code blocks (I), Up: Tutorial + +Code blocks, part two +===================== + +In the last chapter, we looked at how code blocks could be used to +build conditional expressions, and how you could iterate across all +entries in a collection.(1) We built our own code blocks, and handed +them off for use by system objects. But there is nothing magic about +invoking code blocks; your own code will often need to do so. This +chapter will shows some examples of loop construction in Smalltalk, and +then demonstrate how you invoke code blocks for yourself. + +* Menu: + +* Integer loops:: Well, Smalltalk too has them +* Intervals:: And of course here's a peculiar way to use them +* Invoking code blocks:: You can do it, too + + ---------- Footnotes ---------- + + (1) The `do:' message is understood by most types of Smalltalk +collections. It works for the Dictionary class, as well as sets, +arrays, strings, intervals, linked lists, bags, and streams. The +`associationsDo:' message works only with dictionaries. The difference +is that `do:' passes only the value portion, while `associationsDo:' +passes the entire key/value pair in an Association object. + + +File: gst.info, Node: Integer loops, Next: Intervals, Prev: Code blocks (II), Up: Code blocks (II) + +Integer loops +------------- + +Integer loops are constructed by telling a number to drive the loop. +Try this example to count from 1 to 20: + 1 to: 20 do: [:x | x printNl ] ! + + There's also a way to count up by more than one: + 1 to: 20 by: 2 do: [:x | x printNl ] ! + + Finally, counting down is done with a negative step: + 20 to: 1 by: -1 do: [:x | x printNl ] ! + + +File: gst.info, Node: Intervals, Next: Invoking code blocks, Prev: Integer loops, Up: Code blocks (II) + +Intervals +--------- + +It is also possible to represent a range of numbers as a standalone +object. This allows you to represent a range of numbers as a single +object, which can be passed around the system. + Smalltalk at: #i put: (Interval from: 5 to: 10) ! + i printNl ! + i do: [:x | x printNl] ! + + As with the integer loops, the Interval class can also represent +steps greater than 1. It is done much like it was for our numeric loop +above: + i := (Interval from: 5 to: 10 by: 2) + i printNl ! + i do: [:x| x printNl] ! + + +File: gst.info, Node: Invoking code blocks, Prev: Intervals, Up: Code blocks (II) + +Invoking code blocks +-------------------- + +Let us revisit the checking example and add a method for scanning only +checks over a certain amount. This would allow our user to find "big" +checks, by passing in a value below which we will not invoke their +function. We will invoke their code block with the check number as an +argument ment; they can use our existing check: message to get the +amount. + + !Checking methodsFor: 'scanning'! + checksOver: amount do: aBlock + history associationsDo: [:assoc| + ((assoc value) > amount) + ifTrue: [aBlock value: (assoc key)] + ] + ! ! + + The structure of this loop is much like our printChecks message sage +from chapter 6. However, in this case we consider each entry, and only +invoke the supplied block if the check's value is greater than the +specified amount. The line: + + ifTrue: [aBlock value: (assoc key)] + +invokes the user-supplied block, passing as an argument the +association's key, which is the check number. The `value:' message, +when received by a code block, causes the code block to execute. Code +blocks take `value', `value:', `value:value:', and `value:value:value:' +messages, so you can pass from 0 to 3 arguments to a code block.(1) + + You might find it puzzling that an association takes a `value' +message, and so does a code block. Remember, each object can do its +own thing with a message. A code block gets run when it receives a +`value' message. An association merely returns the value part of its +key/value pair. The fact that both take the same message is, in this +case, coincidence. + + Let's quickly set up a new checking account with $250 (wouldn't this +be nice in real life?) and write a couple checks. Then we'll see if +our new method does the job correctly: + Smalltalk at: #mycheck put: (Checking new) ! + mycheck deposit: 250 ! + mycheck newChecks: 100 count: 40 ! + mycheck writeCheck: 10 ! + mycheck writeCheck: 52 ! + mycheck writeCheck: 15 ! + mycheck checksOver: 1 do: [:x | x printNl] ! + mycheck checksOver: 17 do: [:x | x printNl] ! + mycheck checksOver: 200 do: [:x | x printNl] ! + + We will finish this chapter with an alternative way of writing our +`checksOver:' code. In this example, we will use the message `select:' +to pick the checks which exceed our value, instead of doing the +comparison ourselves. We can then invoke the new resulting collection +against the user's code block. + + !Checking methodsFor: 'scanning'! + checksOver: amount do: aBlock + | chosen | + chosen := history select: [:amt| amt > amount]. + chosen associationsDo: aBlock + ! ! + + Unlike our previous definition of `checksOver:do:', this one passes +the user's code block the association, not just a check number. How +could this code be rewritten to remedy this, while still using select:? + + Yet, this new behavior can be useful. You can use the same set of +tests that we ran above. Notice that our code block: + [:x| x printNl] + now prints out an Association. This has a very nice effect: with +our old method, we were told which check numbers were above a given +amount; with this new method, we get the check number and amount in the +form of an Association. When we print an association, since the key is +the check number and the value is the check amount, we get a list of +checks over the amount in the format: + CheckNum -> CheckVal + + ---------- Footnotes ---------- + + (1) There is also a `valueWithArguments:' message which accepts an +array holding as many arguments as you would like. + + +File: gst.info, Node: Debugging, Next: More subclassing, Prev: Code blocks (II), Up: Tutorial + +When Things Go Bad +================== + +So far we've been working with examples which work the first time. If +you didn't type them in correctly, you probably received a flood of +unintelligible complaints. You probably ignored the complaints, and +typed the example again. + + When developing your own Smalltalk code, however, these messages are +the way you find out what went wrong. Because your objects, their +methods, the error printout, and your interactive environment are all +contained within the same Smalltalk session, you can use these error +messages to debug your code using very powerful techniques. + +* Menu: + +* Simple errors:: Those that only happen in examples +* Nested calls:: Those that actually happen in real life +* Looking at objects:: Trying to figure it out + + +File: gst.info, Node: Simple errors, Next: Nested calls, Prev: Debugging, Up: Debugging + +A Simple Error +-------------- + +First, let's take a look at a typical error. Type: + 7 plus: 1 ! + + This will print out: + 7 did not understand selector 'plus:' + + UndefinedObject>>#executeStatements + + The first line is pretty simple; we sent a message to the `7' object +which was not understood; not surprising since the `plus:' operation +should have been `+'. Then there are a few lines of gobbledegook: just +ignore them, they reflect the fact that the error passed throgh GNU +Smalltalk's exception handling system. The remaining line reflect the +way the GNU Smalltalk invokes code which we type to our command prompt; +it generates a block of code which is invoked via an internal method +`executeStatements' defined in class Object and evaluated like `nil +executeStatements' (nil is an instance of UndefinedObject). Thus, this +output tells you that you directly typed a line which sent an invalid +message to the `7' object. + + All the error output but the first line is actually a stack +backtrace. The most recent call is the one nearer the top of the +screen. In the next example, we will cause an error which happens +deeper within an object. + + +File: gst.info, Node: Nested calls, Next: Looking at objects, Prev: Simple errors, Up: Debugging + +Nested Calls +------------ + +Type the following lines: + Smalltalk at: #x put: (Dictionary new) ! + x at: 1 ! + + The error you receive will look like: + Dictionary new: 31 "<0x33788>" error: key not found + ...blah blah... + Dictionary>>#error: + [] in Dictionary>>#at: + [] in Dictionary>>#at:ifAbsent: + Dictionary(HashedCollection)>>#findIndex:ifAbsent: + Dictionary>>#at:ifAbsent: + Dictionary>>#at: + UndefinedObject(Object)>>#executeStatements + + The error itself is pretty clear; we asked for something within the +Dictionary which wasn't there. The object which had the error is +identified as `Dictionary new: 31'. A Dictionary's default size is 31; +thus, this is the object we created with `Dictionary new'. + + The stack backtrace shows us the inner structure of how a Dictionary +responds to the `#at:' message. Our hand-entered command causes the +usual entry for `UndefinedObject(Object)'. Then we see a Dictionary +object responding to an `#at:' message (the "Dictionary>>#at:" line). +This code called the object with an `#at:ifAbsent:' message. All of a +sudden, Dictionary calls that strange method `#findIndex:ifAbsent:', +which evaluates two blocks, and then the error happens. + + To understand this better, it is necessary to know that a very +common way to handle errors in Smalltalk is to hand down a block of +code which will be called when an error occurs. For the Dictionary +code, the `at:' message passes in a block of code to the at:ifAbsent: +code to be called when `at:ifAbsent:' can't find the given key, and +`at:ifAbsent:' does the same with `findIndex:ifAbsent:'. Thus, without +even looking at the code for Dictionary itself, we can guess something +of the code for Dictionary's implementation: + + findIndex: key ifAbsent: errCodeBlock + ...look for key... + (keyNotFound) ifTrue: [ ^(errCodeBlock value) ] + ... + + at: key + ^self at: key ifAbsent: [^self error: 'key not found'] + + Actually, `findIndex:ifAbsent:' lies in class HashedCollection, as +that `Dictionary(HashedCollection)' in the backtrace says. + + It would be nice if each entry on the stack backtrace included +source line numbers. Unfortunately, at this point GNU Smalltalk doesn't +provide this feature. Of course, you have the source code available... + + +File: gst.info, Node: Looking at objects, Prev: Nested calls, Up: Debugging + +Looking at Objects +------------------ + +When you are chasing an error, it is often helpful to examine the +instance variables of your objects. While strategic calls to `printNl' +will no doubt help, you can look at an object without having to write +all the code yourself. The `inspect' message works on any object, and +dumps out the values of each instance variable within the object.(1) + + Thus: + Smalltalk at: #x put: (Interval from: 1 to: 5) ! + x inspect ! + + displays: + An instance of Interval + start: 1 + stop: 5 + step: 1 + contents: [ + [1]: 1 + [2]: 2 + [3]: 3 + [4]: 4 + [5]: 5 + ] + + We'll finish this chapter by emphasizing a technique which has +already been covered: the use of the `error:' message in your own +objects. As you saw in the case of Dictionary, an object can send +itself an `error:' message with a descriptive string to abort execution +and dump a stack backtrace. You should plan on using this technique in +your own objects. It can be used both for explicit user-caused errors, +as well as in internal sanity checks. + + ---------- Footnotes ---------- + + (1) When using the Blox GUI, it actually pops up a so-called +Inspector window. + + +File: gst.info, Node: More subclassing, Next: Streams, Prev: Debugging, Up: Tutorial + +Coexisting in the Class Hierarchy +================================= + +The early chapters of this tutorial discussed classes in one of two +ways. The "toy" classes we developed were rooted at Object; the +system-provided classes were treated as immutable entities. While one +shouldn't modify the behavior of the standard classes lightly, +"plugging in" your own classes in the right place among their +system-provided brethren can provide you powerful new classes with very +little effort. + + This chapter will create two complete classes which enhance the +existing Smalltalk hierarchy. The discussion will start with the issue +of where to connect our new classes, and then continue onto +implementation. Like most programming efforts, the result will leave +many possibilities for improvements. The framework, however, should +begin to give you an intuition of how to develop your own Smalltalk +classes. + +* Menu: + +* The existing hierarchy:: We've been talking about it for a while, + so here it is at last +* Playing with Arrays:: Again. +* New kinds of Numbers:: Sounds interesting, doesn't it? +* Inheritance and Polymorphism:: Sounds daunting, doesn't it? + + +File: gst.info, Node: The existing hierarchy, Next: Playing with Arrays, Prev: More subclassing, Up: More subclassing + +The Existing Class Hierarchy +---------------------------- + +To discuss where a new class might go, it is helpful to have a map of +the current classes. The following is the basic class hierarchy of GNU +Smalltalk. Indentation means that the line inherits from the earlier +line with one less level of indentation.(1). + + Object + Behavior + ClassDescription + Class + Metaclass + BlockClosure + Boolean + False + True + Browser + CFunctionDescriptor + CObject + CAggregate + CArray + CPtr + CCompound + CStruct + CUnion + CScalar + CChar + CDouble + CFloat + CInt + CLong + CShort + CSmalltalk + CString + CUChar + CByte + CBoolean + CUInt + CULong + CUShort + Collection + Bag + MappedCollection + SequenceableCollection + ArrayedCollection + Array + ByteArray + WordArray + LargeArrayedCollection + LargeArray + LargeByteArray + LargeWordArray + CompiledCode + CompiledMethod + CompiledBlock + Interval + CharacterArray + String + Symbol + LinkedList + Semaphore + OrderedCollection + RunArray + SortedCollection + HashedCollection + Dictionary + IdentityDictionary + MethodDictionary + RootNamespace + Namespace + SystemDictionary + Set + IdentitySet + ContextPart + BlockContext + MethodContext + CType + CArrayCType + CPtrCType + CScalarCType + Delay + DLD + DumperProxy + AlternativeObjectProxy + NullProxy + VersionableObjectProxy + PluggableProxy + File + Directory + FileSegment + Link + Process + SymLink + Magnitude + Association + Character + Date + LargeArraySubpart + Number + Float + Fraction + Integer + LargeInteger + LargeNegativeInteger + LargePositiveInteger + LargeZeroInteger + SmallInteger + Time + Memory + Message + DirectedMessage + MethodInfo + NullProxy + PackageLoader + Point + ProcessorScheduler + Rectangle + SharedQueue + Signal + Exception + Error + Halt + ArithmeticError + ZeroDivide + MessageNotUnderstood + UserBreak + Notification + Warning + Stream + ObjectDumper + PositionableStream + ReadStream + WriteStream + ReadWriteStream + ByteStream + FileStream + Random + TextCollector + TokenStream + TrappableEvent + CoreException + ExceptionCollection + UndefinedObject + ValueAdaptor + NullValueHolder + PluggableAdaptor + DelayedAdaptor + ValueHolder + + While initially a daunting list, you should take the time to hunt +down the classes we've examined in this tutorial so far. Notice, for +instance, how an Array is a subclass below the SequenceableCollection +class. This makes sense; you can walk an Array from one end to the +other. By contrast, notice how this is not true for Sets: it doesn't +make sense to walk a Set from one end to the other. + + A little puzzling is the relationship of a Bag to a Set, since a Bag +is actually a Set supporting multiple occurrences of its elements. The +answer lies in the purpose of both a Set and a Bag. Both hold an +unordered collection of objects; but a Bag needs to be optimized for +the case when an object has possibly thousands of occurrences, while a +Set is optimized for checking object uniqueness. That's why Set being +a subclass or Bag, or the other way round, would be a source of +problems in the actual implementation of the class. Currently a Bag +holds a Dictionary associating each object to each count; it would be +feasible however to have Bag as a subclass of HashedCollection and a +sibling of Set. + + Look at the treatment of numbers--starting with the class Magnitude. +While numbers can indeed be ordered by _less than_, _greater than_, +and so forth, so can a number of other objects. Each subclass of +Magnitude is such an object. So we can compare characters with other +characters, dates with other dates, and times with other times, as well +as numbers with numbers. + + Finally, you will have probably noted some pretty strange classes, +representing language entities that you might have never thought of as +objects themselves: Namespace, Class and even CompiledMethod. They are +the base of Smalltalk's "reflection" mechanism which will be discussed +later, in *Note The truth on metaclasses: Why is #new there?!?. + + ---------- Footnotes ---------- + + (1) This listing is courtesy of the printHierarchy method supplied +by GNU Smalltalk author Steve Byrne. It's in the `kernel/Browser.st' +file. + + +File: gst.info, Node: Playing with Arrays, Next: New kinds of Numbers, Prev: The existing hierarchy, Up: More subclassing + +Playing with Arrays +------------------- + +Imagine that you need an array, but alas you need that if an index is +out of bounds, it returns nil. You could modify the Smalltalk +implementation, but that might break some code in the image, so it is +not practical. Why not add a subclass? + + Array variableSubclass: #NiledArray + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + + !NiledArray methodsFor: 'bounds checking'! + boundsCheck: index + ^(index < 1) | (index > (self basicSize)) + ! ! + + !NiledArray methodsFor: 'basic'! + at: index + ^(self boundsCheck: index) + ifTrue: [ nil ] + ifFalse: [ super at: index ] + + ! + at: index put: val + ^(self boundsCheck: index) + ifTrue: [ val ] + ifFalse: [ super at: index put: val ] + ! ! + + Much of the machinery of adding a class should be familiar. Instead +of our usual `subclass:' message, we use a `variableSubclass:' message. +This reflects the underlying structure of an `Array' object; we'll +delay discussing this until the chapter on the nuts and bolts of +arrays. In any case, we inherit all of the actual knowledge of how to +create arrays, reference them, and so forth. All that we do is +intercept at: and at:put: messages, call our common function to +validate the array index, and do something special if the index is not +valid. The way that we coded the bounds check bears a little +examination. + + Making a first cut at coding the bounds check, you might have coded +the bounds check in NiledArray's methods twice (once for `at:', and +again for `at:put:'. As always, it's preferable to code things once, +and then re-use them. So we instead add a method for bounds checking +`boundsCheck:', and use it for both cases. If we ever wanted to +enhance the bounds checking (perhaps emit an error if the index is < 1 +and answer nil only for indices greater than the array size?), we only +have to change it in one place. + + The actual math for calculating whether the bounds have been +violated is a little interesting. The first part of the expression +returned by the method: + (index < 1) | (index > (self basicSize)) + +is true if the index is less than 1, otherwise it's false. This part +of the expression thus becomes the boolean object true or false. The +boolean object then receives the message `|', and the argument `(index +> (self basicSize))'. `|' means "or"--we want to OR together the two +possible out-of-range checks. What is the second part of the +expression? (1) + + `index' is our argument, an integer; it receives the message `>', +and thus will compare itself to the value `self basicSize' returns. +While we haven't covered the underlying structures Smalltalk uses to +build arrays, we can briefly say that the `#basicSize' message returns +the number of elements the Array object can contain. So the index is +checked to see if it's less than 1 (the lowest legal Array index) or +greater than the highest allocated slot in the Array. If it is either +(the `|' operator!), the expression is true, otherwise false. + + From there it's downhill; our boolean object, returned by +`boundsCheck:', receives the `ifTrue:ifFalse:' message, and a code +block which will do the appropriate thing. Why do we have `at:put:' +return val? Well, because that's what it's supposed to do: look at +every implementor of `at:put' or `at:' and you'll find that it returns +its second parameter. In general, the result is discarded; but one +could write a program which uses it, so we'll write it this way anyway. + + ---------- Footnotes ---------- + + (1) Smalltalk also offers an `or:' message, which is different in a +subtle way from `|'. or: takes a code block, and only invokes the code +block if it's necessary to determine the value of the expression. This +is analogous to the guaranteed C semantic that `||' evaluates +left-to-right only as far as needed. We could have written the +expressions as `((index < 1) or: [index > (self basicSize)])'. Since +we expect both sides of or: to be false most of the time, there isn't +much reason to delay evaluation of either side in this case. + + +File: gst.info, Node: New kinds of Numbers, Next: Inheritance and Polymorphism, Prev: Playing with Arrays, Up: More subclassing + +Adding a New Kind of Number +--------------------------- + +If we were programming an application which did a large amount of +complex math, we could probably manage it with a number of two-element +arrays. But we'd forever be writing in-line code for the math and +comparisons; it would be much easier to just implement an object class +to support the complex numeric type. Where in the class hierarchy +would it be placed? + + You've probably already guessed--but let's step down the hierarchy +anyway. Everything inherits from Object, so that's a safe starting +point. Complex numbers can not be compared with `<' and `>', and yet +we strongly suspect that, since they are numbers, we should place them +under the Number class. But Number inherits from Magnitude--how do we +resolve this conflict? A subclass can place itself under a superclass +which allows some operations the subclass doesn't wish to allow. All +that you must do is make sure you intercept these messages and return +an error. So we will place our new Complex class under Number, and +make sure to disallow comparisons. + + One can reasonably ask whether the real and imaginary parts of our +complex number will be integer or floating point. In the grand +Smalltalk tradition, we'll just leave them as objects, and hope that +they respond to numeric messages reasonably. If they don't, the user +will doubtless receive errors and be able to track back their mistake +with little fuss. + + We'll define the four basic math operators, as well as the (illegal) +relationals. We'll add `printOn:' so that the printing methods work, +and that should give us our Complex class. The class as presented +suffers some limitations, which we'll cover later in the chapter. + + Number subclass: #Complex + instanceVariableNames: 'realpart imagpart' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + !Complex class methodsFor: 'creating'! + new + ^self error: 'use real:imaginary:' + ! + new: ignore + ^self new + ! + real: r imaginary: i + ^(super new) setReal: r setImag: i + ! ! + + !Complex methodsFor: 'creating--private'! + setReal: r setImag: i + realpart := r. + imagpart := i. + ^self + ! ! + + !Complex methodsFor: 'basic'! + real + ^realpart + ! + imaginary + ^imagpart + ! ! + + !Complex methodsFor: 'math'! + + val + ^Complex real: (realpart + val real) + imaginary: (imagpart + val imaginary) + ! + - val + ^Complex real: (realpart - val real) + imaginary: (imagpart - val imaginary) + ! + * val + ^Complex real: (realpart * val real) - (imagpart * val imaginary) + imaginary: (imagpart * val real) + (realpart * val imaginary) + ! + / val + | d r i | + d := (val real * val real) + (val imaginary * val imaginary). + r := ((realpart * val real) + (imagpart * val imaginary)). + i := ((imagpart * val real) - (realpart * val imaginary)). + ^Complex real: r / d imaginary: i / d + ! ! + + !Complex methodsFor: 'comparison'! + + = val + ^(realpart = val real) & (imagpart = val imaginary) + ! + > val + ^self shouldNotImplement + ! + >= val + ^self shouldNotImplement + ! + < val + ^self shouldNotImplement + ! + <= val + ^self shouldNotImplement + ! ! + + !Complex methodsFor: 'printing'! + printOn: aStream + aStream nextPut: $(. + realpart printOn: aStream. + aStream nextPut: $,. + imagpart printOn: aStream. + aStream nextPut: $) + ! ! + + There should be surprisingly little which is actually new in this +example. The printing method uses both printOn: as well as nextPut: to +do its printing. While we haven't covered it, it's pretty clear that +`$(' generates the ASCII character `(' as an object, and nextPut: puts +its argument as the next thing on the stream. + + The math operations all generate a new object, calculating the real +and imaginary parts, and invoking the Complex class to create the new +object. Our creation code is a little more compact than earlier +examples; instead of using a local variable to name the newly-created +object, we just use the return value and send a message directly to the +new object. Our initialization code explicitly returns self; what +would happen if we left this off? + + +File: gst.info, Node: Inheritance and Polymorphism, Prev: New kinds of Numbers, Up: More subclassing + +Inheritance and Polymorphism +---------------------------- + +This is a good time to look at what we've done with the two previous +examples at a higher level. With the NiledArray class, we inherited +almost all of the functionality ality of arrays, with only a little bit +of code added to address our specific needs. While you may have not +thought to try it, all the existing methods for an Array continue to +work without further effort-you might find it interesting to ponder why +the following still works: + Smalltalk at: #a put: (NiledArray new: 10) ! + a at: 5 put: 1234 ! + a do: [:i| i printNl ] ! + + The strength of inheritance is that you focus on the incremental +changes you make; the things you don't change will generally continue +to work. + + In the Complex class, the value of polymorphism was exercised. A +Complex number responds to exactly the same set of messages as any +other number. If you had handed this code to someone, they would know +how to do math with Complex numbers without further instruction. +Compare this with C, where a complex number package would require the +user to first find out if the complex-add function was complex_plus(), +or perhaps complex_add(), or add_complex(), or... + + However, one glaring deficiency is present in the Complex class: +what happens if you mix normal numbers with Complex numbers? +Currently, the Complex class assumes that it will only interact with +other Complex numbers. But this is unrealistic: mathematically, a +"normal" number is simply one with an imaginary part of 0. Smalltalk +was designed to allow numbers to coerce themselves into a form which +will work with other numbers. + + The system is clever and requires very little additional code. +Unfortunately, it would have tripled the amount of explanation +required. If you're interested in how coercion works in GNU Smalltalk, +you should find the Smalltalk library source, and trace back the +execution of the `retry:coercing:' messages. You want to consider the +value which the `generality' message returns for each type of number. +Finally, you need to examine the `coerce:' handling in each numeric +class. + + +File: gst.info, Node: Streams, Next: Behind the scenes, Prev: More subclassing, Up: Tutorial + +Smalltalk Streams +================= + +Our examples have used a mechanism extensively, even though we haven't +discussed it yet. The Stream class provides a framework for a number +of data structures, including input and output functionality, queues, +and endless sources of dynamically-generated data. A Smalltalk stream +is quite similar to the UNIX streams you've used from C. A stream +provides a sequential view to an underlying resource; as you read or +write elements, the stream position advances until you finally reach +the end of the underlying medium. Most streams also allow you to set +the current position, providing random access to the medium. + +* Menu: + +* The output stream:: Which, even though you maybe didn't know + it, we've used all the time +* Your own stream:: Which, instead, is something new +* Files:: Which are streams too +* Dynamic Strings:: A useful application of Streams + + +File: gst.info, Node: The output stream, Next: Your own stream, Prev: Streams, Up: Streams + +The Output Stream +----------------- + +The examples in this book all work because they write their output to +the `Transcript' stream. Each class implements the `printOn:' method, +and writes its output to the supplied stream. The `printNl' method all +objects use is simply to send the current object a `printOn:' message +whose argument is `Transcript' (by default attached to the standard +output stream found in the `stdout' global). You can invoke the +standard output stream directly: + 'Hello, world' printOn: stdout ! + stdout inspect ! + +or you can do the same for the Transcript, which is yet another stream: + 'Hello, world' printOn: stdout ! + Transcript inspect ! + +the last `inspect' statement will show you how the `Transcript' is +linked to `stdout'(1). + + ---------- Footnotes ---------- + + (1) Try executing it under Blox, where the Transcript is linked to +the omonymous window! + + +File: gst.info, Node: Your own stream, Next: Files, Prev: The output stream, Up: Streams + +Your Own Stream +--------------- + +Unlike a pipe you might create in C, the underlying storage of a Stream +is under your control. Thus, a Stream can provide an anonymous buffer +of data, but it can also provide a stream-like interpretation to an +existing array of data. Consider this example: + Smalltalk at: #a put: (Array new: 10) ! + a at: 4 put: 1234 ! + a at: 9 put: 5678 ! + Smalltalk at: #s put: (ReadWriteStream on: a) ! + s inspect ! + s position: 1 ! + s inspect ! + s nextPut: 11; nextPut: 22 ! + (a at: 1) printNl ! + a do: [:x| x printNl] ! + s position: 2 ! + s do: [:x| x printNl] ! + s position: 5 ! + s do: [:x| x printNl] ! + s inspect ! + + The key is the `on:' message; it tells a stream class to create +itself in terms of the existing storage. Because of polymorphism, the +object specified by on: does not have to be an Array; any object which +responds to numeric at: messages can be used. If you happen to have +the NiledArray class still loaded from the previous chapter, you might +try streaming over that kind of array instead. + + You're wondering if you're stuck with having to know how much data +will be queued in a Stream at the time you create the stream. If you +use the right class of stream, the answer is no. A ReadStream provides +read-only access to an existing collection. You will receive an error +if you try to write to it. If you try to read off the end of the +stream, you will also get an error. + + By contrast, WriteStream and ReadWriteStream (used in our example) +will tell the underlying collection to grow when you write off the end +of the existing collection. Thus, if you want to write several +strings, and don't want to add up their lengths yourself: + + Smalltalk at: #s put: (ReadWriteStream on: (String new)) ! + s inspect ! + s nextPutAll: 'Hello, '! + s inspect ! + s nextPutAll: 'world'! + s inspect ! + s position: 1 ! + s inspect ! + s do: [:c | stdout nextPut: c ] ! + (s contents) printNl ! + + In this case, we have used a String as the collection for the +Stream. The `printOn:' messages add bytes to the initially empty +string. Once we've added the data, you can continue to treat the data +as a stream. Alternatively, you can ask the stream to return to you +the underlying object. After that, you can use the object (a String, +in this example) using its own access methods. + + There are many amenities available on a stream object. You can ask +if there's more to read with `atEnd'. You can query the position with +`position', and set it with `position:'. You can see what will be read +next with `peek', and you can read the next element with `next'. + + In the writing direction, you can write an element with `nextPut:'. +You don't need to worry about objects doing a `printOn:' with your +stream as a destination; this operation ends up as a sequence of +`nextPut:' operations to your stream. If you have a collection of +things to write, you can use `nextPutAll:' with the collection as an +argument; each member of the collection will be written onto the +stream. If you want to write an object to the stream several times, you +can use `next:put:', like this: + + Smalltalk at: #s put: (ReadWriteStream on: (Array new: 0)) ! + s next: 4 put: 'Hi!' ! + s position: 1 ! + s do: [:x | x printNl] ! + + +File: gst.info, Node: Files, Next: Dynamic Strings, Prev: Your own stream, Up: Streams + +Files +----- + +Streams can also operate on files. If you wanted to dump the file +`/etc/passwd' to your terminal, you could create a stream on the file, +and then stream over its contents: + Smalltalk at: #f put: (FileStream + open: '/etc/passwd' + mode: FileStream read) ! + f do: [ :c | Transcript nextPut: c ] ! + f position: 30 ! + 25 timesRepeat: [ Transcript nextPut: (f next) ] ! + f close ! + + and, of course, you can load Smalltalk source code into your image: + FileStream fileIn: '/users/myself/src/source.st' ! + + +File: gst.info, Node: Dynamic Strings, Prev: Files, Up: Streams + +Dynamic Strings +--------------- + +Streams provide a powerful abstraction for a number of data structures. +Concepts like current position, writing the next position, and +changing the way you view a data structure when convenient combine to +let you write compact, powerful code. The last example is taken from +the actual Smalltalk source code--it shows a general method for making +an object print itself onto a string. + + printString + | stream | + stream := WriteStream on: (String new). + self printOn: stream. + ^stream contents + ! + + This method, residing in Object, is inherited by every class in +Smalltalk. The first line creates a WriteStream which stores on a +String whose length is currently 0 (`String new' simply creates an +empty string. It then invokes the current object with `printOn:'. As +the object prints itself to "stream", the String grows to accommodate +new characters. When the object is done printing, the method simply +returns the underlying string. + + As we've written code, the assumption has been that printOn: would +go to the terminal. But replacing a stream to a file like `/dev/tty' +with a stream to a data structure (`String new') works just as well. +The last line tells the Stream to return its underlying collection, +which will be the string which has had all the printing added to it. +The result is that the `printString' message returns an object of the +String class whose contents are the printed representation of the very +object receiving the message. + + +File: gst.info, Node: Behind the scenes, Next: And now, Prev: Streams, Up: Tutorial + +Some nice stuff from the Smalltalk innards +========================================== + +Just like with everything else, you'd probably end up asking yourself: +how's it done? So here's this chapter, just to wheten your appetite... + +* Menu: + +* Inside Arrays:: Delving into something old +* Two flavors of equality:: Delving into something new +* Why is #new there?!?:: Or, the truth on metaclasses +* Performance:: Hmm... they told me Smalltalk is slow... + + +File: gst.info, Node: Inside Arrays, Next: Two flavors of equality, Prev: Behind the scenes, Up: Behind the scenes + +How Arrays Work +--------------- + +Smalltalk provides a very adequate selection of predefined classes from +which to choose. Eventually, however, you will find the need to code a +new basic data structure. Because Smalltalk's most fundamental storage +allocation facilities are arrays, it is important that you understand +how to use them to gain efficient access to this kind of storage. + + The Array Class. Our examples have already shown the Array class, and +its use is fairly obvious. For many applications, it will fill all +your needs--when you need an array in a new class, you keep an instance +variable, allocate a new Array and assign it to the variable, and then +send array accesses via the instance variable. + + This technique even works for string-like objects, although it is +wasteful of storage. An Array object uses a Smalltalk pointer for each +slot in the array; its exact size is transparent to the programmer, but +you can generally guess that it'll be roughly the word size of your +machine. (1) For storing an array of characters, therefore, an Array +works but is inefficient. + + Arrays at a Lower Level. So let's step down to a lower level of data +structure. A ByteArray is much like an Array, but each slot holds only +an integer from 0 to 255-and each slot uses only a byte of storage. If +you only needed to store small quantities in each array slot, this +would therefore be a much more efficient choice than an Array. As you +might guess, this is the type of array which a String uses. + + Aha! But when you go back to chapter 9 and look at the Smalltalk +hierarchy, you notice that String does not inherit from ByteArray. To +see why, we must delve down yet another level, and arrive at the basic +methods for creating a class. + + For most example classes, we've used the message: + subclass: + instanceVariableNames: + classVariableNames: + poolDictionaries: + category: + + But when we implemented our CheckedArray example, we used +`variableSubclass:' instead of just `subclass:'. The choice of these +two kinds of class creation (and two more we'll show shortly) defines +the fundamental structure of Smalltalk objects created within a given +class. Let's consider the differences in the next sub-sections. + + subclass:. This kind of class creation specifies the simplest +Smalltalk object. The object consists only of the storage needed to +hold the instance variables. In C, this would be a simple structure +with zero or more scalar fields.(2). + + variableSubclass:. All the other types of class are a superset of a +`subclass:'. Storage is still allocated for any instance variables, +but the objects of the class must be created with a `new:' message. +The number passed as an argument to `new:' causes the new object, in +addition to the space for instance variables, to also have that many +slots of unnamed (indexed) storage allocated. The analog in C would be +to have a dynamically allocated structure with some scalar fields, +followed at its end by a array of pointers. + + variableByteSubclass:. This is a special case of +`variableSubclass:'; the storage age allocated as specified by new: is +an array of bytes. The analog in C would be a dynamically allocated +structure with scalar fields(3), followed by a array of `char'. + + variableWordSubclass:. Once again, this is a special case of +`variableSubclass:'; the storage age allocated as specified by new: is +an array of C signed longs, which are represented in Smalltalk by +Integer objects. The analog in C would be a dynamically allocated +structure with scalar fields, followed by an array of `long'. This +kind of subclass is only used in a few places in Smalltalk. + + Accessing These New Arrays. You already know how to access instance +variables--by name. But there doesn't seem to be a name for this new +storage. The way an object accesses it is to send itself array-type +messages like `at:', `at:put:', and so forth. + + The problem is when an object wants to add a new level of +interpretation to the at: and at:put: messages. Consider a +Dictionary--it is a `variableSubclass:' type of object, but its `at:' +message is in terms of a key, not an integer index of its storage. +Since it has redefined the `at:' message, how does it access its +fundamental storage? + + The answer is that Smalltalk has defined `basicAt:' and +`basicAt:put:', which will access the basic storage even when the `at:' +and `at:put:' messages have been defined to provide a different +abstraction. + + An Example. This can get pretty confusing in the abstract, so let's +do an example to show how it's pretty simple in practice. Smalltalk +arrays tend to start at 1; let's define an array type whose permissible +range is arbitrary. + + ArrayedCollection variableSubclass: 'RangedArray' + instanceVariableNames: 'base' + classVariableNames: '' + poolDictionaries: '' + category: nil ! + RangedArray comment: 'I am an Array whose base is arbitrary' ! + !RangedArray class methodsFor: 'creation'! + new + ^self error: 'Use new:base:' + ! + new: size + ^self new: size base: 1 + ! + new: size base: b + ^(super new: size) init: b + ! ! + !RangedArray methodsFor: 'init'! + init: b + base := (b - 1). "- 1 because basicAt: works with a 1 base" + ^self + ! ! + !RangedArray methodsFor: 'basic'! + rangeCheck: i + ((i <= base) | (i > (base + (self basicSize)))) ifTrue: [ + 'Bad index value: ' printOn: stderr. + i printOn: stderr. + (Character nl) printOn: stderr. + ^self error: 'illegal index' + ] + ! + at: i + self rangeCheck: i. + ^self basicAt: (i-base) + ! + at: i put: v + self rangeCheck: i. + ^self basicAt: (i-base) put: v + ! ! + + The code has two parts; an initialization, which simply records what +index you wish the array to start with, and the at: messages, which +adjust the requested index so that the underlying storage receives its +1-based index instead. We've included a range check; its utility will +demonstrate itself in a moment: + Smalltalk at: #a put: (RangedArray new: 10 base: 5) ! + a at: 5 put: 0 ! + a at: 4 put: 1 ! + + Since 4 is below our base of 5, a range check error occurs. But +this check can catch more than just our own misbehavior! + + a do: [:x| x printNl] ! + + Our do: message handling is broken! The stack backtrace pretty much +tells the story: + + RangedArray>>#rangeCheck: + RangedArray>>#at: + RangedArray>>#do: + + Our code received a do: message. We didn't define one, so we +inherited the existing do: handling. We see that an Integer loop was +constructed, that a code block was invoked, and that our own at: code +was invoked. When we range checked, we trapped an illegal index. Just +by coincidence, this version of our range checking code also dumps the +index. We see that do: has assumed that all arrays start at 1. + + The immediate fix is obvious; we implement our own do: + !RangedArray methodsFor: 'basic'! + do: aBlock + 1 to: (self basicSize) do: [:x| + aBlock value: (self basicAt: x) + ] + ! ! + + But the issues start to run deep. If our parent class believed that +it knew enough to assume a starting index of 1(4), why didn't it also +assume that it could call basicAt:? The answer is that of the two +choices, the designer of the parent class chose the one which was less +likely to cause trouble; in fact all standard Smalltalk collections do +have indices starting at 1, yet not all of them are implemented so that +calling basicAt: would work.(5) + + Object-oriented methodology says that one object should be entirely +opaque to another. But what sort of privacy should there be between a +higher class and its subclasses? How many assumption can a subclass +make about its superclass, and how many can the superclass make before +it begins infringing on the sovereignty of its subclasses? Alas, there +are rarely easy answers. + + Basic Allocation. In this chapter, we've seen the fundamental +mechanisms used to allocate and index storage. When the storage need +not be accessed with peak efficiency, you can use the existing array +classes. When every access counts, having the storage be an integral +part of your own object allows for the quickest access. When you move +into this area of object development, inheritance and polymorphism +become trickier; each level must coordinate its use of the underlying +array with other levels. + + ---------- Footnotes ---------- + + (1) For GNU Smalltalk, the size of a C `long', which is usually 32 +bits. + + (2) C requires one or more; zero is allowed in Smalltalk + + (3) This is not always true for other Smalltalk implementations, who +don't allow instance variables in variableByteSubclasses and +variableWordSubclasses. + + (4) Actually, in GNU Smalltalk `do:' is not the only message +assuming that. + + (5) Some of these classes actually redefine `do:' for performance +reasons, but they would work even if the parent class' implementation +of `do:' was kept. + + +File: gst.info, Node: Two flavors of equality, Next: Why is #new there?!?, Prev: Inside Arrays, Up: Behind the scenes + +Two flavors of equality +----------------------- + +As first seen in chapter two, Smalltalk keys its dictionary with things +like #word, whereas we generally use 'word'. The former, as it turns +out, is from class Symbol. The latter is from class String. What's +the real difference between a Symbol and a String? To answer the +question, we'll use an analogy from C. + + In C, if you have a function for comparing strings, you might try to +write it: + streq(char *p, char *q) + { + return (p == q); + } + + But clearly this is wrong! The reason is that you can have two +copies of a string, each with the same contents but each at its own +address. A correct string compare must walk its way through the +strings and compare each element. + + In Smalltalk, exactly the same issue exists, although the details of +manipulating storage addresses are hidden. If we have two Smalltalk +strings, both with the same contents, we don't necessarily know if +they're at the same storage address. In Smalltalk terms, we don't know +if they're the same object. + + The Smalltalk dictionary is searched frequently. To speed the +search, it would be nice to not have to compare the characters of each +element, but only compare the address itself. To do this, you need to +have a guarantee that all strings with the same contents are the same +object. The String class, created like: + y := 'Hello' ! + + does not satisfy this. Each time you execute this line, you may +well get a new object. But a very similar class, Symbol, will always +return the same object: + y := #Hello ! + + In general, you can use strings for almost all your tasks. If you +ever get into a performance-critical function which looks up strings, +you can switch to Symbol. It takes longer to create a Symbol, and the +memory for a Symbol is never freed (since the class has to keep tabs on +it indefinitely to guarantee it continues to return the same object). +You can use it, but use it with care. + + This tutorial has generally used the strcmp()-ish kind of checks for +equality. If you ever need to ask the question "is this the same +object?", you use the `==' operator instead of `=': + Smalltalk at: #x put: 0 ! + Smalltalk at: #y put: 0 ! + x := 'Hello' ! + y := 'Hello' ! + (x = y) printNl ! + (x == y) printNl ! + y := 'Hel', 'lo' ! + (x = y) printNl ! + (x == y) printNl ! + x := #Hello ! + y := #Hello ! + (x = y) printNl ! + (x == y) printNl ! + + Using C terms, `=' compares contents like `strcmp()'. `==' compares +storage addresses, like a pointer comparison. + + +File: gst.info, Node: Why is #new there?!?, Next: Performance, Prev: Two flavors of equality, Up: Behind the scenes + +The truth about metaclasses +--------------------------- + +Everybody, sooner or later, looks for the implementation of the `#new' +method in Object class. To their surprise, they don't find it; if +they're really smart, they search for implementors of #new in the image +and they find out it is implemented by `Behavior'... which turns out to +be a subclass of Object! The truth starts showing to their eyes about +that sentence that everybody says but few people understand: "classes +are objects". + + Huh? Classes are objects?!? Let me explain. + + Open up an image; then type the text following the `st>' prompt. + + st> Set superclass! + HashedCollection + + st> HashedCollection superclass! + Collection + + st> Collection superclass! + Object + + st> Object superclass! + nil + + Nothing new for now. Let's try something else: + + st> #(1 2 3) class! + Array + + st> '123' class! + String + + st> Set class! + Set class + + st> Set class class! + Metaclass + + You get it, that strange `Set class' thing is something called "a +meta-class"... let's go on: + + st> ^Set class superclass! + Collection class + + st> ^Collection class superclass! + Object class + + You see, there is a sort of `parallel' hierarchy between classes and +metaclasses. When you create a class, Smalltalk creates a metaclass; +and just like a class describes how methods for its instances work, a +metaclass describes how class methods for that same class work. + + `Set' is an instance of the metaclass, so when you invoke the `#new' +class method, you can also say you are invoking an instance method +implemented by `Set class'. Simply put, class methods are a lie: +they're simply instance methods that are understood by instances of +metaclasses. + + Now you would expect that `Object class superclass' answers `nil +class', that is `UndefinedObject'. Yet you saw that `#new' is not +implemented there... let's try it: + + st> ^Object class superclass! + Class + + Uh?!? Try to read it aloud: the `Object class' class inherits from +the `Class' class. `Class' is the abstract superclass of all +metaclasses, and provides the logic that allows you to create classes +in the image. But it is not the termination point: + + st> ^Class superclass! + ClassDescription + + st> ^ClassDescription superclass! + Behavior + + st> ^Behavior superclass! + Object + + Class is a subclass of other classes. `ClassDescription' is +abstract; `Behavior' is concrete but lacks the methods and state that +allow classes to have named instance variables, class comments and +more. Its instances are called _light-weight_ classes because they +don't have separate metaclasses, instead they all share `Behavior' +itself as their metaclass. + + Evaluating `Behavior superclass' we have worked our way up to class +Object again: Object is the superclass of all instances as well as all +metaclasses. This complicated system is extremely powerful, and allows +you to do very interesting things that you probably did without +thinking about it--for example, using methods such as `#error:' or +`#shouldNotImplement' in class methods. + + Now, one final question and one final step: what are metaclasses +instances of? The question makes sense: if everything has a class, +should not metaclasses have one? + + Evaluate the following: + + st> | meta | + st> meta := Set class + st> 0 to: 4 do: [ :i | + st> i timesRepeat: [ Transcript space ]. + st> meta printNl. + st> meta := meta class. + st> ]! + Set class + Metaclass + Metaclass class + Metaclass + Metaclass class + 0 + + If you send `#class' repeatedly, it seems that you end up in a loop +made of class `Metaclass'(1) and its own metaclass, `Metaclass class'. +It looks like class Metaclass is an instance of an instance of itself. + + To understand the role of `Metaclass', it can be useful to know that +the class creation is implemented there. Think about it. + + * `Random class' implements creation and initialization of its + instances' random number seed; analogously, `Metaclass class' + implements creation and initialization of its instances, which are + metaclasses. + + * And `Metaclass' implements creation and initialization of its + instances, which are classes (subclasses of `Class'). + + The circle is closed. In the end, this mechanism implements a +clean, elegant and (with some contemplation) understandable facility +for self-definition of classes. In other words, it is what allows +classes to talk about themselves, posing the foundation for the +creation of browsers. + + ---------- Footnotes ---------- + + (1) Which turns out to be another subclass of `ClassDescription'. + + +File: gst.info, Node: Performance, Prev: Why is #new there?!?, Up: Behind the scenes + +The truth of Smalltalk performance +---------------------------------- + +Everybody says Smalltalk is slow, yet this is not completely true for +at least three reasons. First, most of the time in graphical +applications is spent waiting for the user to "do something", and most +of the time in scripting applications (which GNU Smalltalk is +particularly well versed in) is spent in disk I/O; implementing a +travelling salesman problem in Smalltalk would indeed be slow, but for +most real applications you can indeed exchange performance for +Smalltalk's power and development speed. + + Second, Smalltalk's automatic memory management is faster than C's +manual one. Most C programs are sped up if you relink them with one of +the garbage collecting systems available for C or C++. + + Third, even though very few Smalltalk virtual machines are as +optimized as, say, the Self environment (which reaches half the speed +of optimized C!), they do perform some optimizations on Smalltalk code +which make them run many times faster than a naive bytecode +interpreter. Peter Deutsch, who among other things invented the idea +of a just-in-time compiler like those you are used to seeing for +Java(1), once observed that implementing a language like Smalltalk +efficiently requires the implementor to cheat... but that's okay as +long as you don't get caught. That is, as long as you don't break the +language semantics. Let's look at some of these optimizations. + + For certain frequently used 'special selectors', the compiler emits a +send-special-selector bytecode instead of a send-message bytecode. +Special selectors have one of three behaviors: + + * A few selectors are assigned to special bytecode solely in order to + save space. This is the case for `#do:' for example. + + * Three selectors (`#at:', `#at:put:', `#size') are assigned to + special bytecodes because they are subject to a special caching + optimization. These selectors often result in calling a virtual + machine primitive, so GNU Smalltalk remembers which primitve was + last called as the result of sending them. If we send `#at:' 100 + times for the same class, the last 99 sends are directly mapped to + the primitive, skipping the method lookup phase. + + * For some pairs of receiver classes and special selectors, the + interpreter never looks up the method in the class; instead it + swiftly executes the same code which is tied to a particular + primitive. Of course a special selector whose receiver or + argument is not of the right class to make a no-lookup pair is + looked up normally. + + No-lookup methods do contain a primitive number specification, +`', but it is used only when the method is reached +through a `#perform:...' message send. Since the method is not +normally looked up, deleting the primitive name specification cannot in +general prevent this primitive from running. No-lookup pairs are +listed below: + +`Integer'/`Integer' for `+ - * = ~= > < >= <=' +`Float'/`Integer' +`Float'/`Float' +`Integer'/`Integer' for `// \\ bitOr: bitShift: bitAnd:' +Any pair of objects for `== isNil notNil class' +BlockClosure for `value value: blockCopy:'(2) + + Other messages are open coded by the compiler. That is, there are +no message sends for these messages--if the compiler sees blocks +without temporaries and with the correct number of arguments at the +right places, the compiler unwinds them using jump bytecodes, producing +very efficient code. These are: + + to:by:do: if the second argument is an integer literal + to:do: + timesRepeat: + and:, or: + ifTrue:ifFalse:, ifFalse:ifTrue:, ifTrue:, ifFalse: + whileTrue:, whileFalse: + + Other minor optimizations are done. Some are done by a peephole +optimizer which is ran on the compiled bytecodes. Or, for example, +when GNU Smalltalk pushes a boolean value on the stack, it +automatically checks whether the following bytecode is a jump (which is +a common pattern resulting from most of the open-coded messages above) +and combines the execution of the two bytecodes. All these snippets +can be optimized this way: + + 1 to: 5 do: [ :i | ... ] + a < b and: [ ... ] + myObject isNil ifTrue: [ ... ] + + That's all. If you want to know more, look at the virtual machine's +source code in `libgst/interp-bc.inl' and at the compiler in +`libgst/comp.c'. + + ---------- Footnotes ---------- + + (1) And like the one that GNU Smalltalk includes as an experimental +feature. + + (2) You won't ever send this message in Smalltalk programs. The +compiler uses it when compiling blocks. + + +File: gst.info, Node: And now, Next: The syntax, Prev: Behind the scenes, Up: Tutorial + +Some final words +================ + +The question is always how far to go in one document. At this point, +you know how to create classes. You know how to use inheritance, +polymorphism, and the basic storage management mechanisms of Smalltalk. +You've also seen a sampling of Smalltalk's powerful classes. The rest +of this chapter simply points out areas for further study; perhaps a +newer version of this document might cover these in further chapters. + +Viewing the Smalltalk Source Code + Lots of experience can be gained by looking at the source code for + system methods; all of them are visible: data structure classes, + the innards of the magic that makes classes be themselves objects + and have a class, a compiler written in Smalltalk itself, the + classes that implement the Smalltalk GUI and those that wrap + sockets and TCP/IP. + +Other Ways to Collect Objects + We've seen Array, ByteArray, Dictionary, Set, and the various + streams. You'll want to look at the Bag, OrderedCollection, and + SortedCollection classes. For special purposes, you'll want to + examine the CObject and CType hierarchies. + +Flow of Control + GNU Smalltalk has support for non-preemptive multiple threads of + execution. The state is embodied in a Process class object; + you'll also want to look at the Semaphore and ProcessorScheduler + class. + +Smalltalk Virtual Machine + GNU Smalltalk is implemented as a virtual instruction set. By + invoking GNU Smalltalk with the `-d' option, you can view the byte + opcodes which are generated as files on the command line are + loaded. Similarly, running GNU Smalltalk with `-e' will trace the + execution of instructions in your methods. + + You can look at the GNU Smalltalk source to gain more information + on the instruction set. With a few modifications, it is based on + the set described in the canonical book from two of the original + designers of Smalltalk: Smalltalk-80: The Language and its + Implementation, by Adele Goldberg and David Robson. + +Where to get Help + The Usenet comp.lang.smalltalk newsgroup is read by many people + with a great deal of Smalltalk experience. There are several + commercial Smalltalk implementations; you can buy support for + these, though it isn't cheap. For the GNU Smalltalk system in + particular, you can try the mailing list at: + help-smalltalk@gnu.org + + No guarantees, but the subscribers will surely do their best! + + +File: gst.info, Node: The syntax, Prev: And now, Up: Tutorial + +A Simple Overview of Smalltalk Syntax +===================================== + +Smalltalk's power comes from its treatment of objects. In this +document, we've mostly avoided the issue of syntax by using strictly +parenthesized expressions as needed. When this leads to code which is +hard to read due to the density of parentheses, a knowledge of +Smalltalk's syntax can let you simplify expressions. In general, if it +was hard for you to tell how an expression would parse, it will be hard +for the next person, too. + + The following presentation presents the grammar a couple of related +elements at a time. We use an EBNF style of grammar. The form: + [ ... ] + +means that "..." can occur zero or one times. + + [ ... ]* + +means zero or more; + + [ ... ]+ + +means one or more. + + ... | ... [ | ... ]* + +means that one of the variants must be chosen. Characters in double +quotes refer to the literal characters. Most elements may be separated +by white space; where this is not legal, the elements are presented +without white space between them. + +methods: "!" id ["class"] "methodsFor:" string "!" [method "!"] "!" + Methods are introduced by first naming a class (the id element), + specifying "class" if you're adding class methods instead of + instance methods, and sending a string argument to the methodsFor: + message. Each method is terminated with an "!"; two bangs in a + row (with a space in the middle) signify the end of the new + methods. + +method: message [prim] [temps] exprs +message: id | binsel id | [keysel id]+ +prim: "<" "primitive:" id ">" +temps: "|" [id]* "|" + A method definition starts out with a kind of template. The + message to be handled is specified with the message names spelled + out and identifiers in the place of arguments. A special kind of + definition is the primitive; it has not been covered in this + tutorial; it provides an interface to the underlying Smalltalk + virtual machine. temps is the declaration of local variables. + Finally, exprs (covered soon) is the actual code for implementing + the method. + +unit: id | literal | block | arrayconstructor | "(" expr ")" +unaryexpr: unit [ id ]+ +primary: unit | unaryexpr + These are the "building blocks" of Smalltalk expressions. A unit + represents a single Smalltalk value, with the highest syntactic + precedence. A unaryexpr is simply a unit which receives a number + of unary messages. A unaryexpr has the next highest precedence. + A primary is simply a convenient left-hand-side name for one of + the above. + +exprs: [expr "."]* [["^"] expr] +expr: [id ":="]* expr2 +expr2: primary | msgexpr [ ";" cascade ]* + A sequence of expressions is separated by dots and can end with a + returned value (`^'). There can be leading assignments; unlike C, + assignments apply only to simple variable names. An expression is + either a primary (with highest precedence) or a more complex + message. cascade does not apply to primary constructions, as they + are too simple to require the construct. Since all primary + construct are unary, you can just add more unary messages: + 1234 printNl printNl printNl ! + +msgexpr: unaryexpr | binexpr | keyexpr + A complex message is either a unary message (which we have already + covered), a binary message (`+', `-', and so forth), or a keyword + message (`at:', `new:', ...) Unary has the highest precedence, + followed by binary, and keyword messages have the lowest + precedence. Examine the two versions of the following messages. + The second have had parentheses added to show the default + precedence. + myvar at: 2 + 3 put: 4 + mybool ifTrue: [ ^ 2 / 4 roundup ] + + (myvar at: (2 + 3) put: (4)) + (mybool ifTrue: ([ ^ (2 / (4 roundup)) ])) + +cascade: id | binmsg | keymsg + A cascade is used to direct further messages to the same object + which was last used. The three types of messages ( id is how you + send a unary message) can thus be sent. + +binexpr: primary binmsg [ binmsg ]* +binmsg: binsel primary +binsel: selchar[selchar] + A binary message is sent to an object, which primary has + identified. Each binary message is a binary selector, constructed + from one or two characters, and an argument which is also provided + by a primary. + 1 + 2 - 3 / 4 + + which parses as: + (((1 + 2) - 3) / 4) + +keyexpr: keyexpr2 keymsg +keyexpr2: binexpr | primary +keymsg: [keysel keyw2]+ +keysel: id":" + Keyword expressions are much like binary expressions, except that + the selectors are made up of identifiers with a colon appended. + Where the arguments to a binary function can only be from primary, + the arguments to a keyword can be binary expressions or primary + ones. This is because keywords have the lowest precedence. + +block: "[" [[":" id]* "|" ] [temps] exprs "]" + A code block is square brackets around a collection of Smalltalk + expressions. The leading ": id" part is for block arguments. + Note that it is possible for a block to have temporary variables + of its own. + +arrayconstructor: "{" exprs "}" + Not covered in this tutorial, this syntax allows to create arrays + whose values are not literals, but are instead evaluated at + run-time. Compare `#(a b)', which results in an Array of two + symbols `#a' and `#b', to `{a. b+c}' which results in an Array + whose two elements are the contents of variable `a' and the result + of summing `c' to `b'. + +literal: number | string | charconst | symconst | arrayconst | binding +arrayconst: "#" array | "#" bytearray +bytearray: "[" [number]* "]" +array: "(" [literal | array | bytearray | arraysym | ]* ")" +number: [[dig]+ "r"] ["-"] [alphanum]+ ["." [alphanum]+] [exp ["-"][dig]+]. +string: "'"[char]*"'" +charconst: "$"char +symconst: "#"symbol | "#"string +arraysym: [id | ":"]* +exp: "d" | "e" | "q" | "s" + We have already shown the use of many of these constants. + Although not covered in this tutorial, numbers can have a base + specified at their front, and a trailing scientific notation. We + have seen examples of character, string, and symbol constants. + Array constants are simple enough; they would look like: + Smalltalk at: #a put: #(1 2 'Hi' $x $Hello 4 26r5H) ! + + There are also ByteArray constants, whose elements are constrained + to be integers between 0 and 255; they would look like: + Smalltalk at: #a put: #[1 2 34 16r8F 26r3H 253] ! + + Finally, there are three types of floating-point constants with + varying precision (the one with the `e' being the less precise, + followed by `d' and `q'), and scaled-decimal constants for a + special class which does exact computations but truncates + comparisons to a given number of decimals. For example, `1.23s4' + means "the value `1.23', with four significant decimal digits". + +binding: "#{" [id "."]* id "}" + This syntax has not been used in the tutorial, and results in an + Association literal (known as a "variable binding") tied to the + class that is named between braces. For example, `#{Class} value' + is the same as `Class'. The dot syntax is required for supporting + namespaces: `#{Smalltalk.Class}' is the same as `Smalltalk + associationAt: #Class', but is resolved at compile-time rather + than at run-time. + +symbol: id | binsel | keysel[keysel]* + Symbols are mostly used to represent the names of methods. Thus, + they can hold simple identifiers, binary selectors, and keyword + selectors: + #hello + #+ + #at:put: + +id: letter[letter|dig]* +selchar: "+" | "-" | "*" | "/" | "~" | "|" | "," | +"<" | ">" | "=" | "&" | "'' | "?" | "\" | "%" +alphanum: "0".."9" | "A".."Z" +dig: "0".."9" + These are the categories of characters and how they are combined + at the most basic level. selchar simply lists the characters + which can be combined to name a binary message (binary messages + including a question mark are almost never used). + + + +File: gst.info, Node: Future, Prev: Tutorial, Up: Top + +Future directions for GNU Smalltalk +*********************************** + +Presented below is the set of tasks that I feel need to be performed to +make GNU Smalltalk a more fully functional, viable system. They are +presented in no particular order; other tasks are listed in the `TODO' +file, in the main distribution directory. + + I would _very much_ welcome any volunteers who would like to help +with the implementation of one or more of these tasks. Please write at +help-smalltalk@gnu.org if you are interested in adding your efforts to +the GNU Smalltalk project. + + Tasks: + * Port software to GNU Smalltalk. The class library has proven to + be quite robust; it should be easy to port packages (especially + free ones!) to GNU Smalltalk if the source dialect is reasonably + ANSI-compliant. One area which might give problems is namespaces, + which is not standardized, and possibly exception handling for + which most dialects have been cooking their own syntax for years. + + * Port to other computers/operating systems. The code thus far has + shown itself to be relatively portable to various machines and Unix + derivatives. The architecture must support 32 or 64 bit pointers + the same size as a long integers; in addition, the operating + system had better be advanced enough to support asynchronous file + polling and explicit allocation of virtual memory address ranges. + + * Modify the Delay class primitive so that it does not fork a new + process each time it is called when `setitimer' or a similar + function call is not available; this involves using a pipe. I + want to do it somewhen, but if you do it before me, please tell me. + + * Port Blox to GTK+. + + * More ideas are sketched in the `TODO' file, in the main + distribution directory. + +  Tag Table: -(Indirect) -Node: Top1016 -Node: Overview5852 +Node: Top1022 +Node: Overview5855 Node: Using GNU Smalltalk8575 Node: Invocation9139 -Node: Operation15183 -Ref: Operation-Footnote-118232 -Ref: Operation-Footnote-218400 -Node: Syntax18620 -Node: Test suite21448 -Node: Legal concerns22144 -Ref: Legal concerns-Footnote-124611 -Node: Features24694 -Node: Memory access26202 -Node: Namespaces28593 -Ref: Namespaces-Footnote-141231 -Ref: Namespaces-Footnote-241444 -Node: Disk file-IO41484 -Node: Object dumping43822 -Node: GC44404 -Ref: GC-Footnote-155673 -Ref: GC-Footnote-256037 -Ref: GC-Footnote-356427 -Ref: GC-Footnote-456660 -Node: Security56715 -Node: Special objects56853 -Node: Dynamic loading62001 -Node: Packages63202 -Ref: Packages-Footnote-166454 -Node: Blox66570 -Ref: Blox-Footnote-169847 -Node: Smalltalk-in-Smalltalk70005 -Ref: Smalltalk-in-Smalltalk-Footnote-173012 -Node: Database73064 -Node: Locales76629 -Ref: Locales-Footnote-180938 -Ref: Locales-Footnote-281024 -Node: SUnit81199 -Ref: SUnit-Footnote-187628 -Node: Network support87870 -Ref: Network support-Footnote-190182 -Node: XML90283 -Node: Minor packages90768 -Node: Emacs91257 -Node: Autoloading91754 -Node: Editing92420 -Node: Interactor93400 -Node: C and Smalltalk97863 -Node: External modules98670 -Ref: External modules-Footnote-1102694 -Ref: External modules-Footnote-2102740 -Node: C callout102924 -Node: C data types112118 -Ref: C data types-Footnote-1121062 -Ref: C data types-Footnote-2121128 -Node: Smalltalk types121264 -Node: Smalltalk callin130744 -Node: Other C functions138544 -Ref: Other C functions-Footnote-1144027 -Node: Object representation144250 -Node: Using Smalltalk151555 -Node: Incubator154608 -Node: Tutorial159847 -Node: Getting started161603 -Node: Starting Smalltalk162028 -Node: Saying hello162567 -Ref: Saying hello-Footnote-1163116 -Node: What happened163340 -Ref: What happened-Footnote-1164937 -Ref: What happened-Footnote-2165236 -Node: Doing math165521 -Node: Math in Smalltalk166928 -Node: Some classes168070 -Node: Arrays168856 -Ref: Arrays-Footnote-1171310 -Ref: Arrays-Footnote-2171695 -Node: Sets171798 -Node: Dictionaries174821 -Node: Smalltalk dictionary176235 -Ref: Smalltalk dictionary-Footnote-1178056 -Ref: Smalltalk dictionary-Footnote-2178238 -Node: Closing thoughts178295 -Node: The hierarchy179302 -Node: Class Object180082 -Node: Animals180992 -Node: But why183852 -Node: Creating classes184860 -Node: A new class186802 -Ref: A new class-Footnote-1187905 -Node: Documenting the class188072 -Node: Defining methods188770 -Ref: Defining methods-Footnote-1193242 -Node: Instance methods193535 -Ref: Instance methods-Footnote-1194925 -Node: A look at our object195146 -Node: Moving money around197340 -Node: Next coming198089 -Node: Creating subclasses198527 -Node: The Savings class199281 -Ref: The Savings class-Footnote-1202941 -Ref: The Savings class-Footnote-2203259 -Node: The Checking class203519 -Node: Writing checks204812 -Node: Code blocks (I)206842 -Node: Conditions207453 -Ref: Conditions-Footnote-1210592 -Node: Iteration210813 -Ref: Iteration-Footnote-1218952 -Node: Code blocks (II)219476 -Ref: Code blocks (II)-Footnote-1220326 -Node: Integer loops220725 -Node: Intervals221219 -Node: Invoking code blocks221894 -Ref: Invoking code blocks-Footnote-1225538 -Node: Debugging225660 -Node: Simple errors226592 -Node: Nested calls227882 -Node: Looking at objects230365 -Ref: Looking at objects-Footnote-1231635 -Node: More subclassing231718 -Node: The existing hierarchy233041 -Ref: The existing hierarchy-Footnote-1238705 -Node: Playing with Arrays238852 -Ref: Playing with Arrays-Footnote-1242730 -Node: New kinds of Numbers243273 -Node: Inheritance and Polymorphism248108 -Node: Streams250369 -Node: The output stream251479 -Ref: The output stream-Footnote-1252403 -Node: Your own stream252496 -Node: Files256034 -Node: Dynamic Strings256709 -Node: Behind the scenes258331 -Node: Inside Arrays258918 -Ref: Inside Arrays-Footnote-1267825 -Ref: Inside Arrays-Footnote-2267902 -Ref: Inside Arrays-Footnote-3267963 -Ref: Inside Arrays-Footnote-4268121 -Ref: Inside Arrays-Footnote-5268201 -Node: Two flavors of equality268360 -Node: Why is #new there?!?271135 -Ref: Why is #new there?!?-Footnote-1276137 -Node: Performance276207 -Ref: Performance-Footnote-1280816 -Ref: Performance-Footnote-2280897 -Node: And now281006 -Node: The syntax283615 -Node: Future291841 +Node: Operation15180 +Ref: Operation-Footnote-118226 +Ref: Operation-Footnote-218394 +Node: Syntax18614 +Node: Test suite21439 +Node: Legal concerns22132 +Ref: Legal concerns-Footnote-124596 +Node: Features24679 +Node: Memory access26184 +Node: Namespaces28572 +Ref: Namespaces-Footnote-141192 +Ref: Namespaces-Footnote-241405 +Node: Disk file-IO41445 +Node: Object dumping43780 +Node: GC44359 +Ref: GC-Footnote-155625 +Ref: GC-Footnote-255989 +Ref: GC-Footnote-356379 +Ref: GC-Footnote-456612 +Node: Security56667 +Node: Special objects56805 +Node: Dynamic loading61950 +Node: Packages63148 +Ref: Packages-Footnote-166397 +Node: Blox66513 +Ref: Blox-Footnote-169786 +Node: Smalltalk-in-Smalltalk69944 +Ref: Smalltalk-in-Smalltalk-Footnote-172948 +Node: Database73000 +Node: Locales76563 +Ref: Locales-Footnote-180869 +Ref: Locales-Footnote-280955 +Node: SUnit81130 +Ref: SUnit-Footnote-187544 +Node: Network support87786 +Ref: Network support-Footnote-190095 +Node: XML90196 +Node: Minor packages90678 +Node: Emacs91164 +Node: Autoloading91657 +Node: Editing92320 +Node: Interactor93297 +Node: C and Smalltalk97757 +Node: External modules98564 +Ref: External modules-Footnote-1102585 +Ref: External modules-Footnote-2102631 +Node: C callout102815 +Node: C data types112006 +Ref: C data types-Footnote-1120947 +Ref: C data types-Footnote-2121013 +Node: Smalltalk types121149 +Node: Smalltalk callin130626 +Node: Other C functions138423 +Ref: Other C functions-Footnote-1143903 +Node: Object representation144126 +Node: Using Smalltalk151428 +Node: Incubator154478 +Node: Tutorial159714 +Node: Getting started161470 +Node: Starting Smalltalk161895 +Node: Saying hello162431 +Ref: Saying hello-Footnote-1162977 +Node: What happened163201 +Ref: What happened-Footnote-1164795 +Ref: What happened-Footnote-2165094 +Node: Doing math165379 +Node: Math in Smalltalk166783 +Node: Some classes167922 +Node: Arrays168705 +Ref: Arrays-Footnote-1171156 +Ref: Arrays-Footnote-2171541 +Node: Sets171644 +Node: Dictionaries174665 +Node: Smalltalk dictionary176076 +Ref: Smalltalk dictionary-Footnote-1177894 +Ref: Smalltalk dictionary-Footnote-2178076 +Node: Closing thoughts178133 +Node: The hierarchy179137 +Node: Class Object179912 +Node: Animals180819 +Node: But why183676 +Node: Creating classes184681 +Node: A new class186620 +Ref: A new class-Footnote-1187720 +Node: Documenting the class187887 +Node: Defining methods188582 +Ref: Defining methods-Footnote-1193052 +Node: Instance methods193345 +Ref: Instance methods-Footnote-1194732 +Node: A look at our object194953 +Node: Moving money around197144 +Node: Next coming197890 +Node: Creating subclasses198325 +Node: The Savings class199076 +Ref: The Savings class-Footnote-1202733 +Ref: The Savings class-Footnote-2203051 +Node: The Checking class203311 +Node: Writing checks204601 +Node: Code blocks (I)206628 +Node: Conditions207236 +Ref: Conditions-Footnote-1210373 +Node: Iteration210594 +Ref: Iteration-Footnote-1218730 +Node: Code blocks (II)219254 +Ref: Code blocks (II)-Footnote-1220101 +Node: Integer loops220500 +Node: Intervals220991 +Node: Invoking code blocks221663 +Ref: Invoking code blocks-Footnote-1225304 +Node: Debugging225426 +Node: Simple errors226356 +Node: Nested calls227643 +Node: Looking at objects230123 +Ref: Looking at objects-Footnote-1231390 +Node: More subclassing231473 +Node: The existing hierarchy232793 +Ref: The existing hierarchy-Footnote-1238454 +Node: Playing with Arrays238601 +Ref: Playing with Arrays-Footnote-1242476 +Node: New kinds of Numbers243019 +Node: Inheritance and Polymorphism247851 +Node: Streams250109 +Node: The output stream251216 +Ref: The output stream-Footnote-1252137 +Node: Your own stream252230 +Node: Files255765 +Node: Dynamic Strings256437 +Node: Behind the scenes258055 +Node: Inside Arrays258639 +Ref: Inside Arrays-Footnote-1267543 +Ref: Inside Arrays-Footnote-2267620 +Ref: Inside Arrays-Footnote-3267681 +Ref: Inside Arrays-Footnote-4267839 +Ref: Inside Arrays-Footnote-5267919 +Node: Two flavors of equality268078 +Node: Why is #new there?!?270851 +Ref: Why is #new there?!?-Footnote-1275850 +Node: Performance275920 +Ref: Performance-Footnote-1280526 +Ref: Performance-Footnote-2280607 +Node: And now280716 +Node: The syntax283321 +Node: Future291544  End Tag Table diff -rNU3 smalltalk-2.1.6/doc/gst.info-1 smalltalk-2.1.7/doc/gst.info-1 --- smalltalk-2.1.6/doc/gst.info-1 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-1 1970-01-01 01:00:00.000000000 +0100 @@ -1,972 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: Top, Up: (DIR) - - - - This document describes installing and operating the GNU Smalltalk -programming language. - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. -* Menu: - - -* Overview:: What GNU Smalltalk is. -* Using GNU Smalltalk:: Running GNU Smalltalk. -* Features:: A description of GNU Smalltalk's special features. -* Emacs:: GNU Smalltalk and Emacs. -* C and Smalltalk:: GNU Smalltalk's C/Smalltalk interoperability features. -* Tutorial:: An introduction to Smalltalk and OOP. -* Future:: Tasks for GNU Smalltalk's subsequent releases. - Volunteers to help out in performing some of these - tasks would be greatly appreciated. - Please see this node to find out what you can do - to help make GNU Smalltalk a truly winning system. - ---- The detailed node listing --- - -Invocation: -* Invocation:: What you can specify on the command line. -* Operation:: A step-by-step description of the - startup process and a short description of - how to interact with GNU Smalltalk. -* Syntax:: A description of the input file syntax -* Test suite:: How to run the test suite system. -* Legal concerns:: Licensing of GNU Smalltalk - -Features: -* Memory access:: The direct memory accessing classes and methods. -* Namespaces:: Avoiding clashes between class names. -* Disk file-IO:: Methods for reading and writing disk files. -* Object dumping:: Methods that read and write objects in binary format. -* GC:: The GNU Smalltalk memory manager. -* Security:: Sandboxing and access control. -* Special objects:: Methods to assign particular properties to objects. -* Dynamic loading:: Picking external libraries and modules at run-time. -* Packages:: An easy way to install Smalltalk code into an image. - -Packages -* Blox:: GNU Smalltalk's user interface building blocks. -* Smalltalk-in-Smalltalk:: Beyond Smalltalk's standard reflective abilities. -* Database:: Access databases from Smalltalk programs -* Locales:: Intenationalize and localize Smalltalk programs -* SUnit: SUnit. -* Network support:: An interface to TCP/IP and UDP and support for - popular network protocols. -* XML:: An XML parser and XSL processor. -* Minor packages:: Various interesting modules. - -Emacs -* Autoloading:: Autoloading GNU Smalltalk mode. -* Editing:: Autoindent and more for GNU Smalltalk. -* Interactor:: Smalltalk interactor mode. - -C and Smalltalk: -* External modules:: Linking your libraries to the virtual machine -* C callout:: Calls from Smalltalk to C. -* C data types:: Manipulating C data from Smalltalk. -* Smalltalk types:: Manipulating Smalltalk data from C. -* Smalltalk callin:: Calls from C to Smalltalk. -* Using Smalltalk:: Using the Smalltalk environment as an extension library. -* Incubator:: Protecting newly created objects from garbage - collections. - -Tutorial: -* Getting started:: Starting to explore GNU Smalltalk -* Some classes:: Using some of the Smalltalk classes -* The hierarchy:: The Smalltalk class hierarchy -* Creating classes:: Creating a new class of objects -* Creating subclasses:: Adding subclasses to another class -* Code blocks (I):: Control structures in Smalltalk -* Code blocks (II):: Guess what? More control structures -* Debugging:: Things go bad in Smalltalk too! -* More subclassing:: Coexisting in the class hierarchy -* Streams:: Something really powerful -* Behind the scenes:: Some nice stuff from the Smalltalk innards -* And now:: Some final words -* The syntax:: For the most die-hard computer scientists - - -File: gst.info, Node: Overview, Next: Using GNU Smalltalk, Prev: Top, Up: Top - -Introduction -************ - - GNU Smalltalk is an implementation that closely follows the -Smalltalk-80 language as described in the book `Smalltalk-80: the -Language and its Implementation' by Adele Goldberg and David Robson, -which will hereinafter be referred to as `the Blue Book'. - - The Smalltalk programming language is an object oriented programming -language. This means, for one thing, that when programming you are -thinking of not only the data that an object contains, but also of the -operations available on that object. The object's data representation -capabilities and the operations available on the object are -"inseparable"; the set of things that you can do with an object is -defined precisely by the set of operations, which Smalltalk calls -"methods", that are available for that object: each object belongs to a -"class" (a datatype and the set of functions that operate on it) or, -better, it is an "instance" of that class. You cannot even examine the -contents of an object from the outside--to an outsider, the object is a -black box that has some state and some operations available, but that's -all you know: when you want to perform an operation on an object, you -can only send it a "message", and the object picks up the method that -corresponds to that message. - - In the Smalltalk language, everything is an object. This includes -not only numbers and all data structures, but even classes, methods, -pieces of code within a method ("blocks" or "closures"), stack frames -("contexts"), etc. Even `if' and `while' structures are implemented as -methods sent to particular objects. - - Unlike other Smalltalks (including Smalltalk-80), GNU Smalltalk -emphasizes Smalltalk's rapid prototyping features rather than the -graphical and easy-to-use nature of the programming environment (did -you know that the first GUIs ever ran under Smalltalk?). The -availability of a large body of system classes, once you master them, -makes it pretty easy to write complex programs which are usually a task -for the so called "scripting languages". Therefore, even though we -have a nice GUI environment including a class browser (*note Blox::), -the goal of the GNU Smalltalk project is currently to produce a -complete system to be used to write your scripts in a clear, -aesthetically pleasing, and philosophically appealing programming -language. - - An example of what can be obtained with Smalltalk in this novel way -can be found in *Note Class reference: (gst-libs)Top. That part of the -manual is entirely generated by a Smalltalk program, starting from the -source code for the class libraries distributed together with the -system. - - -File: gst.info, Node: Using GNU Smalltalk, Next: Features, Prev: Overview, Up: Top - -Using GNU Smalltalk -******************* - -* Menu: - -* Invocation:: What you can specify on the command line. -* Operation:: A step-by-step description of the - startup process and a short description of - how to interact with GNU Smalltalk. -* Syntax:: A description of the input file syntax -* Test suite:: How to run the test suite system. -* Legal concerns:: Licensing of GNU Smalltalk - - -File: gst.info, Node: Invocation, Next: Operation, Up: Using GNU Smalltalk - -Command line arguments -====================== - - GNU Smalltalk may be invoked via the following command: - gst [ flags ... ] [ file ... ] - - When you first invoke GNU Smalltalk, it will attempt to see if any -of the kernel method definition files are newer than the last saved -binary image in the current directory (if there is one). If there is a -newer kernel method definition file, or if the binary image file (called -`gst.im') does not exist, a new binary image will be built by loading -in all the kernel method definition files, performing a full garbage -collection in order to compact the space in use, and then saving the -resulting data in a position independent format. Your first invocation -should look something like this: - - "Major scavenging... done, used space = 51%" - GNU Smalltalk Ready - - st> - - If you specify , that file will be read and executed and -Smalltalk will exit when end of file is reached. If you specify more -than one file, each will be read and processed in turn. If you don't -specify , standard input is read, and if the standard input is a -terminal, a prompt is issued. You may specify `-' for the name of a -file to invoke an explicit read from standard input; furthermore, -specifying `--' stops the interpretation of options so that every -argument that follows is considered a file name even if it begins with a -minus. - - You can specify both short and long flags; for example, `--version' -is exactly the same as `-v', but is easier to remember. Short flags -may be specified one at a time, or in a group. A short flag or a group -of short flags always starts off with a single dash to indicate that -what follows is a flag or set of flags instead of a file name; a long -flag starts off with two consecutive dashes, without spaces between -them. - - In the current implementation the flags can be intermixed with file -names, but their effect is as if they were all specified first. The -various flags are interpreted as follows: - -`-a --smalltalk' - Used to make arguments available to Smalltalk code. The C option - parser discards everything after the parameter including -a, while - Smalltalk code can get it sending the `arguments' message to the - `Smalltalk' object. - - Examples: - command line Options seen by GNU Smalltalk `Smalltalk arguments' - (empty) (none) `#()' - `-Via foo bar' `-Vi' `#('foo' 'bar')' - `-Vai test' `-Vi' `#('test')' - `-Vaq' `-Vq' `#()' - `--verbose -aq -c ' `--verbose -q' `#('-c')' - - That should be clear. - -`-c --core-dump' - When this flag is set and a fatal signal occurs, a core dump is - produced after an error message is printed. Normally, the - backtrace is produced and the system terminates without dumping - core. - -`-d --user-declaration-trace' - Declaration tracing prints the class name, the method name, and - the byte codes that the compiler is generating as it compiles - methods. Only for files that are named explicitly on the command - line; kernel files that are loaded automatically as part of - rebuilding the image file do not have their declarations traced. - -`-D --kernel-declaration-trace' - Like the -d flag, but also includes declarations processed for the - kernel files. - -`-e --user-execution-trace' - Prints the byte codes being executed as the interpreter operates. - Only works for those executions that occur after the kernel files - have been loaded and the image file dumped. - -`-E --kernel-declaration-trace' - Like the -e flag, but includes all byte codes executed, whether - they occur during the loading of the kernel method definition - files, or during the loading and execution of user files. - -`-g --no-gc-messages' - Suppress garbage collection messages. - -`-h --help' - Prints out a brief summary of the command line syntax of GNU - Smalltalk, including the definitions of all of the option flags, - and then exits. - -`-i --rebuild-image' - Ignore the saved image file; always load from the kernel method - definition files. Setting this flag bypasses the normal checks for - kernel files newer than the image file, or the image file's version - stamp out of date with respect to the Smalltalk version. After the - kernel definitions have been loaded, a new image file will be - saved. - -`-I FILE --image-file FILE' - Use the image file named as the image file to load. - Completely bypasses checking the file dates on the kernel files and - standard image file. - -`-l --log-changes' - Produce a log of the compiled Smalltalk code to st-changes.st, in - the current working directory. - -`-L FILE --log-file FILE' - Produce a log of the compiled Smalltalk code to the file named - . - -`-q --quiet --silent' - Suppress the printing of returned values while GNU Smalltalk runs. - -`-Q --no-messages' - Suppress the printing of execution information and any other - informative message while GNU Smalltalk runs. - -`-r --regression-test' - Controls printing of certain informative I/O; this is used by the - regression testing system and is probably not of interest to the - general user. - -`-S --snapshot' - Save a snapshot after loading files from the command line. Of - course the snapshot is not saved if you include - (stdin) on the - command line and exit by typing Ctrl-C. - -`-v --version' - Prints out the Smalltalk version number, then exits. - -`-V --verbose' - Enables verbose mode. When verbose mode is on, various diagnostic - messages are printed (the name of each file as it's loaded, plus - messages about the beginning of execution or how many byte codes - were executed). - -`-y --yacc-debug' - Turns on parser debugging. Not typically used. - - -File: gst.info, Node: Operation, Next: Syntax, Prev: Invocation, Up: Using GNU Smalltalk - -Startup sequence -================ - - When GNU Smalltalk is invoked, the first thing it does is choosing -two paths, respectively the "image path" and the "kernel path". the -image path is set to the value of the `SMALLTALK_IMAGE' environment -variable (if it is defined); if `SMALLTALK_IMAGE' is not defined, -Smalltalk will try the path compiled in the binary (usually, under Unix -systems, `/usr/local/share/gnu-smalltalk' or a similar data file path) -and then the current directory. - - The "kernel path" directory in which to look for each of the kernel -method definition files. There are only two possibilities in this case: -the directory pointed to by `SMALLTALK_KERNEL' if it is defined, and a -subdirectory named `kernel' in the current directory. However, kernel -files are not required to be in this directory: Smalltalk also knows -about a system default location for kernel files, which is compiled in -the binary (usually, under Unix systems, -`/usr/local/share/gnu-smalltalk/kernel' or a similar data file path), -and which is used for kernel files not found in the directory chosen as -above. - - Then, if the `-i' flag is not used, Smalltalk tries to find a saved -binary image file in the image path. If this is found, it is checked to -be compatible with the current version of Smalltalk and with the current -system; Smalltalk is able to load an image created on a system with the -same `sizeof(long)' but different endianness (for example, a 68k image -on an x86), but not an image created on a system with different -`sizeof(long)' like an Alpha image on an x86. Finally, if the images -are compatible, it compares the write dates of all of the kernel method -definition files against the write date of the binary image file. - - If the image is not found, is incompatible, or older than any of the -kernel files, a new image has to be created. The set of files that make -up the kernel is loaded, one at a time. The list can be found in -`libgst/lib.c', in the `standardFiles' variable. If the image lies in -the current directory, or if at least a kernel file was found outside -of the system default path, a user-dependant `.stpre'(1) - - At this point, independent of whether the binary image file was -loaded or created, the `initialize' event is sent to the dependants of -the special class `ObjectMemory' (*note Memory access::). After the -initialization blocks have been executed, the user initialization file -`.stinit' is loaded if found in the user's home directory(2). - - Finally, if there were any files specified on the command line, they -are loaded, otherwise standard input is read and executed until an EOF -is detected. You are then able to operate GNU Smalltalk by typing in -expressions to the `st>' prompt, and/or reading in files that contain -Smalltalk code. - - At some time, you may wish to abort what GNU Smalltalk is doing and -return to the command prompt: you can use `C-c' to do this. - - ---------- Footnotes ---------- - - (1) The file is called `_stpre' under MS-DOS and `.gstpre' on the -Atari ST. Under OSes that don't use home directories it is looked for -in the current directory. - - (2) The same considerations made above hold here too. The file is -called `_stinit' under MS-DOS and `.gstinit' on the Atari ST, and is -looked for in the current directory under OSes that don't use home -directories. - - -File: gst.info, Node: Syntax, Next: Test suite, Prev: Operation, Up: Using GNU Smalltalk - -Syntax of GNU Smalltalk -======================= - - The language that GNU Smalltalk accepts is based on the "file out" -syntax as shown in the "Green Book", also known as `Smalltalk-80: Bits -of History, Words of Advice' by Glenn Krasner. The entire grammar of -GNU Smalltalk is described in the `libgst/gst.y' file, but a brief -description may be in order: - ! - -executes the given statements immediately. For example, - - 16rFFFF printNl ! - -prints out the decimal value of hex `FFFF', followed by a newline. - - Smalltalk quitPrimitive ! - -exits from the system. You can also type a `C-d' to exit from -Smalltalk if it's reading statements from standard input. - - ! methodsFor: ! - ! - ! - ... - ! ! - - This syntax is used to define new methods in a given class. The - is an expression that evaluates to a class object, -which is typically just the name of a class, although it can be the -name of a class followed by the word `class', which causes the method -definitions that follow to apply to the named class itself, rather than -to its instances. Two consecutive bangs terminate the set of method -definitions. should be a string object that describes -what category to file the methods in. - - !Float methodsFor: 'pi calculations'! - - radiusToArea - ^self squared * Float pi ! - - radiusToCircumference - ^self * 2 * Float pi ! ! - - It also bears mentioning that there are two assignment operators: -`_' and `:='. Both are usable interchangeably, provided that they are -surrounded by spaces. The GNU Smalltalk kernel code uses the `:=' form -exclusively, but `_' is supported a) for compatibility with previous -versions of GNU Smalltalk b) because this is the correct mapping -between the assignment operator mentioned in the Blue Book and the -current ASCII definition. In the ancient days (like the middle 70's), -the ASCII underscore character was also printed as a back-arrow, and -many terminals would display it that way, thus its current usage. -Anyway, using `_' may lead to portability problems. - - The return operator, which is represented in the Blue Book as an -up-arrow, is mapped to the ASCII caret symbol `^'. - - A complete treatment of the Smalltalk syntax and of the class library -can be found in the included tutorial and class reference (*note Class -Reference: (gst-libs)Top.). - - More information on the implementation of the language can be found -in the `Blue Book'; the relevant parts are also available online as -HTML documents, at -. - - -File: gst.info, Node: Test suite, Next: Legal concerns, Prev: Syntax, Up: Using GNU Smalltalk - -Running the test suite -====================== - - GNU Smalltalk comes with a set of files that provides a simple -regression test suite. - - To run the test suite, you should be connected to the top-level -Smalltalk directory. Type - make check - - You should see the names of the test suite files as they are -processed, but that's it. Any other output indicates some problem. -The only system that I know of which currently fails the test suite is -the NeXT, and this is apparently due to their non-standard C runtime -libraries. - - The test suite is by no means exhaustive. *Note Future::. - - -File: gst.info, Node: Legal concerns, Prev: Test suite, Up: Using GNU Smalltalk - -Licensing of GNU Smalltalk -========================== - - Different parts of GNU Smalltalk comes under two licenses: the -virtual machine and the development environment (compiler and browser) -come under the GNU General Public License, while the system class -libraries come under the Lesser General Public License. - - The GPL licensing of the virtual machine means that all derivatives -of the virtual machine must be put under the same license. In other -words, it is strictly forbidden to put programs that include the GNU -Smalltalk virtual machine under a proprietary license. - - This however does not extend to Smalltalk programs, since these are -merely input data for the virtual machine. In general, these must -respect the terms of the Lesser General Public License(1). The -interpretation of this license for architectures different from that of -the C language is often difficult; the accepted one for Smalltalk is as -follows. The image file can be considered as an object file, falling -under Subsection 6a of the license, as long as it allows a user to load -an image, upgrade the library or otherwise apply modifications to it, -and save a modified image: this is most conveniently obtained by -allowing the user to use the read-eval-print loop that is embedded in -the GNU Smalltalk virtual machine. - - In other words, provided that you leave access to the loop in a -documented way, or that you provide a way to file in arbitrary files in -an image and save the result to a new image, you are obeying Subsection -6a of the Lesser General Public License, which is reported here: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that - the user can modify the Library and then relink to produce a - modified executable containing the modified Library. (It is - understood that the user who changes the contents of - definitions files in the Library will not necessarily be able - to recompile the application to use the modified definitions.) - - ---------- Footnotes ---------- - - (1) Of course, they may be more constrained by usage of GPL class -libraries. - - -File: gst.info, Node: Features, Next: Emacs, Prev: Using GNU Smalltalk, Up: Top - -Features of GNU Smalltalk -************************* - - In this section, the features which are specific to GNU Smalltalk are -described. These features include support for calling C functions from -within Smalltalk, accessing environment variables, and controlling -various aspects of compilation and execution monitoring. - - Note that, in general, GNU Smalltalk is much more powerful than the -original Smalltalk-80, as it contains a lot of methods that are common -in today's Smalltalk implementation and are present in the ANSI -Standard for Smalltalk, but were absent in the Blue Book. Examples -include Collection's `allSatisfy:' and `anySatisfy:' methods and many -methods in SystemDictionary (the Smalltalk dictionary's class). - -* Menu: - -* Memory access:: The direct memory accessing classes and methods, plus - broadcasts from the virtual machine. -* Namespaces:: Avoiding clashes between class names. -* Disk file-IO:: Methods for reading and writing disk files. -* Object dumping:: Methods that read and write objects in binary format. -* GC:: The GNU Smalltalk memory manager. -* Security:: Sandboxing and access control. -* Special objects:: Methods to assign particular properties to objects. -* Dynamic loading:: Picking external libraries and modules at run-time. -* Packages:: An easy way to install Smalltalk code into an image. - - -File: gst.info, Node: Memory access, Next: Namespaces, Up: Features - -Memory accessing methods -======================== - - GNU Smalltalk provides methods to query its own internal data -structures. You may determine the real memory address of an object or -the real memory address of the OOP table that points to a given object, -by using messages to the `Memory' class, described below. - - - Method on Object: asOop - Returns the index of the OOP for anObject. This index is immume - from garbage collection and is the same value used by default as - an hash value for anObject (it is returned by Object's - implementation of `hash' and `identityHash'). - - - Method on Integer: asObject - Converts the given OOP _index_ (not address) back to an object. - Fails if no object is associated to the given index. - - - Method on Integer: asObjectNoFail - Converts the given OOP _index_ (not address) back to an object. - Returns nil if no object is associated to the given index. - - Other methods in ByteArray and Memory allow to read various C types -(`doubleAt:', `ucharAt:', etc.). For examples of using `asOop' and -`asObject', look at the Blox source code in `blox-tk/BloxBasic.st'. - - Another interesting class is ObjectMemory. This provides a few -methods that enable one to tune the virtual machine"s usage of memory; -many methods that in the past were instance methods of Smalltalk or -class methods of Memory are now class methods of ObjectMemory. In -addition, and that's what the rest of this section is about, the -virtual machines signals events to its dependants exactly through this -class. - - The events that can be received are -"returnFromSnapshot" - This is sent every time an image is restarted, and substitutes the - concept of an "init block" that was present in previous versions. - -"aboutToQuit" - This is sent just before the interpreter is exiting, either because - `ObjectMemory quit' was sent or because the specified files were - all filed in. Exiting from within this event might cause an - infinite loop, so be careful. - -"aboutToSnapshot" - This is sent just before an image file is created. Exiting from - within this event will leave any preexisting image untouched. - -"finishedSnapshot" - This is sent just after an image file is created. Exiting from - within this event will not make the image unusable. - - -File: gst.info, Node: Namespaces, Next: Disk file-IO, Prev: Memory access, Up: Features - -Namespaces -========== - - [This section (and the implementation of namespaces in GNU Smalltalk) -is based on the paper `Structured Symbolic Name Spaces in Smalltalk', -by Augustin Mrazik.] - -Introduction ------------- - - The standard Smalltalk-80 programming environment supports symbolic -identification of objects in one global namespace--in the `Smalltalk' -system dictionary. This means that each global variable in the system -has its unique name which is used for symbolic identification of the -particular object in the source code (e.g. in expressions or methods). -Most important global variables are classes defining the behavior of -objects. - - In a development dealing with modelling of real systems, polymorphic -symbolic identification is often needed. This means that it should be -possible to use the same name for different classes or other global -variables. Let us mention class Module as an example which would mean -totaly different things for a programmer, for a computer technician and -for a civil engineer or an architect. - - This issue becomes inevitable if we start to work in a Smalltalk -environment supporting persistence. Polymorphism of classes becomes -necessary in the moment we start to think about storing classes in the -database since after restoring them into the running Smalltalk image a -mismatch with the current symbolic identification of the present classes -could occur. For example you might have the class Module already in -your image with the meaning of a program module (e.g. in a CASE system) -and you might attempt to load the class Module representing a part of -the computer hardware from the database for hardware configuration -system. The last class could get bound to the #Module symbol in the -Smalltalk system dictionary and the other class could remain in the -system as unbound class with full functionality, however, it could not -be accessed anymore at the symbolical level in the source code. - - Objects which have to be identified in the source code of methods or -message sends by their names are included in Smalltalk which is a sole -instance of SystemDictionary. Such objects may be identified simply by -stating their name as primary in a Smalltalk statement. The code is -compiled in the Smalitalk environment and if such a primary is found it -is bound to the corresponding object as receiver of the rest of the -message send. In this way Smalltalk as instance of SystemDictionary -represents the sole symbolic name space in the Smalltalk system. In the -following text the symbolic name space will be called simply environment -to make the text more clear. - -Concepts --------- - - To support polymorphic symbolical identification several environments -will be needed. The same name may be located concurrently in several -environments and point to diverse objects. - - However, symbolic navigation between these environments is needed. -Before approaching the problem of the syntax to be implemented and of -its very implementation, we have to point out which structural relations -are going to be established between environments. - - Since the environment has first to be symbolically identified to gain -access to its global variables, it has to be a global variable in -another environment. Obviously, `Smalltalk' will be the first -environment from which the navigation begins. From `Smalltalk' some of -the existing environments may be seen. From these environments other -sub-environments may be seen, etc. This means that environments -represent nodes in a graph where symbolic identifications from one -environment to another one represent branches. - - However, the symbolic identification should be unambiguous although -it will be polymorphic. This is why we should avoid cycles in the -environment graph. Cycles in the graph could cause also other problems -in the implementation, e.g. unability to use recursive algorithms. This -is why in general the environments build a directed acyclic graph(1). - - Let us call the partial ordering relation which occurs between the -two environments to be inheritance. Sub-environments inherits from their -super-environments. - - Not only that "inheritance" is the standard term for the partial -ordering relation in the lattice theory but the feature of inheritance -in the meaning of object-orientation is associated with this relation. -This means that all associations of the super-environment are valid -also in its sub-environments unless they are locally redefined in the -sub-environment. - - A super-environment includes all its sub-enviroments as associations -under their names. The sub-environment includes its super-environment -under the symbol `#Super'. Most environments inherit from Smalltalk, -the standard root environment, but they are not required to do so; this -is similar to how most classes derive from Object, yet one can derive a -class directly from nil. Since they all inherit from Smalltalk all -global variables defined in it, it is not necessary to define a special -global variable pointing to root in each environment. - - The inheritance links to the super-environments are used in the -lookup for a potentially inherited global variable. This includes -lookups by a compiler searching for a variable and lookups via methods -such as `#at:' and `#includesKey:'. - -Syntax ------- - - Global objects of an environment (local or inherited) may be -referenced by their symbol used in the source code, e.g. - John goHome - -if the `#John -> aMan' association exists in the particular environment -or one of its super-environments, all along the way to the root -environment. - - If an object has to be referenced from another environment (i.e. -which is not on the inheritance link) it has to be referenced either -relatively to the position of the current environment (using the Super -symbol), or absolutely (using the "full pathname" of the object, -navigating from Smalltalk through the tree of sub-environments). - - For the identification of global objects in another environment a -"pathname" of symbols is used. The symbols are separated by blanks, -i.e. the "look" to be implemented is that of - Smalltalk Tasks MyTask - -and of - Super Super Peter. - - Its similarity to a sequence of message sends is not casual, and -suggests the following syntax for write access:(2) - Smalltalk Tasks MyTask: anotherTask - - This resembles the way accessors are used for other objects. As it -is custom in Smalltalk, however, we are reminded by uppercase letters -that we are accessing global objects. - - For compatibility and efficiency (compile-time name resolving is -faster than run-time resolving), two special syntaxes have been -implemented. Standard dot notation can be used to read the value of a -global (like in `Tasks.MyTask' or `Tasks::MyTask'), and another syntax -returns the Association object for a particular global: so the last -example above can be written also like - #{Smalltalk.Tasks.MyTask} value: anotherTask - - The latter kind of literal (called a "variable binding") is also -valid inside literal arrays. - -Implementation --------------- - - A superclass of `SystemDictionary' called `RootNamespace' has to be -defined and many of the features of Smalltalk-80 SystemDictionaries will -be hosted by that class. `Namespace' and `RootNamespace' will in turn -become subclasses of `AbstractNamespace'. - - To handle inheritance, the following methods have to be defined or -redefined in Namespace (_not_ in RootNamespace): - -Accessors like `#at:ifAbsent:' and `#includesKey:' - Inheritance has to be implemented. - -Enumerators like `#do:' and `#keys' - This should return *all* the objects in the namespace, including - those which are inherited. - - For programs to be able to process correctly the "pathnames" and the -accessors, this feature must be implemented directly in -`AbstractNamespace'; it is easily handled through the standard -`doesNotUnderstand:' message for trapping message sends that the -virtual machine could not resolve. `AbstractNamespace' will also -implement a new set of methods that allow one to navigate through the -namespace hierarchy; these parallel those found in `Behavior' for the -class hierarchy. - - The most important task of the `Namespace' class is to provide -organization for the most important global objects in the Smalltalk -system--for the classes. This importance becomes even more crucial in -the structured environments which is first of all a framework for class -polymorphism. - - In Smalltalk the classes have the instance variable `name' which -holds the name of the class. Each defined class is included in -Smalltalk under this name. In a framework with several environments -the class should know the environment in which it has been created and -compiled. This is a new variable of Class which has to be defined and -properly set in relevant methods. In the mother environment the class -should be included under its name. - - Of course, any class (just like any other object) may be included -concurrently in several environments, even under different symbols in -the same or in diverse environments. We can consider this 'alias -names' of the particular class or global variable. However, classes -may be referenced under the other names or in other environments as -their mother environment e.g. for the purpose of intance creation or -messages to he class (class methods), but they cannot be compiled in -other environment. If a class compiles its methods it always compiles -them in its mother environment even if this compilation is requested -from another environment. If the syntax is not correct in the mother -environment, a compilation error simply occurs. - - An important issue is also the name of the class answered by the -class for the purpose of its identification in diverse tools (e.g. in a -browser). This has to be change to reflect the environment in which it -is shown, i.e. the method `nameIn: environment' has to be implemented -and used on proper places. - - These methods are not all which have to redefined in the Smalltalk -system to achieve full functionality of structured environments. In -particular, changes have to be made to the behavior classes, to the -user interface, to the compiler, to a few classes supporting -persistance. An interesting point that could not be noticed is that -the environment is easier to use if evaluations ("doits") are parsed as -if UndefinedObject's mother environment was _the current namespace_. - -Using namespaces ----------------- - - Using namespaces if often merely a matter of rewriting the loading -script this way: - Smalltalk addSubspace: #NewNS! - Namespace current: NewNS! - ... - Namespace current: Smalltalk! - - Also remember that pool dictionaries are actually "pool namespaces", -in the sense that including a namespace in the pool dictionaries list -will automatically include its superspaces too. Declaring a namespace -as a pool dictionaries is similar in this way to C++'s `using namespace' -declaration. - - Finally, be careful when working with fundamental system classes. -Although you can use code like - Smalltalk Set variableSubclass: #Set - ... - category: 'My application-Extensions' - -or the equivalent syntax `Set extend', this approach won't work when -applied to core classes. For example, you might be successful with a -`Set' or `WriteStream' object, but subclassing SmallInteger this way -can bite you in strange ways: integer literals will still belong to the -Smalltalk dictionary's version of the class (this holds for Arrays, -Strings, etc. too), primitive operations will still answer standard -Smalltalk `SmallIntegers', and so on. Or, `variableWordSubclasses' will -recognize 32-bit `Smalltalk LargeInteger' objects, but not LargeIntegers -belonging to your own namespace. - - Unfortunately this problem is not easy to solve since Smalltalk has -to cache the OOPs of determinate class objects for speed--it would not -be feasible to lookup the environment to which sender of a message -belongs every time the `+' message was sent to an Integer. - - So, GNU Smalltalk namespaces cannot yet solve 100% of the problem of -clashes between extensions to a class--for that you'll still have to -rely on prefixes to method names. But they _do_ solve the problem of -clashes between class names, or between class names and pool dictionary -names, so you might want to give them a try. An example of using -namespaces is given by the `examples/Publish.st' file in the GNU -Smalltalk source code directory. - - ---------- Footnotes ---------- - - (1) An inheritance tree in the current GNU Smalltalk implementation -of namespaces; a class can fake multiple inheritance by specifying a -namespace (environment, if you prefer) as one of its pool dictionaries. - - (2) Absent from the original paper. - - -File: gst.info, Node: Disk file-IO, Next: Object dumping, Prev: Namespaces, Up: Features - -Disk file-IO primitive messages -=============================== - - Four classes (`FileDescriptor', `FileStream', `File', `Directory') -allow you to create files and access the file system in a fully -object-oriented way. - - `FileDescriptor' and `FileStream' are much more powerful than the -corresponding C language facilities (the difference between the two is -that, like the C `stdio' library, `FileStream' does buffering). For one -thing, they allow you to write raw binary data in a portable -endian-neutral format. But, more importantly, these classes -transparently implement virtual filesystems and asynchronous I/O. - - Asynchronous I/O means that an input/output operation blocks the -Smalltalk Process that is doing it, but not the others, which makes them -very useful in the context of network programming. Virtual file systems -mean that these objects can transparently extract files from archives -such as `tar' and `gzip' files, through a mechanism that can be -extended through either shell scripting or Smalltalk programming. For -more information on these classes, look in the class reference, under -the `VFS' namespace. URLs may be used as file names; though, unless -you have loaded the `NetClients' package (*note Network support::), -only `file' URLs will be accepted. - - In addition, the three files, `stdin', `stdout', and `stderr' are -declared as global instances of `FileStream' that are bound to the -proper values as passed to the C virtual machine. They can be accessed -as either `stdout' and `FileStream stdout'--the former is easier to -type, but the latter can be clearer. - - Finally, `Object' defines four other methods: `print' and `printNl', -`store' and `storeNl'. These do a `printOn:' or `storeOn:' to the -"Transcript" object; this object, which is the sole instance of class -`TextCollector', normally delegates write operations to `stdout'. If -you load the Blox GUI, instead, the Transcript Window will be attached -to the Transcript object (*note Blox::). - - The `fileIn:' message sent to the FileStream class, with a file name -as a string argument, will cause that file to be loaded into Smalltalk. - - For example, - FileStream fileIn: 'foo.st' ! - -will cause `foo.st' to be loaded into GNU Smalltalk. - - -File: gst.info, Node: Object dumping, Next: GC, Prev: Disk file-IO, Up: Features - -The GNU Smalltalk ObjectDumper -============================== - - Another GNU Smalltalk-specific class, the `ObjectDumper' class, -allows you to dump objects in a portable, endian-neutral, binary -format. Note that you can use the `ObjectDumper' on ByteArrays too, -thanks to another GNU Smalltalk-specific class, `ByteStream', which -allows you to treat ByteArrays the same way you would treat disk files. - - For more information on the usage of the `ObjectDumper', look in the -class reference. - diff -rNU3 smalltalk-2.1.6/doc/gst.info-2 smalltalk-2.1.7/doc/gst.info-2 --- smalltalk-2.1.6/doc/gst.info-2 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-2 1970-01-01 01:00:00.000000000 +0100 @@ -1,1121 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: GC, Next: Security, Prev: Object dumping, Up: Features - -Memory management in GNU Smalltalk -================================== - - The GNU Smalltalk virtual machine is equipped with a garbage -collector, a facility that reclaims the space occupied by objects that -are no longer accessible from the system roots. The collector is -composed of several parts, each of which can be invoked by the virtual -machine using various tunable strategies, or invoked manually by the -programmer. - - These parts include a "generation scavenger", a "mark & sweep" -collectory with an incremental sweep phase, and a "compactor". All -these facilities work on different memory spaces and differs from the -other in its scope, speed and disadvantages (which are hopefully -balanced by the availability of different algorithms). What follows is -a description of these algorithms and of the memory spaces they work in. - - "NewSpace" is the memory space where young objects live. It is -composed of three sub-spaces: an object-creation space ("Eden") and two -"SurvivorSpaces". When an object is first created, it is placed in -Eden. When Eden starts to fill up (i.e., when the number of used bytes -in Eden exceeds the scavenge threshold), objects that are housed in -Eden or in the occupied SurvivorSpace and that are still reachable from -the system roots are copied to the unoccupied SurvivorSpace. As an -object survives different scavenging passes, it will be shuffled by the -scavenger from the occupied SurvivorSpace to the unoccupied one. When -the number of used bytes in SurvivorSpace is high enough that the -scavenge pause might be excessively long, the scavenger will move some -of the older surviving objects from NewSpace to "OldSpace". In the -garbage collection jargon, we say that such objects are being "tenured" -to OldSpace. - - This garbage collection algorithm is designed to reclaim short-lived -objects, that is those objects that expire while residing in NewSpace, -and to decide when enough data is residing in NewSpace that it is -useful to move some of it in OldSpace. A "copying" garbage collector -is particularly efficient in an object population whose members are -more likely to die than survive, because a scavenger spends most of its -time copying survivors, who will be few in number in such populations, -rather than tracing corpses, who will be many in number in such -populations. This fact makes scavenging especially well suited to -NewSpace, where a percentage of 90% or more objects often fails to -survive across a single scavenge. - - The particular structure of NewSpace has many advantages. On one -hand, having a large Eden and two small SurvivorSpaces has a smaller -memory footprint than having two equally big semi-spaces and allocating -new objects directly from the occupied one (by default, GNU Smalltalk -uses 420=300+60*2 kilobytes of memory, while a simpler configuration -would use 720=360*2 kilobytes). On the other hand, it makes tenuring -decisions particularly simple: the copying order is such that -short-lived objects tend to be copied last, while objects that are -being referred from OldSpace tend to be copied first: this is because -the tenuring strategy of the scavenger is simply to treat the -destination SurvivorSpace as a circular buffer, tenuring objects with a -First-In-First-Out policy. - - An object might become part of the scavenger root set for several -reasons: objects that have been tenured are roots if their data lives -in an OldSpace page that has been written to since the last scavenge -(more on this later), plus all objects can be roots if they are known -to be referenced from C code or from the Smalltalk stacks. - - In turn, some of the old objects can be made to live in a special -area, called "FixedSpace". Objects that reside in FixedSpace are -special in that their body is guaranteed to remain at a fixed address -(in general, GNU Smalltalk only ensures that the header of the object -remains at a fixed address in the Object Table). Because the garbage -collector can and does move objects, passing objects to foreign code -which uses the object's address as a fixed key, or which uses a -ByteArray as a buffer, presents difficulties. One can use `CObject' to -manipulate C data on the `malloc' heap, which indeed does not move, but -this can be tedious and requires the same attentions to avoid memory -leaks as coding in C. FixedSpace provides a much more convenient -mechanism: once an object is deemed fixed, the object's body will never -move through-out its life-time; the space it occupies will however -still be returned automatically to the FixedSpace pool when the object -is garbage collected. Note that because objects in FixedSpace cannot -move, FixedSpace cannot be compacted and can therefore suffer from -extensive fragmentation. For this reason, FixedSpace should be used -carefully. FixedSpace however is rebuilt (of course) every time an -image is brought up, so a kind of compaction of FixedSpace can be -achieved by saving a snapshot, quitting, and then restarting the newly -saved image. - - Memory for OldSpace and FixedSpace is allocated using a variation of -the system allocator `malloc': in fact, GNU Smalltalk uses the same -allocator for its own internal needs, for OldSpace and for FixedSpace, -but it ensures that a given memory page never hosts objects that reside -in separate spaces. New pages are mapped into the address space as -needed and devoted to OldSpace or FixedSpace segments; similarly, when -unused they may be subsequently unmapped, or they might be left in -place waiting to be reused by `malloc' or by another Smalltalk data -space. - - Garbage that is created among old objects is taken care of by a mark -& sweep collector which, unlike the scavenger which only reclaims -objects in NewSpace, can only reclaim objects in OldSpace. Note that -as objects are allocated, they will not only use the space that was -previously occupied in the Eden by objects that have survived, but they -will also reuse the entries in the global Object Table that have been -freed by object that the scavenger could reclaim. This quest for free -object table entries can be combined with the sweep phase of the -OldSpace collector, which can then be done incrementally, limiting the -disruptive part of OldSpace garbage collection to the mark phase. - - Several runs of the mark & sweep collector can lead to fragmentation -(where objects are allocated from several pages, and then become -garbage in an order such that a bunch of objects remain in each page -and the system is not able to recycle them). For this reason, the -system periodically tries to compact OldSpace. It does so simply by -looping through every old object and copying it into a new OldSpace. -Since the OldSpace allocator does not suffer from fragmentation until -objects start to be freed nor after all objects are freed, at the end -of the copy all the pages in the fragmented OldSpace will have been -returned to the system (some of them might already have been used by -the compacted OldSpace), and the new, compacted OldSpace is ready to be -used as the system oldspace. Growing the object heap (which is done -when it is found to be quite full even after a mark & sweep collection) -automatically triggers a compaction. - - You can run the compactor without marking live objects. Since the -amount of garbage in OldSpace is usually quite limited, the overhead -incurred by copying potentially dead objects is small enough that the -compactor still runs considerably faster than a full garbage -collection, and can still give the application some breathing room. - - Keeping OldSpace and FixedSpace in the same heap would then make -compaction of OldSpace (whereby it is rebuilt from time to time in -order to limit fragmentation) much less effective. Also, the `malloc' -heap is not used for FixedSpace objects because GNU Smalltalk needs to -track writes to OldSpace and FixedSpace in order to support efficient -scavenging of young objects. - - To do so, the grey page table(1) contains one entry for each page in -OldSpace or FixedSpace that is thought to contain at least a reference -to an object housed in NewSpace. Every page in OldSpace is created as -grey, and is considered grey until a scavenging pass finds out that it -actually does not contain pointers to NewSpace. Then the page is -recolored black(2), and will stay black until it is written to or -another object is allocated in them (either a new fixed object, or a -young object being tenured). The grey page table is expanded and -shrunk as needed by the virtual machine. - - Drawing an histogram of object sizes shows that there are only a few -sources of large objects on average (i.e., objects greater than a page -in size), but that enough of these objects are created dynamically that -they must be handled specially. Such objects should not be allocated -in NewSpace along with ordinary objects, since they would fill up -NewSpace prematurely (or might not even fit in it), thus accelerating -the scavenging rate, reducing performance and resulting in an increase -in tenured garbage. Even though this is not an optimal solution -because it effectively tenures these objects at the time they are -created, a benefit can be obtained by allocating these objects directly -in FixedSpace. The reason why FixedSpace is used is that these objects -are big enough that they don't result in fragmentation(3); and using -FixedSpace instead of OldSpace avoids that the compactor copies them -because this would not provide any benefit in terms of reduced -fragmentation. - - Smalltalk activation records are allocated from another special heap, -the context pool. This is because it is often the case that they can -be deallocated in a Last-In-First-Out (stack) fashion, thereby saving -the work needed to allocate entries in the object table for them, and -quickly reusing the memory that they use. When the activation record -is accessed by Smalltalk, however, the activation record must be turned -into a first-class `OOP'(4). Since even these objects are usually very -short-lived, the data is however not copied to the Eden: the eviction -of the object bodies from the context pool is delayed to the next -scavenging, which will also empty the context pool just like it empties -Eden. If few objects are allocated and the context pool turns full -before the Eden, a scavenging is also triggered; this is however quite -rare. - - Optionally, GNU Smalltalk can avoid the overhead of interpretation by -executing a given Smalltalk method only after that method has been -compiled into the underlying microprocessor's machine code. This -machine-code generation is performed automatically, and the resulting -machine code is then placed in `malloc'-managed memory. Once executed, -a method's machine code is left there for subsequent execution. -However, since it would require way too much memory to permanently -house the machine-code version of every Smalltalk method, methods might -be compiled more than once: when a translation is not used at the time -that two garbage collection actions are taken (scavenges and global -garbage collections count equally), the incremental sweeper discards -it, so that it will be recomputed if and when necessary. - - ---------- Footnotes ---------- - - (1) The denomination "grey" comes from the lexicon of "tri-color -marking", which is an abstraction of every possible garbage -collection algorithms: in tri-color marking, grey objects are those -that are known to be reachable or that we are not interested in -reclaiming, yet have not been scanned yet to mark the objects that -they refer to as reachable. - - (2) Black objects are those that are known to be reachable or that -we are not interested in reclaiming, and are known to have references -only to other black or grey objects (in case you're curious, the -tri-color marking algorithm goes on like this: object not yet known -to be reachable are white, and when all objects are either black or -white, the white ones are garbage). - - (3) Remember that free pages are shared among the three heaps, -that is, OldSpace, FixedSpace and the `malloc' heap. When a large -object is freed, the memory that it used can be reused by `malloc' or -by OldSpace allocation - - (4) This is short for "Ordinary Object Pointer". - - -File: gst.info, Node: Security, Next: Special objects, Prev: GC, Up: Features - -Security in GNU Smalltalk -========================= - - -File: gst.info, Node: Special objects, Next: Dynamic loading, Prev: Security, Up: Features - -Special kinds of object -======================= - - A few methods in Object support the creation of particular objects. -This include: - - * finalizable objects - - * weak and ephemeron objects (i.e. objects whose contents are - considered specially, during the heap scanning phase of garbage - collection). - - * read-only objects (like literals found in methods) - - * fixed objects (guaranteed not to move across garbage collections) - - - They are: - - - Method on Object: makeWeak - Marks the object so that it is considered weak in subsequent - garbage collection passes. The garbage collector will consider - dead an object which has references only inside weak objects, and - will replace references to such an "almost-dead" object with nils, - and then send the `mourn' message to the object. - - - Method on Object: makeEphemeron - Marks the object so that it is considered specially in subsequent - garbage collection passes. Ephemeron objects are sent the message - `mourn' when the first instance variable is not referenced or is - referenced _only through another instance variable in the - ephemeron_. - - Ephemerons provide a very versatile base on which complex - interactions with the garbage collector can be programmed (for - example, finalization which is described below is implemented with - ephemerons). - - - Method on Object: addToBeFinalized - Marks the object so that, as soon as it becomes unreferenced, its - `finalize' method is called. Before `finalize' is called, the VM - implicitly removes the objects from the list of finalizable ones. - If necessary, the `finalize' method can mark again the object as - finalizable, but by default finalization will only occur once. - - Note that a finalizable object is kept in memory even when it has - no references, because tricky finalizers might "resuscitate" the - object; automatic marking of the object as not to be finalized has - the nice side effect that the VM can simply delay the releasing of - the memory associated to the object, instead of being forced to - waste memory even after finalization happens. - - An object must be explicitly marked as to be finalized _every time - the image is loaded_; that is, finalizability is not preserved by - an image save. This was done because in most cases finalization is - used together with `CObject's that would be stale when the image is - loaded again, causing a segmentation violation as soon as they are - accessed by the finalization method. - - - Method on Object: removeToBeFinalized - Removes the to-be-finalized mark from the object. As I noted - above, the finalize code for the object does not have to do this - explicitly. - - - Method on Object: finalize - This method is called by the VM when there are no more references - to the object (or, of course, if it only has references inside - weak objects). - - - Method on Object: isReadOnly - This method answers whether the VM will refuse to make changes to - the objects when methods like `become:', `basicAt:put:', and - possibly `at:put:' too (depending on the implementation of the - method). Note that GNU Smalltalk won't try to intercept - assignments to fixed instance variables, nor assignments via - `instVarAt:put:'. Many objects (Characters, `nil', `true', - `false', method literals) are read-only by default. - - - Method on Object: makeReadOnly: aBoolean - Changes the read-only or read-write status of the receiver to that - indicated by `aBoolean'. - - - Method on Object: basicNewInFixedSpace - Same as `#basicNew', but the object won't move across garbage - collections. - - - Method on Object: basicNewInFixedSpace: - Same as `#basicNew:', but the object won't move across garbage - collections. - - - Method on Object: makeFixed - Ensure that the receiver won't move across garbage collections. - This can be used either if you decide after its creation that an - object must be fixed, or if a class does not support using `#new' - or `#new:' to create an object - - Note that, although particular applications will indeed have a need -for fixed, read-only or finalizable objects, the `#makeWeak' primitive -is seldom needed and weak objects are normally used only indirectly, -through the so called "weak collections". These are easier to use -because they provide additional functionality (for example, `WeakArray' -is able to determine whether an item has been garbage collected, and -`WeakSet' implements hash table functionality); they are: - - * `WeakArray' - - * `WeakSet' - - * `WeakKeyDictionary' - - * `WeakValueLookupTable' - - * `WeakIdentitySet' - - * `WeakKeyIdentityDictionary' - - * `WeakValueIdentityDictionary' - - Versions of GNU Smalltalk preceding 2.1 included a -`WeakKeyLookupTable' class which has been replaced by -`WeakKeyDictionary'; the usage is completely identical, but the -implementation was changed to use a more efficient approach based on -ephemeron objects. - - -File: gst.info, Node: Dynamic loading, Next: Packages, Prev: Special objects, Up: Features - -Dynamic loading -=============== - - The `DLD' class enhances the C callout mechanism to automatically -look for unresolved functions in a series of program-specified -libraries. To add a library to the list, evaluate code like the -following: - DLD addLibrary: '/usr/lib/libc' - - The extension (`.so', `.sl', `.a', `.dll' depending on your -operating system) will be added automatically. You are advised not to -specify it for portability reasons. - - You will then be able to use the standard C call-out mechanisms to -define all the functions in the C run-time library. Note that this is -a potential security problem (especially if your program is SUID root -under Unix), so you might want to disable dynamic loading when using -GNU Smalltalk as an extension language. To disable dynamic loading, -configure GNU Smalltalk passing the `--without-dld' switch. - - Note that a `DLD' class will be present even if dynamic loading is -disabled (either because your system is not supported, or by the -`--without-dld' configure switch) but any attempt to perform dynamic -linking will result in an error. - - -File: gst.info, Node: Packages, Prev: Dynamic loading, Up: Features - -Packages -======== - - Thanks to Andreas Klimas' insight, GNU Smalltalk now includes a -powerful packaging system which allows one to file in components -("goodies" in Smalltalk's very folkloristic terminology) without caring -of whether they need other goodies to be loaded. - - The packaging system is implemented by a Smalltalk class, -`PackageLoader', which looks for information about packages in the XML -file named (guess what) `packages.xml', in the current image directory. -There are two ways to load something using the packaging system. The -first way is to use the PackageLoader's `fileInPackage:' and -`fileInPackages:' methods. For example: - PackageLoader fileInPackages: #('Blox' 'Browser'). - PackageLoader fileInPackage: 'Compiler'. - - The second way is to use the `Load.st' file which lies in the GST -image directory. For example, start GNU Smalltalk with this command -line: - - gst -qsK Load.st -a Browser Blox Compiler(1) - -and GST will automatically file in: - - * BloxTK, needed by Blox - - * Blox, loaded first because Browser needs it - - * Parser, not specified, but needed by Browser and Compiler - - * Browser - - * Compiler (Blox is skipped because it has already been loaded) - - Then it will save the Smalltalk image, and finally exit! - - To provide support for this system, you have to give away with your -GST goodies a small file (say you call it `mypkg') which looks like -this: - - - - - MyPackage - MyPrereq1 - MyPrereq2 - MyCallout1 - MyCallout2 - Load.st - Finish.st - libmymodule - yourDirectoryName - - Load.st - Finish.st - MyFile1.st - MyFile2.st - - - - - - - - then people who install your package will only have to do - gst-package mypkg - - which is a small shell script which will merge the file with -`packages.xml', install the files specified in the `file' tags and load -the packages. - - Simple, isn't it? For examples of package declarations, have a look -at the `packages.xml' file as distributed with GNU Smalltalk. The GNU -Smalltalk makefile also use `gst-package' to install packages and to -prepare the distribution tarballs. - - The rest of this chapter discusses the packages provided with GNU -Smalltalk. - -* Menu: - -* Blox, BloxTK, and Browser: Blox. -* Parser, STInST, Compiler: Smalltalk-in-Smalltalk. -* DB and MySQL: Database. -* I18N: Locales. -* SUnit: SUnit. -* TCP, WebServer, NetClients: Network support. -* XML, XPath, XSL: XML. -* Minor packages: Minor packages. - - ---------- Footnotes ---------- - - (1) When using an alternate image path, don't use the -K option and -pass the full path to the `Load.st' script. - - -File: gst.info, Node: Blox, Next: Smalltalk-in-Smalltalk, Up: Packages - -Blox ----- - - Blox is a GUI building block tool kit. It is an abstraction on top -of the a platform's native GUI toolkit that is common across all -platforms. Writing to the Blox interface means your GUI based -application will be portable to any platform where Blox is supported. - - The Blox classes, which reside in the `BLOX' namespace and are fully -documented in *Note BLOX: (gst-libs)BLOX, act as wrappers around other -toolkits, which constitute the required portability layer; currently -the only one supported is Tcl/Tk but alternative versions of Blox, for -example based on Gtk+ and GNOME, have been considered and might even -replace Tcl/Tk in the future(1). Instead of having to rewrite widgets -and support for each platform, Blox simply asks the other toolkit to do -so (currently, it hands valid Tcl code to a standard Tcl 8.0 -environment); the abstraction from the operating system being used is -then extracted out of GNU Smalltalk. - - Together with the toolkit, there is a browsing system in the -`browser' directory that will allow the programmer to view the source -code for existing classes, to modify existing classes and methods, to -get detailed information about the classes and methods, and to evaluate -code within the browser. In addition, some simple debugging tools are -provided. An Inspector window allows the programmer to graphically -inspect and modify the representation of an object and a walkback -inspector was designed which will display a backtrace when the program -encounters an error. - - The Transcript global object is redirected to print to the -transcript window instead of printing to stdout, and the transcript -window as well as the workspaces, unlike the console read-eval-print -loop, support variables that live across multiple evaluations: - - a := 2 "Do-it" - a + 2 "Print-it: 4 will be shown" - - This browser evolved from an Xt-based version developed around 1993 -written by Brad Diller (bdiller@docent.com). Because of legal concerns -about possible copyright infringement because his initial -implementation used parts of ParcPlace's Model-View-Controller (MVC) -message interface, he and Richard Stallman devised a new window update -scheme which is more flexible and powerful than MVC's dependency -mechanism, and allowed him to purge all the MVC elements from the -implementation. - - The code was then further improved to employ a better class design -(for example, Brad used Dictionaries for classes still to be fleshed -out), to be aesthetically more appealing (taking advantage of the new -Blox text widget, the code browsers were enhanced with syntax -highlighting), and to be more complete (adding multiple "views" to the -inspector, namespace support and a complete debugger). - - To start the browser you can simply type: - - gst -qK browser/Run.st - - This will load any requested packages, then, if all goes well, a -worksheet window with a menu named "Smalltalk" will appear in the -top-left corner of the screen. You might want to file-in -`browser/Run.st' from your `.stinit' file (*note Startup sequence: -Operation.) or to run it automatically through ObjectMemory (*note -Memory access::). - - ---------- Footnotes ---------- - - (1) The Gtk+ bindings for GNU Smalltalk are in an embryonic -state; you can find them in the `GTK' package if you have Gtk+ 2.0 -or later installed - - -File: gst.info, Node: Smalltalk-in-Smalltalk, Next: Database, Prev: Blox, Up: Packages - -The Smalltalk-in-Smalltalk library ----------------------------------- - - The Smalltalk-in-Smalltalk library is a set of classes for looking at -Smalltalk code, constructing models of Smalltalk classes that can later -be created for real, analyzing and performing changes to the image, -finding smelly code and automatically doing repetitive changes. This -package incredibly enhances the reflective capabilities of Smalltalk. - - Being quite big (20000 source code lines) this package is split into -three different packages: `Parser' loads the parser only, `STInST' -loads various other tools (which compose the "Refactoring Browser" -package by John Brant and Don Roberts and will be the foundation for -GNU Smalltalk's next generation browser), `STInSTTest' performs -comprehensive unit tests(1) (*note SUnit::). Porting of the `STInST' -package will be completed in GNU Smalltalk 2.2. - - A fundamental part of the system is the recursive-descent parser -which creates parse nodes in the form of instances of subclasses of -`RBProgramNode'. - - The parser's extreme flexibility can be exploited in three ways, all -of which are demonstrated by source code available in the distribution: - - * First, actions are not hard-coded in the parser itself: the parser - creates a parse tree, then hands it to methods in `RBParser' that - can be overridden in different `RBParser' subclasses. This is done - by the compiler itself, in which a subclass of `RBParser' (class - `STFileInParser') hands the parse trees to the `STCompiler' class. - - * Second, an implementation of the "visitor" pattern is provided to - help in dealing with parse trees created along the way; this - approach is demonstrated by the Smalltalk code pretty-printer in - class `RBFormatter', by the syntax highlighting engine included - with the browser, and by the compiler. - - * The parser is able to perform complex tree searches and rewrites, - through the ParseTreeSearcher and ParseTreeRewriter classes. This - mechanism is exploited by most of the tools loaded by the `STInST' - package. - - In addition, two applications were created on top of this library -which are specific to GNU Smalltalk. The first is a compiler for -Smalltalk methods written in Smalltalk itself, whose source code -provides good insights into the GNU Smalltalk virtual machine. - - The second is the automatic documentation extractor, contained in -two files, `compiler/STLoader.st' and `compiler/STLoaderObjs.st'. To -be able to create Texinfo files even if the library cannot be loaded -(for example, `BLOX' requires a running X server) Smalltalk source code -is interpreted and objects for the classes and methods being read in -are created; then, polymorphism allows one to treat these exactly like -usual classes which can be fed to GNU Smalltalk's `ClassPublisher' -(found in `examples/Publish.st'. - - ---------- Footnotes ---------- - - (1) The tests can take *hours* to complete! - - -File: gst.info, Node: Database, Next: Locales, Prev: Smalltalk-in-Smalltalk, Up: Packages - -Database connectivity ---------------------- - - GNU Smalltalk includes support for connecting to databases. -Currently this support is limited to retrieving result sets from SQL -selection queries and executing SQL data manipulation queries; in the -future however a full object model will be available that hides the -usage of SQL. - - Classes that are independent of the database management system that -is in use reside in package `DB', while the drivers proper reside in -separate packages which have `DB' as a prerequisite; currently, the -only driver that is currently supplied is for _MySQL_ (loaded with -package _MySQL_). - - Using the library is fairly simple. To execute a query you need to -create a connection to the database, create a statement on the -connection, and execute your query. For example, let's say I want to -connect to the `test' database on the localhost. My user name is `doe' -and my password is `mypass'. - - | connection statement result | - - connection := Jdm MySQL JdmConnection on: - (Jdm JdmConnectionSpec new initialize - user: 'doe'; password: 'mypass'; - database: 'test'). - - You can see that the DBMS-specific classes live in a sub-namespace -of `Jdm', while DBMS-independent classes live in `Jdm'. `Jdm' are the -initials of the original developer of the driver, and also an acronym -for _Just a Database Manager_--silly acronym, I know. - - Here is how I execute a query. - - statement := connection createStatement. - result := statement - executeQuery: 'insert into aTable (aField) values (aValue)'. - - The result that is returned is a `JdmResult'. It holds two values: -the result type and the actual result value. For update queries the -type is set to #update and the value is an integer designating the -number of rows effected. For read queries (such as selection queries) -the type is set to #read and the value is a `JdmResultSet'. - - A `JdmResultSet' reads rows off the result stream. It also contains -a collection of column information (instances of `JdmColumn') which -describe the type, size, and other characteristics of the returned -column. Generally you grab the columns by sending the "next" message -to the result set. The next message returns a Boolean which indicates -whether or not there are any more rows to be read. Do NOT read past -the last row: currently the driver will block when this happens. - - A common usage of a JdmResultSet would be: - - | resultSet value | - [resultSet next] whileFalse: [value := resultSet valueNamed: 'columnName']. - - The result set has several accessing methods. They are: - -`valueAt: anInteger' - returns the Smalltalk value at column number anInteger - -`rawValueAt: anInteger' - returns the raw (String) value at column number anInteger - -`valueNamed: aString' - returns the Smalltalk value for the column named aString. - -`rawValueNamed: aString' - returns the raw (String) value for the column named aString - - To run the test suites your mysql server needs to be on the local -machine, the database "test" needs to exist, and a user named `utente' -on the localhost need full access to the database "test". - - The aforementioned conditions are true when Mysql is first installed. - - The tests run fairly slow since each row consists of all possible -Mysql types and many of the inserted values are generated. - - To run the tests execute the following: - - Jdm MySQL JdmMysqlTestSuite new run printNl - - -File: gst.info, Node: Locales, Next: SUnit, Prev: Database, Up: Packages - -Internationalization and localization support ---------------------------------------------- - - Different countries and cultures have varying conventions for how to -communicate. These conventions range from very simple ones, such as the -format for representing dates and times, to very complex ones, such as -the language spoken. Provided the programs are written to obey the -choice of conventions, they will follow the conventions preferred by the -user. GNU Smalltalk provides the `I18N' package to ease you in doing -so. - - "Internationalizing" software means programming it to be able to -adapt to the user's favorite conventions. These conventions can get -pretty complex; for example, the user might specify the locale -`espana-castellano' for most purposes, but specify the locale -`usa-english' for currency formatting: this might make sense if the user -is a Spanish-speaking American, working in Spanish, but representing -monetary amounts in US dollars. You can see that this system is simple -but, at the same time, very complete. This manual, however, is not the -right place for a thorough discussion of how an user would set up his -system for these conventions; for more information, refer to your -operating system's manual or to the GNU C library's manual. - - GNU Smalltalk inherits from ISO C the concept of a "locale", that -is, a collection of conventions, one convention for each purpose, and -maps each of these purposes to a Smalltalk class defined by the `I18N' -package, and these classes form a small hierarchy with class -`Locale'(1) as its roots: - - * `LcNumeric' formats numbers; `LcMonetary' and `LcMonetaryISO' - format currency amounts. - - * `LcTime' formats dates and times. - - * `LcMessages' translates your program's output. Of course, the - package can't automatically translate your program's output - messages into other languages; the only way you can support output - in the user's favorite language is to translate these messages by - hand. The package does, though, provide methods to easily handle - translations into multiple languages. - - Basic usage of the `I18N' package involves a single selector, the -question mark (`?'), which is a rarely used yet valid character for a -Smalltalk binary message. The meaning of the question mark selector is -"Hey, how do you say ... under your convention?". You can send `?' to -either a specific instance of a subclass of `Locale', or to the class -itself; in this case, rules for the default locale (which is specified -via environment variables) apply. You might say, for example, `LcTime -? Date today' or, for example, `germanMonetaryLocale ? account -balance'. This syntax can be at first confusing, but turns out to be -convenient because of its consistency and overall simplicity. - - Here is how `?' works for different classes: - - - Method on LcTime: ? aString - Format a date, a time or a timestamp (`DateTime' object). - - - Method on LcNumber: ? aString - Format a number. - - - Method on LcMonetary: ? aString - Format a monetary value together with its currency symbol. - - - Method on LcMonetaryISO: ? aString - Format a monetary value together with its ISO currency symbol. - - - Method on LcMessages: ? aString - Answer an `LcMessagesDomain' that retrieves translations from the - specified file. - - - Method on LcMessagesDomain: ? aString - Retrieve the translation of the given string.(2) - - The package provides much more functionality, including more advanced -formatting options support for Unicode, and conversion to and from -several character sets. For more information, refer to *Note I18N: -(gst-libs)I18N. - - As an aside, the representation of locales that the package uses is -exactly the same as the C library, which has many advantages: the burden -of mantaining locale data is removed from GNU Smalltalk's mantainers; -the need of having two copies of the same data is removed from GNU -Smalltalk's users; and finally, uniformity of the conventions assumed -by different internationalized programs is guaranteed to the end user. - - In addition, the representation of translated strings is the standard -MO file format adopted by the GNU `gettext' library. - - ---------- Footnotes ---------- - - (1) All the classes mentioned in this section reside in the -`I18N' namespace. - - (2) The `?' method does not apply to the LcMessagesDomain class -itself, but only to its instances. This is because LcMessagesDomain -is not a subclass of Locale. - - -File: gst.info, Node: SUnit, Next: Network support, Prev: Locales, Up: Packages - -The SUnit testing package -------------------------- - - `SUnit' is a framework to write and perform test cases in Smalltalk, -originarily written by the father of Extreme Programming(1), Kent Beck. -`SUnit' allows one to write the tests and check results in Smalltalk; -while this approach has the disadvantage that testers need to be able -to write simple Smalltalk programs, the resulting tests are very stable. - - What follows is a description of the philosophy of `SUnit' and a -description of its usage, excerpted from Kent Beck's paper in which he -describes `SUnit'. - -Where should you start? -....................... - - Testing is one of those impossible tasks. You'd like to be absolutely -complete, so you can be sure the software will work. On the other hand, -the number of possible states of your program is so large that you can't -possibly test all combinations. - - If you start with a vague idea of what you'll be testing, you'll -never get started. Far better to _start with a single configuration -whose behavior is predictable_. As you get more experience with your -software, you will be able to add to the list of configurations. - - Such a configuration is called a "fixture". Two example fixtures -for testing Floats can be `1.0' and `2.0'; two fixtures for testing -Arrays can be `#()' and `#(1 2 3)'. - - By choosing a fixture you are saying what you will and won't test -for. A complete set of tests for a community of objects will have many -fixtures, each of which will be tested many ways. - - To design a test fixture you have to - * Subclass TestCase - - * Add an instance variable for each known object in the fixture - - * Override setUp to initialize the variables - -How do you represent a single unit of testing? -.............................................. - - You can predict the results of sending a message to a fixture. You -need to represent such a predictable situation somehow. The simplest -way to represent this is interactively. You open an Inspector on your -fixture and you start sending it messages. There are two drawbacks to -this method. First, you keep sending messages to the same fixture. If -a test happens to mess that object up, all subsequent tests will fail, -even though the code may be correct. - - More importantly, though, you can't easily communicate interactive -tests to others. If you give someone else your objects, the only way -they have of testing them is to have you come and inspect them. - - By representing each predictable situation as an object, each with -its own fixture, no two tests will ever interfere. Also, you can easily -give tests to others to run. _Represent a predictable reaction of a -fixture as a method._ Add a method to TestCase subclass, and stimulate -the fixture in the method. - -How do you test for expected results? -..................................... - - If you're testing interactively, you check for expected results -directly, by printing and inspecting your objects. Since tests are in -their own objects, you need a way to programmatically look for -problems. One way to accomplish this is to use the standard error -handling mechanism (`#error:') with testing logic to signal errors: - - 2 + 3 = 5 ifFalse: [self error: 'Wrong answer'] - - When you're testing, you'd like to distinguish between errors you are -checking for, like getting six as the sum of two and three, and errors -you didn't anticipate, like subscripts being out of bounds or messages -not being understood. - - There's not a lot you can do about unanticipated errors (if you did -something about them, they wouldn't be unanticipated any more, would -they?) When a catastrophic error occurs, the framework stops running the -test case, records the error, and runs the next test case. Since each -test case has its own fixture, the error in the previous case will not -affect the next. - - The testing framework makes checking for expected values simple by -providing a method, `#should:', that takes a Block as an argument. If -the Block evaluates to true, everything is fine. Otherwise, the test -case stops running, the failure is recorded, and the next test case -runs. - - So, you have to _turn checks into a Block evaluating to a Boolean, -and send the Block as the parameter to `#should:'_. - - In the example, after stimulating the fixture by adding an object to -an empty Set, we want to check and make sure it's in there: - - SetTestCasee>>#testAdd - empty add: 5. - self should: [empty includes: 5] - - There is a variant on `TestCase>>#should:'. `TestCase>>#shouldnt:' -causes the test case to fail if the Block argument evaluates to true. -It is there so you don't have to use `(...) not'. - - Once you have a test case this far, you can run it. Create an -instance of your TestCase subclass, giving it the selector of the -testing method. Send `run' to the resulting object: - - (SetTestCase selector: #testAdd) run - - If it runs to completion, the test worked. If you get a walkback, -something went wrong. - -How do you collect and run many different test cases? -..................................................... - - As soon as you have two test cases running, you'll want to run them -both one after the other without having to execute two do it's. You -could just string together a bunch of expressions to create and run test -cases. However, when you then wanted to run "this bunch of cases and -that bunch of cases" you'd be stuck. - - The testing framework provides an object to represent "a bunch of -tests", `TestSuite'. A `TestSuite' runs a collection of test cases and -reports their results all at once. Taking advantage of polymorphism, -`TestSuites' can also contain other `TestSuites', so you can put Joe's -tests and Tammy's tests together by creating a higher level suite. -_Combine test cases into a test suite._ - - (TestSuite named: 'Money') - add: (MoneyTestCase selector: #testAdd); - add: (MoneyTestCase selector: #testSubtract); - run - - The result of sending `#run' to a `TestSuite' is a `TestResult' -object. It records all the test cases that caused failures or errors, -and the time at which the suite was run. - - All of these objects are suitable for being stored in the image and -retrieved. You can easily store a suite, then bring it in and run it, -comparing results with previous runs. - - ---------- Footnotes ---------- - - (1) Extreme Programming is a software engineering technique that -focuses on team work (to the point that a programmer looks in -real-time at what another one is typing), frequent testing of the -program, and incremental design. - - -File: gst.info, Node: Network support, Next: XML, Prev: SUnit, Up: Packages - -TCP, WebServer, NetClients --------------------------- - - GNU Smalltalk includes an almost complete abstraction of the TCP, UDP -and IP protocols. Although based on the standard BSD sockets, this -library provides facilities such as buffering and preemptive I/O which -a C programmer usually has to implement manually. - - The distribution includes a few tests (mostly loopback tests that -demonstrate both client and server connection), which are class methods -in `Socket'. This code should guide you in the process of creating and -using both server and client sockets; after creation, sockets behave -practically the same as standard Smalltalk streams, so you should not -have particular problems. For more information, refer to *Note TCP: -(gst-libs)TCP. - - In addition, package `WebServer' implements a servlet-based web -serving framework engine, including support for file servers as well as -Wiki-style servers(1); each server is a subclass of `Servlet', and -different servers can live together under different paths. See the -class side examples protocol of WebServer to get it up and running -quick. - - The server is based on the GPL'ed WikiWorks project. For up to -date/more info go see >. -Many thanks go to the various people who had worked on the version on -which the server is based: - - Joseph Bacanskas joeb@mutual.navigant.com - Travis Griggs tgriggs@keyww.com - Ralph Johnson johnson@cs.uiuc.edu - Eliot Miranda eliot@objectshare.com - Ken Treis ktreis@keyww.com - John Brant brant@cs.uiuc.edu - Joe Whitesell whitesell@physsoft.com - - Apart from porting to GNU Smalltalk, a number of changes were made -to the code, including refactoring of classes, better aesthetics, -authentication support, virtual hosting, and HTTP 1.1 compliance. - - There is also code implementing the most popular Internet protocols: -FTP, HTTP, NNTP, SMTP, POP3 and IMAP. These classes, loaded by the -`NetClients' package, are derived from multiple public domain and free -software packages available for other Smalltalk dialects and ported to -GNU Smalltalk. Future version of GNU Smalltalk will include -documentation for these as well. - - ---------- Footnotes ---------- - - (1) A Wiki is a kind of collaborative web site, which allows one to -edit the contents of a page. - - -File: gst.info, Node: XML, Next: Minor packages, Prev: Network support, Up: Packages - -An XML parser and object model for GNU Smalltalk ------------------------------------------------- - - The XML parser library for Smalltalk, loaded as package XML includes -a validating XML parser and Document Object Model. This library is -rapidly becoming a standard in the Smalltalk world and a XSL -interpreter based on it is bundled with GNU Smalltalk as well (see -packages XPath and XSL). - - -File: gst.info, Node: Minor packages, Prev: XML, Up: Packages - -Minor packages --------------- - - Various other "minor" packages are provided, typically as examples of -writing modules for GNU Smalltalk (*note Linking your libraries to the -virtual machine: External modules.). These are Regex, providing Perl5 -regular expressions, GDBM, which is an interface to the GNU database -manager, and MD5, which provides a simple class to quickly compute -cryptographically strong hash values. - - -File: gst.info, Node: Emacs, Next: C and Smalltalk, Prev: Features, Up: Top - -Smalltalk interface for GNU Emacs -********************************* - - GNU Smalltalk comes with its own Emacs mode for hacking Smalltalk -code. It also provides tools for interacting with a running Smalltalk -system in an Emacs subwindow. - -* Menu: - -* Autoloading:: Autoloading GNU Smalltalk mode. -* Editing:: Autoindent and more for GNU Smalltalk. -* Interactor:: Smalltalk interactor mode. - - -File: gst.info, Node: Autoloading, Next: Editing, Up: Emacs - -Autoloading GNU Smalltalk mode -============================== - - To cause Emacs to automatically go into Smalltalk mode when you edit -a Smalltalk file (one with the extension `.st'), you need to add the -following lines to your `.emacs' file: - - (setq auto-mode-alist - (append '(("\\.st\\'" . smalltalk-mode)) - auto-mode-alist)) - - (autoload 'smalltalk-mode "smalltalk-mode.elc" "" t) - -where is the path to where the two Emacs Lisp files included -with GNU Smalltalk are installed (by default, something like -`/usr/local/share/emacs/site-lisp'). - - -File: gst.info, Node: Editing, Next: Interactor, Prev: Autoloading, Up: Emacs - -Smalltalk editing mode -====================== - - The GNU Smalltalk editing mode is there to assist you in editing your -Smalltalk code. It tries to be smart about indentation and provides a -few cooked templates to save you keystrokes. - - Since Smalltalk syntax is highly context sensitive, the Smalltalk -editing mode will occasionally get confused when you are editing -expressions instead of method definitions. In particular, using local -variables, thus: - - | foo | - foo := 3. - ^foo squared ! - -will confuse the Smalltalk editing mode, as this might also be a -definition the binary operator `|', with second argument called -. If you find yourself confused when editing this type of -expression, put a dummy method name before the start of the expression, -and take it out when you're done editing, thus: - - x - | foo | - foo := 3. - ^foo squared ! - diff -rNU3 smalltalk-2.1.6/doc/gst.info-3 smalltalk-2.1.7/doc/gst.info-3 --- smalltalk-2.1.6/doc/gst.info-3 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-3 1970-01-01 01:00:00.000000000 +0100 @@ -1,1068 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: Interactor, Prev: Editing, Up: Emacs - -Smalltalk interactor mode -========================= - - An interesting feature of Emacs Smalltalk is the Smalltalk -interactor, which basically allows you run in GNU Emacs with Smalltalk -files in one window, and Smalltalk in the other. You can, with a -single command, edit and change method definitions in the live -Smalltalk system, evaluate expressions, make image snapshots of the -system so you can pick up where you left off, file in an entire -Smalltalk file, etc. It makes a tremendous difference in the -productivity and enjoyment that you'll have when using GNU Smalltalk. - - To start up the Smalltalk interactor, you must be running GNU Emacs -and in a buffer that's in Smalltalk mode. Then, if you type `C-c m'. -A second window will appear with GNU Smalltalk running in it. - - This window is in most respects like a Shell mode window. You can -type Smalltalk expressions to it directly and re-execute previous things -in the window by moving the cursor back to the line that contains the -expression that you wish to re-execute and typing return. - - Notice the status in the mode line (e.g. `starting-up', `idle', -etc). This status will change when you issue various commands from -Smalltalk mode. - - When you first fire up the Smalltalk interactor, it puts you in the -window in which Smalltalk is running. You'll want to switch back to -the window with your file in it to explore the rest of the interactor -mode, so do it now. - - To execute a range of code, mark the region around and type `C-c e'. -The expression in the region is sent to Smalltalk and evaluated. The -status will change to indicate that the expression is executing. This -will work for any region that you create. If the region does not end -with an exclamation point (which is syntactically required by -Smalltalk), one will be added for you. - - There is also a shortcut, `C-c d' (also invokeable as `M-x -smalltalk-doit'), which uses a simple heuristic to figure out the start -and end of the expression: it searches forward for a line that begins -with an exclamation point, and backward for a line that does not begin -with space, tab, or the comment character, and sends all the text in -between to Smalltalk. If you provide a prefix argument (by typing `C-u -C-c d' for instance), it will bypass the heuristic and use the region -instead (just like `C-c e' does). - - `C-c c' will compile a method; it uses a similar heuristic to -determine the bounds of the method definition. Typically, you'll -change a method definition, type `C-c c' and move on to whatever's -next. If you want to compile a whole bunch of method definitions, -you'll have to mark the entire set of method definitions (from the -`methodsFor:' line to the `! !') as the region and use `C-c e'. - - After you've compiled and executed some expressions, you may want to -take a snapshot of your work so that you don't have to re-do things -next time you fire up Smalltalk. To do this, you use the `C-c s' -command, which invokes `ObjectMemory snapshot'. If you invoke this -command with a prefix argument, you can specify a different name for -the image file, and you can have that image file loaded instead of the -default one by using the `-I' flag on the command line when invoking -Smalltalk. - - You can also evaluate an expression and have the result of the -evaluation printed by using the `C-c p' command. Mark the region and -use the command. - - To file in an entire file (perhaps the one that you currently have in -the buffer that you are working on), type `C-c f'. You can type the -name of a file to load at the prompt, or just type return and the file -associated with the current buffer will be loaded into Smalltalk. - - When you're ready to quit using GNU Smalltalk, you can quit cleanly -by using the `C-c q' command. If you want to fire up Smalltalk again, -or if (heaven forbid) Smalltalk dies on you, you can use the `C-c m' -command, and Smalltalk will be reincarnated. Even if it's running, but -the Smalltalk window is not visible, `C-c m' will cause it to be -displayed right away. - - You might notice that as you use this mode, the Smalltalk window -will scroll to keep the bottom of the buffer in focus, even when the -Smalltalk window is not the current window. This was a design choice -that I made to see how it would work. On the whole, I guess I'm pretty -happy with it, but I am interested in hearing your opinions on the -subject. - - -File: gst.info, Node: C and Smalltalk, Next: Tutorial, Prev: Emacs, Up: Top - -Interoperability between C and GNU Smalltalk -******************************************** - -* Menu: - -* External modules:: Linking your libraries to the virtual machine -* C callout:: Calls from Smalltalk to C -* C data types:: Manipulating C data from Smalltalk -* Smalltalk types:: Manipulating Smalltalk data from C -* Smalltalk callin:: Calls from C to Smalltalk -* Object representation:: Manipulating your own Smalltalk objects -* Incubator:: Protecting newly created objects from garbage - collections -* Other C functions:: Handling and creating OOPs -* Using Smalltalk:: The Smalltalk environment as an extension library - - -File: gst.info, Node: External modules, Next: C callout, Up: C and Smalltalk - -Linking your libraries to the virtual machine -============================================= - - A nice thing you can do with GNU Smalltalk is enhancing it with your -own goodies. If they're written in Smalltalk only, no problem: getting -them to work as packages (*note Packages::), and to fit in with the GNU -Smalltalk packaging system, is likely to be a five-minutes task. - - If your goodie is mostly written in C and you don't need particular -glue to link it to Smalltalk (for example, there are no callbacks from -C code to Smalltalk code), you can use the `dynamic library linking' -system. When using this system, you have to link GNU Smalltalk with the -library at run-time using DLD; the method to be used here is `DLD -class>>#addLibrary:'. - - But if you want to provide a more intimate link between C and -Smalltalk, as is the case with Blox, you should use the `dynamic module -linking' system. This section explains what to do, taking the Blox -library as a guide. - - Modules are searched for in the `gnu-smalltalk' subdirectory of the -system library path, or in the directory that the `SMALLTALK_MODULES' -environment variable points to. A module is distinguished from a -standard shared library because it has a function which Smalltalk calls -to initialize the module; the name of this function must be -`gst_initModule'. Here is the initialization function used by Blox: - - void - gst_initModule(proxy) - VMProxy *proxy; - { - vmProxy = proxy; - vmProxy->defineCFunc("Tcl_Eval", Tcl_Eval); - vmProxy->defineCFunc("Tcl_GetStringResult", Tcl_GetStringResult); - vmProxy->defineCFunc("tclInit", tclInit); - vmProxy->defineCFunc("bloxIdle", bloxIdle); - } - - Note that the `defineCFunc' function is called through a function -pointer in `gst_initModule', and that Blox saves the value of its -parameter to be used elsewhere in its code. This is not strictly -necessary on many platforms, namely those where the module is -effectively _linked with the Smalltalk virtual machine_ at run-time; -but since some(1) cannot obtain this, for maximum portability you must -always call the virtual machine through the proxy and never refer to -any symbol which the virtual machine exports. For uniformity, even -programs that link with `libgst.a' should not call these functions -directly, but through a `VMProxy' exported by `libgst.a' and accessible -through the `gst_interpreter_proxy' variable. - - First of all, you have to build your package as a shared library; -using GNU Automake and `libtool', this is as easy as changing your -`Makefile.am' file so that it reads like this - - pkglib_LTLIBRARIES = libblox.la - libblox_la_LDFLAGS = -module -no-undefined "... more flags ..." - libblox_la_SOURCES = "... your source files ..." - -instead of reading like this - - pkglib_LIBRARIES = libblox.a - libblox_a_LDFLAGS = "... more flags ..." - libblox_a_SOURCES = "... your source files ..." - - As you see, you only have to change `.a' extensions to `.la', -`LIBRARIES' targets to `LTLIBRARIES', and add appropriate options to -`LDFLAGS'(2). You will also have to run `libtoolize' and follow its -instruction, but this is really simpler than it looks. - - Note that this example uses `pkglib' because TCP is installed -together with Smalltalk, but in general this is not necessary. You can -install the library wherever you want; `libtool' will even generate -appropriate warnings to the installer if `ldconfig' (or an equivalent -program) has to be re-run. - - Finally, you will have to specify the name of the module in the -`packages' file. In this case, the relevant entry in that file will be - - Blox - Kernel - Blox.st libblox - ../blox - - Everything not ending with `.st' will be picked by the package -loader as a module, and will be passed to `DLD class>>#addModule:' -before attempting to file-in the Smalltalk source files. - - ---------- Footnotes ---------- - - (1) The most notable are AIX and Windows. - - (2) Specifying `-no-undefined' is not necessary, but it does perform -that the portability conditions explained above (no reference to -symbols in the virtual machine) are satisfied - - -File: gst.info, Node: C callout, Next: C data types, Prev: External modules, Up: C and Smalltalk - -Using the C callout mechanism -============================= - - To use the C callout mechanism, you first need to inform Smalltalk -about the C functions that you wish to call. You currently need to do -this in two places: 1) you need to establish the mapping between your C -function's address and the name that you wish to refer to it by, and 2) -define that function along with how the argument objects should be -mapped to C data types to the Smalltalk interpreter. As an example, let -us use the pre-defined (to GNU Smalltalk) functions of `system' and -`getenv'. - - First, the mapping between these functions and string names for the -functions needs to be established in your module. If you are writing an -external Smalltalk module (which can look at Smalltalk objects and -manipulate them), see *Note Linking your libraries to the virtual -machine: External modules; if you are using function from a dynamically -loaded library, see *Note Dynamic loading::. - - Second, we need to define a method that will invoke these C functions -and describe its arguments to the Smalltalk runtime system. Such a -method is automatically generated by calling a method which is available -to every class, `defineCFunc:withSelectorArgs:returning:args:'. - - Here are the definitions for the two functions `system' and `getenv' -(taken from `kernel/CFuncs.st') - SystemDictionary defineCFunc: 'system' - withSelectorArgs: 'system: aString' - returning: #int - args: #(string)! - - SystemDictionary defineCFunc: 'getenv' - withSelectorArgs: 'getenv: aString' - returning: #string - args: #(string)! - - The various keyword arguments are described below. - - The arguments are as follows: - -`SystemDictionary' - This specifies where the new method should be stored. In our - case, the method will be installed in the SystemDictionary, so - that we would invoke it thus: - Smalltalk system: 'lpr README' ! - - Again, there is no special significance to which class receives the - method; it could have just as well been Float, but it might look - kind of strange to see: - 1701.0 system: 'mail sbb@gnu.org' ! - -`defineCFunc: 'system'' - This says that we are defining the C function `system'. This name - must be *exactly* the same as the string passed to `defineCFunc'. - -`withSelectorArgs: 'system: aString'' - This defines how this method will be invoked from Smalltalk. The - name of the method does not have to match the name of the C - function; we could have just as easily defined the selector to be - `'rambo: fooFoo''; it's just good practice to define the method - with a similar name and the argument names to reflect the data - types that should be passed. - -`returning: #int' - This defines the C data type that will be returned. It is - converted to the corresponding Smalltalk data type. The set of - valid return types is: - `char' - Single C character value - - `string' - A C char *, converted to a Smalltalk string - - `stringOut' - A C char *, converted to a Smalltalk string and then freed. - - `symbol' - A C char *, converted to a Smalltalk symbol - - `int' - A C int value - - `uInt' - A C unsigned int value - - `long' - A C long value - - `uLong' - A C unsigned long value - - `double' - A C double, converted to an instance of FloatD - - `void' - No returned value - - `cObject' - An anonymous C pointer; useful to pass back to some C - function later - - `smalltalk' - An anonymous (to C) Smalltalk object pointer; should have - been passed to C at some point in the past or created by the - program by calling other public GNU Smalltalk functions - (*note Smalltalk types::). - - `CTYPE' - You can pass an instance of CType or one of its subclasses - (*note C data types::). In this case the object will be sent - `#narrow' before being returned: an example of this feature - is given in the experimental Gtk+ bindings. - -`args: #(string)' - This is an array of symbols that describes the types of the - arguments in order. For example, to specify a call to open(2), - the arguments might look something like: - args: #(string int int) - - The following argument types are supported; see above for details. - - `unknown' - Smalltalk will make the best conversion that it can guess for - this object; see the mapping table below - - `boolean' - passed as `char', which is promoted to `int' - - `char' - passed as `char', which is promoted to `int' - - `string' - passed as `char *' - - `stringOut' - passed as `char *', the contents are expected to be - overwritten with a new C string, and the object that was - passed becomes the new string on return - - `symbol' - passed as `char *' - - `byteArray' - passed as `char *', even though may contain NUL's - - `int' - passed as `int' - - `uInt' - passed as `unsigned int' - - `long' - passed as `long' - - `uLong' - passed as `unsigned long' - - `double' - passed as `double' - - `cObject' - C object value passed as `long' or `void *' - - `smalltalk' - Pass the object pointer to C. The C routine should treat the - value as a pointer to anonymous storage. This pointer can be - returned to Smalltalk at some later point in time. - - `variadic' - `variadicSmalltalk' - an Array is expected, each of the elements of the array will - be converted like an `unknown' parameter if `variadic' is - used, or passed as a raw object pointer for - `variadicSmalltalk'. - - `self' - `selfSmalltalk' - Pass the receiver, converting it to C like an `unknown' - parameter if `self' is used or passing the raw object pointer - for `selfSmalltalk'. Parameters passed this way don't map to - the message's arguments, instead they map to the message's - receiver. - - Table of parameter conversions: - -Declared param type Object type C parameter type used -boolean Boolean (True, False) int -byteArray ByteArray char * -cObject CObject void * -char Boolean (True, False) int -char Character int (C promotion rule) -char Integer int -double Float double (C promotion) -int Boolean (True, False) int -int Integer int -uInt Boolean (True, False) unsigned int -uInt Integer unsigned int -long Boolean (True, False) long -long Integer long -uLong Boolean (True, False) unsigned long -uLong Integer unsigned long -smalltalk, anything OOP -selfSmalltalk -string String char * -string Symbol char * -stringOut String char * -symbol Symbol char * -unknown, self Boolean (True, False) int -unknown, self ByteArray char * -unknown, self CObject void * -unknown, self Character int -unknown, self Float double -unknown, self Integer long -unknown, self String char * -unknown, self Symbol char * -unknown, self anything else OOP -variadic Array each element is passed - according to "unknown" -variadicSmalltalk Array each element is passed as - an OOP - - When your call-out returns `#void', depending on your application -you might consider using "asynchronous call-outs". These are call-outs -that do not suspend the process that initiated them, so the process -might be scheduled again, executing the code that follows the call-out, -during the execution of the call-out itself. This is particularly -handy when writing event loops (the most common place where you call -back into Smalltalk) because then _you can handle events that arrive -during the handling of an outer event_ before the outer event's -processing has ended. Depending on your application this might be -correct or not, of course. In the future, asynchronous call-outs might -be started into a separate thread. - - An asynchronous call-out is defined using an alternate method, -`defineAsyncCFunc:withSelectorArgs:args:'. Note that the returned -value parameter is missing because an asynchronous call-out always -returns `nil'. - - -File: gst.info, Node: C data types, Next: Smalltalk types, Prev: C callout, Up: C and Smalltalk - -The C data type manipulation system -=================================== - - `CType' is a class used to represent C data types themselves (no -storage, just the type). There are subclasses called things like -`CCType'. The instances can answer their size and alignment. -Their `valueType' is the underlying type of data. It's either an -integer, which is interpreted by the interpreter as the scalar type, or -the underlying element type, which is another `CType' subclass instance. - - To make life easier, there are global variables which hold onto -instances of `CScalarCType': they are called `CType' (like -`CIntType', not like `CIntCType'), and can be used wherever a C -datatype is used. If you had an array of strings, the elements would -be CStringType's (a specific instance of CScalarCType). - - `CObject' is the base class of the instances of C data. It has a -subclass called `CScalar', which has subclasses called `C'. -These subclasses can answer size and alignment information. - - Instances of `CObject' holds a pointer to a C type variable. The -variable can be allocated from Smalltalk by doing ` new', where -`' is a `CType' subclass instance, or it may have been returned -through the C callout mechanism as a return value. Remember that -`CObject' and its subclasses represent a pointer to a C object and as -such provide the full range of operations supported by C pointers. - - For example, `+' `anInteger' which returns a CObject which is higher -in memory by `anInteger' times the size of each item. There is also `-' -which acts like `+' if it is given an integer as its parameter. If a -CObject is given, it returns the difference between the two pointers. -`incr', `decr', `incrBy:', `decrBy:' adjust the string either forward or -backward, by either 1 or `n' characters. Only the pointer to the -string is changed; the actual characters in the string remain untouched. - - CObjects can be divided into two families, scalars and non-scalars, -just like C data types. Scalars fetch a Smalltalk object when sent the -`value' message, and change their value when sent the `value:' message. -Non-scalars do not support these two messages. - - `replaceWith:' `aString' replaces the string the instance points to -with the new string. Actually, it copies the bytes from the Smalltalk -String instance aString into the C string object, and null terminates. -Be sure that the C string has enough room! You can also use a -Smalltalk ByteArray as the data source. - - Non-scalars include instances of `CArray', `CPtr' and subclasses of -`CStruct' and `CUnion'. - - CPtrs and CArrays get their underlying element type through a -`CType' subclass instance which is associated with the `CArray' or -`CPtr' instance. - - CPtr's also have `value' and `value:' which get or change the -underlying value that's pointed to. In practice, `value' dereferences -the pointer. CString is a subclass that answers a Smalltalk String when -sent `value', and automatically allocates storage to copy and -null-terminate a Smalltalk `String' when sent `value:'. - - Note that a `CPtr' to `long' points to a place in memory where a -pointer to long is stored. In other words it is really a `long **' and -must be dereferenced twice with `cPtr value value' to get the `long'. - - Finally, there are `CStruct' and `CUnion', which are abstract -subclasses of `CObject'(1). In the following I will refer to CStruct, -but the same considerations apply to CUnion as well, with the only -difference that CUnions of course implement the semantics of a C union. - - These classes provide direct access to C data structures including - * `long' (unsigned too) - - * `short' (unsigned too) - - * `char' (unsigned too) & byte type - - * `double' (and `float') - - * `string' (NUL terminated char *, with special accessors) - - * arrays of any type - - * pointers to any type - - * other structs containing any fixed size types - - Here is an example struct decl in C: - struct audio_prinfo { - unsigned channels; - unsigned precision; - unsigned encoding; - unsigned gain; - unsigned port; - unsigned _xxx[4]; - unsigned samples; - unsigned eof; - unsigned char pause; - unsigned char error; - unsigned char waiting; - unsigned char _ccc[3]; - unsigned char open; - unsigned char active; - }; - - struct audio_info { - audio_prinfo_t play; - audio_prinfo_t record; - unsigned monitor_gain; - unsigned _yyy[4]; - }; - - And here is a Smalltalk equivalent decision: - CStruct subclass: #AudioPrinfo - declaration: #( (sampleRate uLong) - (channels uLong) - (precision uLong) - (encoding uLong) - (gain uLong) - (port uLong) - (xxx (array uLong 4)) - (samples uLong) - (eof uLong) - (pause uChar) - (error uChar) - (waiting uChar) - (ccc (array uChar 3)) - (open uChar) - (active uChar)) - classVariableNames: '' - poolDictionaries: '' - category: 'C interface-Audio' - ! - - CStruct subclass: #AudioInfo - declaration: #( (play #{AudioPrinfo} ) - (record #{AudioPrinfo} ) - (monitorGain uLong) - (yyy (array uLong 4))) - classVariableNames: '' - poolDictionaries: '' - category: 'C interface-Audio' - ! - - This creates two new subclasses of `CStruct' called `AudioPrinfo' -and `AudioInfo', with the given fields. The syntax is the same as for -creating standard subclasses, with the `instanceVariableNames' replaced -by `declaration'(2). You can make C functions return `CObject's that -are instances of these classes by passing `AudioPrinfo type' as the -parameter to the `returning:' keyword. - - AudioPrinfo has methods defined on it like: - #sampleRate - #channels - #precision - #encoding - -etc. These access the various data members. The array element -accessors (xxx, ccc) just return a pointer to the array itself. - - For simple scalar types, just list the type name after the variable. -Here's the set of scalars names, as defined in `kernel/CStruct.st': - #long CLong - #uLong CULong - #ulong CULong - #byte CByte - #char CChar - #uChar CUChar - #uchar CUChar - #short CShort - #uShort CUShort - #ushort CUShort - #int CInt - #uInt CUInt - #uint CUInt - #float CFloat - #double CDouble - #string CString - #smalltalk CSmalltalk - #{...} A given subclass of `CObject' - - The `#{...}' syntax is not in the Blue Book, but it is present in -GNU Smalltalk and other Smalltalks; it returns an Association object -corresponding to a global variable. - - To have a pointer to a type, use something like: - (example (ptr long)) - - To have an array pointer of size `', use: - (example (array string )) - - Note that this maps to `char *example[]' in C. - - The objects returned by using the fields are CObjects; there is no -implicit value fetching currently. For example, suppose you somehow got -ahold of an instance of class AudioPrinfo as described above (the -instance is a CObject subclass and points to a real C structure -somewhere). Let's say you stored this object in variable `audioInfo'. -To get the current gain value, do - audioInfo gain value - - to change the gain value in the structure, do - audioInfo gain value: 255 - - The structure member message just answers a `CObject' instance, so -you can hang onto it to directly refer to that structure member, or you -can use the `value' or `value:' methods to access or change the value -of the member. - - Note that this is the same kind of access you get if you use the -`addressAt:' method on CStrings or CArrays or CPtrs: they return a -CObject which points to a C object of the right type and you need to use -`value' and `value:' to access and modify the actual C variable. - - ---------- Footnotes ---------- - - (1) Actually they have a common superclass named `CCompound'. - - (2) The old `#newStruct:declaration:' method for creating CStructs is -deprecated because it does not allow one to set the category. - - -File: gst.info, Node: Smalltalk types, Next: Smalltalk callin, Prev: C data types, Up: C and Smalltalk - -Manipulating Smalltalk data from C -================================== - - GNU Smalltalk internally maps every object except Integers to a data -structure named an "OOP" (which is not an acronym for anything, as far -as I know). An OOP is a pointer to an internal data structure; this -data structure basically adds a level of indirection in the -representation of objects, since it contains - * a pointer to the actual object data - - * a bunch of flags, most of which interest the garbage collection - process - - This additional level of indirection makes garbage collection very -efficient, since the collector is free to move an object in memory -without updating every reference to that object in the heap, thereby -keeping the heap fully compact and allowing very fast allocation of new -objects. However, it makes C code that wants to deal with objects even -more messy than it would be without; if you want some examples, look at -the hairy code in GNU Smalltalk that deals with processes. - - To shield you as much as possible from the complications of doing -object-oriented programming in a non-object-oriented environment like C, -GNU Smalltalk provides friendly functions to map between common -Smalltalk objects and C types. This way you can simply declare OOP -variables and then use these functions to treat their contents like C -data. - - These functions are passed to a module via the `VMProxy' struct a -pointer to which is passed to the module, as shown in *Note Linking -your libraries to the virtual machine: External modules. They can be -divided in two groups, those that map _from Smalltalk objects to C data -types_ and those that map _from C data types to Smalltalk objects_. - - Here are those in the former group (Smalltalk to C); you can see that -they all begin with `OOPTo': - - - Function: long OOPToInt (OOP) - This function assumes that the passed OOP is an Integer and - returns the C `signed long' for that integer. - - - Function: long OOPToId (OOP) - This function returns an unique identifier for the given OOP, valid - until the OOP is garbage-collected. - - - Function: double OOPToFloat (OOP) - This function assumes that the passed OOP is an Float and returns - the C `double' for that integer. - - - Function: int OOPToBool (OOP) - This function returns a C integer which is true (i.e. `!= 0') if - the given OOP is the `true' object, false (i.e. `== 0') otherwise. - - - Function: char OOPToChar (OOP) - This function assumes that the passed OOP is a Character and - returns the C `char' for that integer. - - - Function: char *OOPToString (OOP) - This function assumes that the passed OOP is a String or ByteArray - and returns a C null-terminated `char *' with the same contents. - It is the caller's responsibility to free the pointer and to - handle possible `NUL' characters inside the Smalltalk object. - - - Function: char *OOPToByteArray (OOP) - This function assumes that the passed OOP is a String or ByteArray - and returns a C `char *' with the same contents, without - null-terminating it. It is the caller's responsibility to free the - pointer. - - - Function: PTR OOPToCObject (OOP) - This functions assumes that the passed OOP is a kind of CObject and - returns a C `PTR' to the C data pointed to by the object. The - caller should not free the pointer, nor assume anything about its - size and contents, unless it exactly knows what it's doing. A - `PTR' is a `void *' if supported, or otherwise a `char *'. - - - Function: long OOPToC (OOP) - This functions assumes that the passed OOP is a String, a - ByteArray, a CObject, or a built-in object (nil, true, false, - character, integer). If the OOP is nil, it answers 0; else the - mapping for each object is exactly the same as for the above - functions. Note that, even though the function is declared as - returning a `long', you might need to cast it to either a `char *' - or `PTR'. - - While special care is needed to use the functions above (you will -probably want to know at least the type of the Smalltalk object you're -converting), the functions below, which convert C data to Smalltalk -objects, are easier to use and also put objects in the incubator so that -they are not swept by a garbage collection (*note Incubator::). These -functions all "end" with `ToOOP', except `cObjectToTypedOOP': - - - Function: OOP intToOOP (long) - This object returns a Smalltalk Integer which contains the same - value as the passed C `long'. Note that Smalltalk Integers are - always signed and have a bit less of precision with respect to C - longs. On 32 bit machines, their precision is 30 bits (if - unsigned) or 31 bits (if signed); on 64 bit machines, their - precision is 62 bits (if unsigned) or 63 bits (if signed). - - - Function: OOP idToOOP (OOP) - This function returns an OOP from a unique identifier returned by - `OOPToId'. The OOP will be the same that was passed to `OOPToId' - only if the original OOP has not been garbage-collected since the - call to `OOPToId'. - - - Function: OOP floatToOOP (double) - This object returns a Smalltalk FloatD which contains the same - value as the passed `double'. Unlike Integers, FloatDs have - exactly the same precision as C doubles. - - - Function: OOP boolToOOP (int) - This object returns a Smalltalk Boolean which contains the same - boolean value as the passed C `int'. That is, the returned OOP is - the sole instance of either `False' or `True', depending on where - the parameter is zero or not. - - - Function: OOP charToOOP (char) - This object returns a Smalltalk Character which represents the - same char as the passed C `char'. - - - Function: OOP classNameToOOP (char *) - This method returns the Smalltalk class (i.e. an instance of a - subclass of Class) whose name is the given parameter. This method - is slow; you can safely cache its result. - - - Function: OOP stringToOOP (char *) - This method returns a String which maps to the given - null-terminated C string, or the builtin object `nil' if the - parameter points to address 0 (zero). - - - Function: OOP byteArrayToOOP (char *, int) - This method returns a ByteArray which maps to the bytes that the - first parameters points to; the second parameter gives the size of - the ByteArray. The builtin object `nil' is returned if the first - parameter points to address 0 (zero). - - - Function: OOP symbolToOOP (char *) - This method returns a String which maps to the given - null-terminated C string, or the builtin object `nil' if the - parameter points to address 0 (zero). - - - Function: OOP cObjectToOOP (PTR) - This method returns a CObject which maps to the given C pointer, - or the builtin object `nil' if the parameter points to address 0 - (zero). The returned value has no precise CType assigned. To - assign one, use `cObjectToTypedOOP'. - - - Function: OOP cObjectToTypedOOP (PTR, OOP) - This method returns a CObject which maps to the given C pointer, - or the builtin object `nil' if the parameter points to address 0 - (zero). The returned value has the second parameter as its type; - to get possible types you can use `typeNameToOOP'. - - - Function: OOP typeNameToOOP (char *) - All this method actually does is evaluating its parameter as - Smalltalk code; so you can, for example, use it in any of these - ways: - cIntType = typeNameToOOP("CIntType"); - myOwnCStructType = typeNameToOOP("MyOwnCStruct type"); - - This method is primarily used by msgSendf (*note Smalltalk - callin::), but it can be useful if you use lower level call-in - methods. This method is slow too; you can safely cache its result. - - As said above, the C to Smalltalk layer automatically puts the -objects it creates in the incubator which prevents objects from being -collected as garbage. A plugin, however, has limited control on the -incubator, and the incubator itself is not at all useful when objects -should be kept registered for a relatively long time, and whose lives -in the registry typically overlap. - - To avoid garbage collection of such object, you can use these -functions, which access a separate registry: - - - Function: void registerOOP (OOP) - Puts the given OOP in the registry. If you register an object - multiple times, you will need to unregister it the same number of - times. You may want to register objects returned by Smalltalk - call-ins. - - - Function: void unregisterOOP (OOP) - Removes an occurrence of the given OOP from the registry. - - - Function: void registerOOPArray (OOP **, OOP **) - Tells the garbage collector that an array of objects must be made - part of the root set. The two parameters point indirectly to the - base and the top of the array; that is, they are pointers to - variables holding the base and the top of the array: having - indirect pointers allows you to dynamically change the size of the - array and even to relocate it in memory without having to - unregister and re-register it every time you modify it. If you - register an array multiple times, you will need to unregister it - the same number of times. - - - Function: void unregisterOOPArray (OOP **) - Removes the array with the given base from the registry. - - -File: gst.info, Node: Smalltalk callin, Next: Object representation, Prev: Smalltalk types, Up: C and Smalltalk - -Calls from C to Smalltalk -========================= - - GNU Smalltalk provides seven different function calls that allow you -to call Smalltalk methods in a different execution context than the -current one. The priority in which the method will execute will be the -same as the one of Smalltalk process which is currently active. - - Four of these functions are more low level and are more suited when -the Smalltalk program itself gave a receiver, a selector and maybe some -parameters; the others, instead, are more versatile. One of them -(`msgSendf') automatically handles most conversions between C data -types and Smalltalk objects, while the others takes care of compiling -full snippets of Smalltalk code. - - All these functions handle properly the case of specifying, say, 5 -arguments for a 3-argument selector--see the description of the single -functions for more information). - - - Function: OOP msgSend (OOP receiver, OOP selector, ...) - This function sends the given selector (should be a Symbol, - otherwise nilOOP is returned) to the given receiver. The message - arguments should also be OOPs (otherwise, an access violation - exception is pretty likely) and are passed in a NULL-terminated - list after the selector. The value returned from the method is - passed back as an OOP to the C program as the result of `msgSend', - or nilOOP if the number of arguments is wrong. Example (same as - `1 + 2'): - - OOP shouldBeThreeOOP = vmProxy->msgSend( - intToOOP(1), - symbolToOOP("+"), - intToOOP(2), - nil); - - - Function: OOP strMsgSend (OOP receiver, char *selector, ...) - This function is the same as above, but the selector is passed as - a C string and is automatically converted to a Smalltalk symbol. - - Theoretically, this function is a bit slower than `msgSend' if your - program has some way to cache the selector and avoiding a call to - `symbolToOOP' on every call-in. However, this is not so apparent - in "real" code because the time spent in the Smalltalk interpreter - will usually be much higher than the time spent converting the - selector to a Symbol object. Example: - - OOP shouldBeThreeOOP = vmProxy->strMsgSend( - intToOOP(1), - "+", - intToOOP(2), - nil); - - - Function: OOP vmsgSend (OOP receiver, OOP selector, OOP *args) - This function is the same as msgSend, but accepts a pointer to the - NULL-terminated list of arguments, instead of being a - variable-arguments functions. Example: - - OOP arguments[2], shouldBeThreeOOP; - arguments[0] = intToOOP(2); - arguments[1] = nil; - /* ... some more code here ... */ - - shouldBeThreeOOP = vmProxy->vmsgSend( - intToOOP(1), - symbolToOOP("+"), - arguments); - - - Function: OOP nvmsgSend (OOP receiver, OOP selector, OOP *args, int - nargs) - This function is the same as msgSend, but accepts an additional - parameter containing the number of arguments to be passed to the - Smalltalk method, instead of relying on the NULL-termination of - args. Example: - - OOP argument, shouldBeThreeOOP; - argument = intToOOP(2); - /* ... some more code here ... */ - - shouldBeThreeOOP = vmProxy->nvmsgSend( - intToOOP(1), - symbolToOOP("+"), - &argument, - 1); - - The two functions that directly accept Smalltalk code are named -`evalCode' and `evalExpr', and they're basically the same. They both -accept a single parameter, a pointer to the code to be submitted to the -parser. The main difference is that `evalCode' discards the result, -while `evalExpr' returns it to the caller as an OOP. - - `msgSendf', instead, has a radically different syntax. Let's first -look at some examples. - - /* 1 + 2 */ - int shouldBeThree; - vmProxy->msgSendf(&shouldBeThree, "%i %i + %i", 1, 2) - - /* aCollection includes: 'abc' */ - OOP aCollection; - int aBoolean; - vmProxy->msgSendf(&aBoolean, "%b %o includes: %s", aCollection, "abc") - - /* 'This is a test' printNl -- in two different ways */ - vmProxy->msgSendf(nil, "%v %s printNl", "This is a test"); - vmProxy->msgSendf(nil, "%s %s printNl", "This is a test"); - - /* 'This is a test', ' ok?' */ - char *str; - vmProxy->msgSendf(&str, "%s %s , %s", "This is a test", " ok?"); - - As you can see, the parameters to msgSendf are, in order: - - * A pointer to the variable which will contain the record. If this - pointer is nil, it is discarded. - - * A description of the method's interface in this format (the object - types, after percent signs, will be explained later in this - section) - - %result_type %receiver_type selector %param1_type %param2_type - - * A C variable or Smalltalk object (depending on the type specifier) - for the receiver - - * If needed, The C variables and/or Smalltalk object (depending on - the type specifiers) for the arguments. - - Note that the receiver and parameters are NOT registered in the -object registry (*note Smalltalk types::). "receiver_type" and -"paramX_type" can be any of these characters, with these meanings: - - Specifier C data type equivalent Smalltalk class - i long Integer (see intToOOP) - f double Float (see floatToOOP) - F long double Float (see floatToOOP) - b int True or False (see boolToOOP) - c char Character (see charToOOP) - C PTR CObject (see cObjToOOP) - s char * String (see stringToOOP) - S char * Symbol (see symbolToOOP) - o OOP any - t char *, PTR CObject (see below) - T OOP, PTR CObject (see below) - -`%t' and `%T' are particular in the sense that you need to pass "two" -additional arguments to `msgSendf', not one. The first will be a -description of the type of the CObject to be created, the second -instead will be the CObject's address. If you specify `%t', the first -of the two arguments will be converted to a Smalltalk `CType' via -`typeNameToOOP' (*note Smalltalk types::); instead, if you specify -`%T', you will have to directly pass an OOP for the new CObject's type. - - The type specifiers you can pass for "result_type" are a bit -different: - - Result - Specifier if nil C data type expected result - i 0L long nil or an Integer - f 0.0 double nil or a Float - b 0 int nil or a Boolean - c '\0' char nil or a Character - C NULL PTR nil or a CObject - s NULL char * nil, a String, or a Symbol - ? 0 char *, PTR See oopToC - o nilOOP OOP any (result is not converted) - v / any (result is discarded) - - Note that, if resultPtr is nil, the "result_type" is always treated -as `%v'. If an error occurs, the value in the `result if nil' column -is returned. - diff -rNU3 smalltalk-2.1.6/doc/gst.info-4 smalltalk-2.1.7/doc/gst.info-4 --- smalltalk-2.1.6/doc/gst.info-4 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-4 1970-01-01 01:00:00.000000000 +0100 @@ -1,1243 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: Other C functions, Next: Using Smalltalk, Prev: Incubator, Up: C and Smalltalk - -Other functions available to modules -==================================== - - In addition to the functions above, the `VMProxy' that is made -available to modules contains entry-points for many functions that aid -in developing GNU Smalltalk extensions in C. This node documents these -functions and the macros that are defined by `libgst/gstpub.h'. - - - Function: void asyncSignal (OOP) - This functions accepts an OOP for a `Semaphore' object and signals - that object so that one of the processes waiting on that semaphore - is waken up. Since a Smalltalk call-in is not an atomic - operation, the correct way to signal a semaphore is not to send - the `signal' method to the object but, rather, to use: - - asyncSignal(semaphoreOOP) - - The signal request will be processed as soon as the next message - send is executed. - - _Caution:_ This and the next one are the only functions in the - `intepreterProxy' that can be called from within a signal handler. - - - Function: void asyncSignalAndUnregister (OOP) - This functions accepts an OOP for a `Semaphore' object and signals - that object so that one of the processes waiting on that semaphore - is waken up; the signal request will be processed as soon as the - next message send is executed. The object is then removed from - the registry. - - - Function: void syncWait (OOP) - This functions accepts an OOP for a `Semaphore' object and puts the - current process to sleep, unless the semaphore has excess signals - on it. Since a Smalltalk call-in is not an atomic operation, the - correct way to signal a semaphore is not to send the `wait' method - to the object but, rather, to use: - - syncWait(semaphoreOOP) - - The `sync' in the name of this function distinguishes it from - `asyncSignal', in that it cannot be called from within a signal - handler. - - - Function: OOP objectAlloc (OOP, int) - The `objectAlloc' function allocates an OOP for a newly created - instance of the class whose OOP is passed as the first parameter; - if that parameter is not a class the results are undefined (for - now, read as "the program will most likely core dump", but that - could change in a future version). - - The second parameter is used only if the class is an indexable one, - otherwise it is discarded: it contains the number of indexed - instance variables in the object that is going to be created. - Simple uses of `objectAlloc' include: - - OOP myClassOOP; - OOP myNewObject; - myNewObjectData obj; - ... - myNewObject = objectAlloc(myClassOOP, 0); - obj = (myNewObjectData) OOP_TO_OBJ (myNewObject); - obj->arguments = objectAlloc(classNameToOOP("Array"), 10); - ... - - The macros are(1): - - - Macro: mst_Object OOP_TO_OBJ (OOP) - Dereference a pointer to an OOP into a pointer to the actual - object data (*note Object representation::). The result of - `OOP_TO_OBJ' is not valid anymore if a garbage-collection happens; - for this reason, you should assume that a pointer to object data - is not valid after doing a call-in, calling `objectAlloc', and - caling any of the "C to Smalltalk" functions (*note Smalltalk - types::). - - - Macro: OOP OOP_CLASS (OOP) - Return the OOP for the class of the given object. For example, - `OOP_CLASS(proxy->stringToOOP("Wonderful GNU Smalltalk"))' is the - `String' class, as returned by `classNameToOOP("String")'. - - - Macro: mst_Boolean IS_INT (OOP) - Return a Boolean indicating whether or not the OOP is an Integer - object; the value of SmallInteger objects is encoded directly in - the OOP, not separately in a `mst_Object' structure. It is not - safe to use `OOP_TO_OBJ' and `OOP_CLASS' if `isInt' returns false. - - - Macro: mst_Boolean IS_OOP (OOP) - Return a Boolean indicating whether or not the OOP is a `real' - object (and not a SmallInteger). It is safe to use `OOP_TO_OBJ' - and `OOP_CLASS' only if `IS_OOP' returns true. - - - Macro: mst_Boolean ARRAY_OOP_AT (mst_Object, int) - Access the character given in the second parameter of the given - Array object. Note that this is necessary because of the way - `mst_Object' is defined, which prevents `indexedOOP' from working. - - - Macro: mst_Boolean STRING_OOP_AT (mst_Object, int) - Access the character given in the second parameter of the given - String or ByteArray object. Note that this is necessary because - of the way `mst_Object' is defined, which prevents `indexedByte' - from working. - - - Macro: mst_Boolean INDEXED_WORD (SOME-OBJECT-TYPE, int) - Access the given indexed instance variable in a - `variableWordSubclass'. The first parameter must be a structure - declared as described in *Note Object representation::). - - - Macro: mst_Boolean INDEXED_BYTE (SOME-OBJECT-TYPE, int) - Access the given indexed instance variable in a - `variableByteSubclass'. The first parameter must be a structure - declared as described in *Note Object representation::). - - - Macro: mst_Boolean INDEXED_OOP (SOME-OBJECT-TYPE, int) - Access the given indexed instance variable in a `variableSubclass'. - The first parameter must be a structure declared as described in - *Note Object representation::). - - ---------- Footnotes ---------- - - (1) IS_NIL and IS_CLASS have been removed because they are -problematic in shared libraries (modules), where they caused -undefined symbols to be present in the shared library. These are now -private to `libgst.a'. - - -File: gst.info, Node: Object representation, Next: Incubator, Prev: Smalltalk callin, Up: C and Smalltalk - -Manipulating instances of your own Smalltalk classes from C -=========================================================== - - Although GNU Smalltalk's library exposes functions to deal with -instances of the most common base class, it's likely that, sooner or -later, you'll want your C code to directly deal with instances of -classes defined by your program. There are three steps in doing so: - - * Defining the Smalltalk class - - * Defining a C `struct' that maps the representation of the class - - * Actually using the C struct - - In this chapter you will be taken through these steps considering the -hypotetical task of defining a Smalltalk interface to an SQL server. - - The first part is also the simplest, since defining the Smalltalk -class can be done in a single way which is also easy and very -practical; just evaluate the standard Smalltalk code that does that: - - Object subclass: #SQLAction - instanceVariableNames: 'database request' - classVariableNames: '' - poolDictionaries: '' - category: 'SQL-C interface' - - SQLAction subclass: #SQLRequest - instanceVariableNames: 'returnedRows' - classVariableNames: '' - poolDictionaries: '' - category: 'SQL-C interface' - - To define the C `struct' for a class derived from Object, GNU -Smalltalk's `gstpub.h' include file defines an `OBJ_HEADER' macro which -defines the fields that constitute the header of every object. Defining -a `struct' for SQLAction results then in the following code: - - struct st_SQLAction { - OBJ_HEADER; - OOP database; - OOP request; - } - - The representation of SQLRequest in memory is this: - - .------------------------------. - | common object header | 2 longs - |------------------------------| - | SQLAction instance variables | - | database | 2 longs - | request | - |------------------------------| - | SQLRequest instance variable | - | returnedRows | 1 long - '------------------------------' - - A first way to define the struct would then be: - typedef struct st_SQLAction { - OBJ_HEADER; - OOP database; - OOP request; - OOP returnedRows; - } *SQLAction; - - but this results in a lot of duplicated code. Think of what would -happen if you had other subclasses of `SQLAction' such as -`SQLObjectCreation', `SQLUpdateQuery', and so on! The solution, which -is also the one used in GNU Smalltalk's source code is to define a -macro for each superclass, in this way: - - /* SQLAction - |-- SQLRequest - | `-- SQLUpdateQuery - `-- SQLObjectCreation */ - - #define ST_SQLACTION_HEADER \ - OBJ_HEADER; \ - OOP database; \ - OOP request /* no semicolon */ - - #define ST_SQLREQUEST_HEADER \ - ST_SQLACTION_HEADER; \ - OOP returnedRows /* no semicolon */ - - typedef struct st_SQLAction { - ST_SQLACTION_HEADER; - } *SQLAction; - - typedef struct st_SQLRequest { - ST_SQLREQUEST_HEADER; - } *SQLRequest; - - typedef struct st_SQLObjectCreation { - ST_SQLACTION_HEADER; - OOP newDBObject; - } *SQLObjectCreation; - - typedef struct st_SQLUpdateQuery { - ST_SQLREQUEST_HEADER; - OOP numUpdatedRows; - } *SQLUpdateQuery; - - Note that the macro you declare is used instead of `OBJ_HEADER' in -the declaration of both the superclass and the subclasses. - - Although this example does not show that, please note that you should -not declare anything if the class has indexed instance variables. - - The first step in actually using your structs is obtaining a pointer -to an OOP which is an instance of your class. Ways to do so include -doing a call-in, receiving the object from a call-out (using -`#smalltalk', `#self' or `#selfSmalltalk' as the type specifier). - - Let's assume that the `oop' variable contains such an object. Then, -you have to dereference the OOP (which, as you might recall from *Note -Smalltalk types::, point to the actual object only indirectly) and get -a pointer to the actual data. You do that with the `OOP_TO_OBJ' macro -(note the type casting): - - SQLAction action = (SQLAction) OOP_TO_OBJ(oop); - - Now you can use the fields in the object like in this pseudo-code: - - /* These are retrieved via classNameToOOP and then cached in global - variables */ - OOP sqlUpdateQueryClass, sqlActionClass, sqlObjectCreationClass; - ... - invoke_sql_query( - vmProxy->oopToCObject(action->database), - vmProxy->oopToString(action->request); - query_completed_callback, /* Callback function */ - oop); /* Passed to the callback */ - - ... - - /* Imagine that invoke_sql_query runs asynchronously and calls this - when the job is done. */ - void - query_completed_callback(result, database, request, clientData) - struct query_result *result; - struct db *database; - char *request; - OOP clientData; - { - SQLUpdateQuery query; - OOP rows; - OOP cObject; - - /* Free the memory allocated by oopToString */ - free(request); - - if (OOP_CLASS (oop) == sqlActionClass) - return; - - if (OOP_CLASS (oop) == sqlObjectCreationClass) - { - SQLObjectCreation oc; - oc = (SQLObjectCreation) OOP_TO_OBJ (clientData); - cObject = vmProxy->cObjectToOOP (result->dbObject) - oc->newDBObject = cObject; - } - else - { - /* SQLRequest or SQLUpdateQuery */ - cObject = vmProxy->cObjectToOOP (result->rows); - query = (SQLUpdateQuery) OOP_TO_OBJ (clientData); - query->returnedRows = cObject; - if (OOP_CLASS (oop) == sqlUpdateQueryClass) - query->numReturnedRows = vmProxy->intToOOP (result->count); - } - - } - - Note that the result of `OOP_TO_OBJ' is not valid anymore if a -garbage-collection happens; for this reason, you should assume that a -pointer to object data is not valid after doing a call-in, calling -`objectAlloc', and using any of the "C to Smalltalk" functions except -`intToOOP' (*note Smalltalk types::). That's why I passed the OOP to -the callback, not the object pointer itself. - - If your class has indexed instance variables, you can use the -`INDEXED_WORD', `INDEXED_OOP' and `INDEXED_BYTE' macros declared in -`gstpub.h', which return an lvalue for the given indexed instance -variable--for more information, *note Other C functions::. - - -File: gst.info, Node: Using Smalltalk, Prev: Other C functions, Up: C and Smalltalk - -Using the Smalltalk environment as an extension library -======================================================= - - If you are reading this chapter because you are going to write -extensions to GNU Smalltalk, this section won't probably interest you. -But if you intend to use GNU Smalltalk as a scripting language or an -extension language for your future marvellous software projects, you -might be interest. - - How to initialize GNU Smalltalk is most briefly and easily explained -by looking at GNU Smalltalk's own source code. For this reason, here -is a snippet from `main.c'. - - - /* From main.c */ - int main(argc, argv) - int argc; - char **argv; - { - int result; - gst_smalltalk_args(argc, argv); - result = gst_init_smalltalk(); - if (result < 0) - result = 0; - else if (result == 0) - gst_top_level_loop(); - - exit(result); - } - - Your initialization code will be almost the same as that in GNU -Smalltalk's `main()', with the exception of the call to -`gst_top_level_loop'. All you'll have to do is to pass some arguments -to the GNU Smalltalk library via `gst_smalltalk_args', and then call -`gst_init_smalltalk'. - - Note that `gst_init_smalltalk' will likely take some time (from a -second to 30-40 seconds), because it has to check if the image file must -be be rebuilt and, if so, it reloads and recompiles the 37000 lines of -Smalltalk code in a basic image. To avoid this check, pass a `-I' flag: - - char myArgv[][] = { "-I", "myprog.im", nil }; - int myArgc; - /* ... */ - myArgc = sizeof(myArgv) / sizeof (char *) - 1; - smalltalkArgs(myArgc, myArgv); - - The result of `gst_init_smalltalk' is as follows: `0' means "go on", -`-1' means "don't run the top-level loop, but exit with a zero error -code", while anything else is an error code to be passed to `exit'. In -practice, `-1' is answered when you pass the `--help' or `--version' -options: if you don't pass them, you can safely ignore it. - - If you're using GNU Smalltalk as an extension library, you might -also want to disable the two `ObjectMemory' class methods, `quit' and -`quit:' method. I advice you not to change the Smalltalk kernel code. -Instead, in the script that loads your extension classes add these two -lines: - - ObjectMemory class compile: 'quit self shouldNotImplement'! - ObjectMemory class compile: 'quit: n self shouldNotImplement'! - - which will effectively disable the two offending methods. Other -possibilities include using `atexit' (from the C library) to exit your -program in a less traumatic way, or redefining these two methods to -exit through a call out to a C routine in your program. - - Also, note that it is not a problem if you develop the class -libraries for your programs within GNU Smalltalk's environment without -`defineCFunc'-ing your own C call-outs, since GNU Smalltalk recalculates -the addresses of the C call-outs every time it is started. - - -File: gst.info, Node: Incubator, Next: Other C functions, Prev: Object representation, Up: C and Smalltalk - -Incubator support -================= - - The incubator concept provides a mechanism to protect newly created -objects from being accidentally garbage collected before they can be -attached to some object which is reachable from the root set. - - If you are creating some set of objects which will not be -immediately (that means, before the next object is allocated from the -Smalltalk memory system) be attached to an object which is still "live" -(reachable from the root set of objects), you'll need to use this -interface. - - If you are writing a C call-out from Smalltalk (for example, inside a -module), you will not have direct access to the incubator; instead the -functions described in *Note Smalltalk types:: automatically put the -objects that they create in the incubator, and the virtual machine -takes care of wrapping C call-outs so that the incubator state is -restored at the end of the call. - - This section describes its usage from the point of view of a program -that is linking with `libgst.a'. Such a program has much finer control -to the incubator. The interface provides the following operations: - - - Macro: void INC_ADD_OOP (OOP anOOP) - Adds a new object to the protected set. - - - Macro: inc_ptr INC_SAVE_POINTER () - Retrieves the current incubator pointer. Think of the incubator - as a stack, and this operation returns the current stack pointer - for later use (restoration) with the incRestorePointer function. - - - Macro: void INC_RESTORE_POINTER (inc_ptr ptr) - Sets (restores) the incubator pointer to the given pointer value. - - Typically, when you are within a function which allocates more than -one object at a time, either directly or indirectly, you'd want to use -the incubator mechanism. First you'd save a copy of the current -pointer in a local variable. Then, for each object you allocate -(except the last, if you want to be optimal), after you create the -object you add it to the incubator's list. When you return, you need -to restore the incubator's pointer to the value you got with -incSavePointer using the incRestorePointer function. - - Here's an example from cint.c: - - The old code was (the comments are added for this example): - - desc = (_gst_cfunc_descriptor) - new_instance_with (cFuncDescriptorClass, numArgs); - desc->cFunction = _gst_cobject_new (funcAddr); // 1 - desc->cFunctionName = _gst_string_new (funcName); // 2 - desc->numFixedArgs = FROM_INT (numArgs); - desc->returnType = _gst_classify_type_symbol (returnTypeOOP, true); - for (i = 1; i <= numArgs; i++) { - desc->argTypes[i - 1] = - _gst_classify_type_symbol(ARRAY_AT(argsOOP, i), false); - } - - return (_gst_alloc_oop(desc)); - - `desc' is originally allocated via `newInstanceWith' and `allocOOP', -two private routines which are encapsulated by the public routine -`objectAlloc'. At "1", more storage is allocated, and the garbage -collector has the potential to run and free (since no live object is -referring to it) desc's storage. At "2" another object is allocated, -and again the potential for losing both `desc' and `desc->cFunction' is -there if the GC runs (this actually happened!). - - To fix this code to use the incubator, modify it like this: - - OOP descOOP; - IncPtr ptr; - - incPtr = INC_SAVE_POINTER(); - desc = (_gst_cfunc_descriptor) - new_instance_with (cFuncDescriptorClass, numArgs); - descOOP = _gst_alloc_oop(desc); - INC_ADD_OOP (descOOP); - - desc->cFunction = _gst_cobject_new (funcAddr); // 1 - INC_ADD_OOP (desc->cFunction); - - desc->cFunctionName = _gst_string_new (funcName); // 2 - /* since none of the rest of the function (or the functions it calls) - * allocates any storage, we don't have to add desc->cFunctionName - * to the incubator's set of objects, although we could if we wanted - * to be completely safe against changes to the implementations of - * the functions called from this function. - */ - - desc->numFixedArgs = FROM_INT (numArgs); - desc->returnType = _gst_classify_type_symbol (returnTypeOOP, true); - for (i = 1; i <= numArgs; i++) { - desc->argTypes[i - 1] = - _gst_classify_type_symbol(ARRAY_AT(argsOOP, i), false); - } - - return (_gst_alloc_oop(desc)); - - Note that it is permissible for two or more functions to cooperate -with their use of the incubator. For example, say function A allocates -some objects, then calls function B which allocates some more objects, -and then control returns to A where it does some more execution with the -allocated objects. If B is only called by A, B can leave the management -of the incubator pointer up to A, and just register the objects it -allocates with the incubator. When A does a `INC_RESTORE_POINTER', it -automatically clears out the objects that B has registered from the -incubator's set of objects as well; the incubator doesn't know about -functions A & B, so as far as it is concerned, all of the registered -objects were registered from the same function. - - -File: gst.info, Node: Tutorial, Next: Future, Prev: C and Smalltalk, Up: Top - -Tutorial -******** - -What this manual presents - This document provides a tutorial introduction to the Smalltalk - language in general, and the GNU Smalltalk implementation in - particular. It does not provide exhaustive coverage of every - feature of the language and its libraries; instead, it attempts to - introduce a critical mass of ideas and techniques to get the - Smalltalk novice moving in the right direction. - -Who this manual is written for - This manual assumes that the reader is acquainted with the basics - of computer science, and has reasonable proficiency with a - procedural language such as C. It also assumes that the reader is - already familiar with the usual janitorial tasks associated with - programming: editing, moving files, and so forth. - -* Menu: - -* Getting started:: Starting to explore GNU Smalltalk -* Some classes:: Using some of the Smalltalk classes -* The hierarchy:: The Smalltalk class hierarchy -* Creating classes:: Creating a new class of objects -* Creating subclasses:: Adding subclasses to another class -* Code blocks (I):: Control structures in Smalltalk -* Code blocks (II):: Guess what? More control structures -* Debugging:: Things go bad in Smalltalk too! -* More subclassing:: Coexisting in the class hierarchy -* Streams:: Something really powerful -* Behind the scenes:: Some nice stuff from the Smalltalk innards -* And now:: Some final words -* The syntax:: For the most die-hard computer scientists - - -File: gst.info, Node: Getting started, Next: Some classes, Prev: Tutorial, Up: Tutorial - -Getting started -=============== - -* Menu: - -* Starting Smalltalk:: Starting up Smalltalk -* Saying hello:: Saying hello -* What happened:: But how does it say hello? -* Doing math:: Smalltalk too can do it! -* Math in Smalltalk:: But in a peculiar way of course... - - -File: gst.info, Node: Starting Smalltalk, Next: Saying hello, Prev: Getting started, Up: Getting started - -Starting up Smalltalk ---------------------- - - Assuming that GNU Smalltalk has been installed on your system, -starting it is as simple as: - $ gst - the system loads in Smalltalk, and displays a startup banner like: - GNU Smalltalk ready - - st> - - You are now ready to try your hand at Smalltalk! By the way, when -you're ready to quit, you exit Smalltalk by typing `control-D' on an -empty line. - - -File: gst.info, Node: Saying hello, Next: What happened, Prev: Starting Smalltalk, Up: Getting started - -Saying hello ------------- - - An initial exercise is to make Smalltalk say "hello" to you. Type -in the following line (`printNl' is a upper case N and a lower case L): - 'Hello, world' printNl ! - The system then prints back 'Hello, world' to you. It prints it -twice, the first time because you asked to print and the second time -because the snipped evaluated to the 'Hello, world' string.(1) - - ---------- Footnotes ---------- - - (1) You can also have the system print out a lot of statistics -which provide information on the performance of the underlying -Smalltalk engine. You can enable them by starting Smalltalk as: - $ gst -V - - -File: gst.info, Node: What happened, Next: Doing math, Prev: Saying hello, Up: Getting started - -What actually happened ----------------------- - - The front-line Smalltalk interpreter gathers all text until a '!' -character and executes it. So the actual Smalltalk code executed was: - 'Hello, world' printNl - - This code does two things. First, it creates an object of type -`String' which contains the characters "Hello, world". Second, it -sends the message named `printNl' to the object. When the object is -done processing the message, the code is done and we get our prompt -back. You'll notice that we didn't say anything about printing ing the -string, even though that's in fact what happened. This was very much -on purpose: the code we typed in doesn't know anything about printing -strings. It knew how to get a string object, and it knew how to send a -message to that object. That's the end of the story for the code we -wrote. - - But for fun, let's take a look at what happened when the string -object received the `printNl' message. The string object then went to -a table (1) which lists the messages which strings can receive, and -what code to execute. It found that there is indeed an entry for -`printNl' in that table and ran this code. This code then walked -through its characters, printing each of them out to the terminal. (2) - - The central point is that an object is entirely self-contained; only -the object knew how to print itself out. When we want an object to -print out, we ask the object itself to do the printing. - - ---------- Footnotes ---------- - - (1) Which table? This is determined by the type of the object. An -object has a type, known as the class to which it belongs. Each class -has a table of methods. For the object we created, it is known as a -member of the `String' class. So we go to the table associated with -the String class. - - (2) Actually, the message `printNl' was inherited from Object. It -sent a `print' message, also inherited by Object, which then sent -`printOn:' to the object, specifying that it print to the `Transcript' -object. The String class then prints its characters to the standard -output. - - -File: gst.info, Node: Doing math, Next: Math in Smalltalk, Prev: What happened, Up: Getting started - -Doing math ----------- - - A similar piece of code prints numbers: - 1234 printNl ! - - Notice how we used the same message, but have sent it to a new type -of object--an integer (from class `Integer'). The way in which an -integer is printed is much different from the way a string is printed -on the inside, but because we are just sending a message, we do not -have to be aware of this. We tell it to `printNl', and it prints -itself out. - - As a user of an object, we can thus usually send a particular -message and expect basically the same kind of behavior, regardless of -object's internal structure (for instance, we have seen that sending -`printNl' to an object makes the object print itself). In later -chapters we will see a wide range of types of objects. Yet all of them -can be printed out the same way--with `printNl'. - - White space is ignored, except as it separates words. This example -could also have looked like: - 1234 - printNl ! - - An integer can be sent a number of messages in addition to just -printing itself. An important set of messages for integers are the -ones which do math: - - (9 + 7) printNl ! - - Answers (correctly!) the value 16. The way that it does this, -however, is a significant departure from a procedural language. - - -File: gst.info, Node: Math in Smalltalk, Prev: Doing math, Up: Getting started - -Math in Smalltalk ------------------ - - In this case, what happened was that the object `9' (an Integer), -received a `+' message with an argument of `7' (also an Integer). The -`+' message for integers then caused Smalltalk to create a new object -`16' and return it as the resultant object. This `16' object was then -given the `printNl' message, and printed `16' on the terminal. - - Thus, math is not a special case in Smalltalk; it is done, exactly -like everything else, by creating objects, and sending them messages. -This may seem odd to the Smalltalk novice, but this regularity turns -out to be quite a boon: once you've mastered just a few paradigms, all -of the language "falls into place". Before you go on to the next -chapter, make sure you try math involving `*' (multiplication), `-' -(subtraction), and `/' (division) also. These examples should get you -started: - - (8 * (4 / 2)) printNl ! - (8 - (4 + 1)) printNl ! - (5 + 4) printNl ! - (2/3 + 7) printNl ! - (2 + 3 * 4) printNl ! - (2 + (3 * 4)) printNl ! - - -File: gst.info, Node: Some classes, Next: The hierarchy, Prev: Getting started, Up: Tutorial - -Using some of the Smalltalk classes -=================================== - - This chapter has examples which need a place to hold the objects -they create. The following line creates such a place; for now, treat -it as magic. At the end of the chapter we will revisit it with an -explanation. Type in: - Smalltalk at: #x put: 0 ! - - Now let's create some new objects. - -* Menu: - -* Arrays:: An array in Smalltalk -* Sets:: A set in Smalltalk -* Dictionaries:: Getting more sophisticated, eh? -* Smalltalk dictionary:: A very important dictionary, really -* Closing thoughts:: There always ought to be some closing thoughts - - -File: gst.info, Node: Arrays, Next: Sets, Prev: Some classes, Up: Some classes - -An array in Smalltalk ---------------------- - - An array in Smalltalk is similar to an array in any other language, -although the syntax may seem peculiar at first. To create an array -with room for 20 elements, do(1): - x := Array new: 20 ! - - The `Array new: 20' creates the array; the `x :=' part connects the -name `x' with the object. Until you assign something else to `x', you -can refer to this array by the name `x'. Changing elements of the -array is not done using the `:=' operator; this operator is used only -to bind names to objects. In fact, you never modify data structures; -instead, you send a message to the object, and it will modify itself. - - For instance: - (x at: 1) printNl ! - -which prints: - nil - - The slots of an array are initially set to "nothing" (which -Smalltalk calls `nil'). Let's set the first slot to the number 99: - x at: 1 put: 99 ! - -and now make sure the 99 is actually there: - (x at: 1) printNl ! - -which then prints out: - 99 - - These examples show how to manipulate an array. They also show the -standard way in which messages are passed arguments ments. In most -cases, if a message takes an argument, its name will end with `:'.(2) - - So when we said `x at: 1' we were sending a message to whatever -object was currently bound to `x' with an argument of 1. For an array, -this results in the first slot of the array being returned. - - The second operation, `x at: 1 put: 99' is a message with two -arguments. It tells the array to place the second argument (99) in the -slot specified by the first (1). Thus, when we re-examine the first -slot, it does indeed now contain 99. - - There is a shorthand for describing the messages you send to -objects. You just run the message names together. So we would say -that our array accepts both the `at:' and `at:put:' messages. - - There is quite a bit of sanity checking built into an array. The -request - 6 at: 1 - -fails with an error; 6 is an integer, and can't be indexed. Further, - x at: 21 - -fails with an error, because the array we created only has room for 20 -objects. - - Finally, note that the object stored in an array is just like any -other object, so we can do things like: - ((x at: 1) + 1) printNl ! - -which (assuming you've been typing in the examples) will print 100. - - ---------- Footnotes ---------- - - (1) GNU Smalltalk supports completion in the same way as Bash or -GDB. To enter the following line, you can for example type `x -:= Arr new: 20'. This can come in handy when you have to type -long names such as `IdentityDictionary', which becomes -`IdeD'. Everything starting with a capital letter or -ending with a colon can be completed. - - (2) Alert readers will remember that the math examples of the -previous chapter deviated from this. - - -File: gst.info, Node: Sets, Next: Dictionaries, Prev: Arrays, Up: Some classes - -A set in Smalltalk ------------------- - - We're done with the array we've been using, so we'll assign -something new to our `x' variable. Note that we don't need to do -anything special about the old array: the fact that nobody is using it -any more will be automatically detected, and the memory reclaimed. -This is known as garbage collection and it is generally done when -Smalltalk finds that it is running low on memory. So, to get our new -object, simply do: - x := Set new ! - -which creates an empty set. To view its contents, do: - x printNl ! - - The kind of object is printed out (i.e., `Set'), and then the -members are listed within parenthesis. Since it's empty, we see: - Set () - - Now let's toss some stuff into it. We'll add the numbers 5 and 7, -plus the string 'foo'. We could type: - - x add: 5 ! - x add: 7 ! - x add: 'foo' ! - - But let's save a little typing by using a Smalltalk shorthand: - - x add: 5; add: 7; add: 'foo' ! - - This line does exactly what the previous example's three lines did. -The trick is that the semicolon operator causes the message to be sent -to the same object as the last message sent. So saying `; add: 7' is -the same as saying `x add: 7', because `x' was the last thing a message -was sent to. This may not seem like such a big savings, but compare -the ease when your variable is named `aVeryLongVariableName' instead of -just `x'! We'll revisit some other occasions where `;' saves you -trouble, but for now let's continue with our set. Type either version -of the example, and make sure that we've added 5, 7, and "foo": - x printNl ! - -we'll see that it now contains our data: - Set (5 'foo' 7) - - What if we add something twice? No problem--it just stays in the -set. So a set is like a big checklist--either it's in there, or it -isn't. To wit: - x add:5; add: 5; add: 5; add: 5 ! - x printNl ! - - We've added 5 several times, but when we printed our set back out, -we just see: - Set (5 'foo' 7) - - What you put into a set with `add:', you can take out with -`remove:'. Try: - - x remove: 5 ! - x printNl ! - - The set now prints as: - Set ('foo' 7) - - The "5" is indeed gone from the set. - - We'll finish up with one more of the many things you can do with a -set--checking for membership. Try: - (x includes: 7) printNl ! - (x includes: 5) printNl ! - - From which we see that x does indeed contain 7, but not 5. Notice -that the answer is printed as `true' or `false'. Once again, the thing -returned is an object--in this case, an object known as a boolean. -We'll look at the use of booleans later, but for now we'll just say -that booleans are nothing more than objects which can only either be -true or false--nothing else. So they're very useful for answers to yes -or no questions, like the ones we just posed. Let's take a look at -just one more kind of data structure: - - -File: gst.info, Node: Dictionaries, Next: Smalltalk dictionary, Prev: Sets, Up: Some classes - -Dictionaries ------------- - - A dictionary is a special kind of collection. With a regular array, -you must index it with integers. With dictionaries, you can index it -with any object at all. Dictionaries thus provide a very powerful way -of correlating one piece of information to another. Their only -downside is that they are somewhat less efficient than simple arrays. -Try the following: - x := Dictionary new. - x at: 'One' put: 1 ! - x at: 'Two' put: 2 ! - x at: 1 put: 'One' ! - x at: 2 put: 'Two' ! - - This fills our dictionary in with some data. The data is actually -stored in pairs of key and value (the key is what you give to `at:'--it -specifies a slot; the value is what is actually stored at that slot). -Notice how we were able to specify not only integers but also strings -as both the key and the value. In fact, we can use any kind of object -we want as either--the dictionary doesn't care. - - Now we can map each key to a value: - (x at: 1) printNl ! - (x at: 'Two') printNl ! - - which prints respectively: - 'One' - 2 - - We can also ask a dictionary to print itself: - x printNl ! - -which prints: - Dictionary (1->'One' 2->'Two' 'One'->1 'Two'->2 ) - -where the first member of each pair is the key, and the second the -value. - - -File: gst.info, Node: Smalltalk dictionary, Next: Closing thoughts, Prev: Dictionaries, Up: Some classes - -Smalltalk dictionary --------------------- - - If you'll remember from the beginning of the chapter, we started out -by saying: - Smalltalk at: #x put: 0 ! - - This code should look familiar--the `at:put:' message is how we've -been storing information in our own arrays and dictionaries. In a -Smalltalk environment the name `Smalltalk' has been preset to point to -a dictionary (1) which both you and Smalltalk can use. To see how this -sharing works, we'll first try to use a variable which Smalltalk -doesn't know about: - y := 0 ! - - Smalltalk complains because `y' is an unknown variable. Using our -knowledge of dictionaries, and taking advantage of our access to -Smalltalk's dictionary, we can add it ourselves: - - Smalltalk at: #y put: 0 ! - - The only mystery left is why we're using `#y' instead of our usual -quoted string. This is one of those simple questions whose answer runs -surprisingly deep. The quick answer is that `#y' and `'y'' are pretty -much the same, except that the former will always be the same object -each time you use it, whereas the latter can be a new string each time -you do so. (2) - - Now that we've added `y' to Smalltalk's dictionary, we try again: - y := 1 ! - It works! Because you've added an entry for `y', Smalltalk is now -perfectly happy to let you use this new variable. If you have some -spare time, you can print out the entire Smalltalk dictionary with: - Smalltalk inspect ! - - As you might suspect, this will print out quite a large list of -names! If you get tired of watching Smalltalk grind it out, use your -interrupt key (control-C, usually) to bring Smalltalk back to -interactive mode. - - ---------- Footnotes ---------- - - (1) Actually, a SystemDictionary, which is just a Dictionary with -some extra methods to run things when Smalltalk first starts and to do -nice things with a Smalltalk environment - - (2) For more detail, *Note Two flavors of equality:: - - -File: gst.info, Node: Closing thoughts, Prev: Smalltalk dictionary, Up: Some classes - -Closing thoughts ----------------- - - You've seen how Smalltalk provides you with some very powerful data -structures. You've also seen how Smalltalk itself uses these same -facilities to implement the language. But this is only the tip of the -iceberg--Smalltalk is much more than a collection of "neat" facilities -to use. The objects and methods which are automatically available are -only the beginning of the foundation on which you build your -programs--Smalltalk allows you to add your own objects and methods into -the system, and then use them along with everything else. The art of -programming in Smalltalk is the art of looking at your problems in -terms of objects, using the existing object types to good effect, and -enhancing Smalltalk with new types of objects. Now that you've been -exposed to the basics of Smalltalk manipulation, we can begin to look -at this object-oriented technique of programming. - - -File: gst.info, Node: The hierarchy, Next: Creating classes, Prev: Some classes, Up: Tutorial - -The Smalltalk class hierarchy -============================= - - When programming in Smalltalk, you sometimes need to create new -kinds of objects, and define what various messages will do to these -objects. In the next chapter we will create some new classes, but -first we need to understand how Smalltalk organizes the types and -objects it contains. Because this is a pure "concept" chapter, without -any actual Smalltalk code to run, we will keep it short and to the -point. - -* Menu: - -* Class Object:: The grandfather of every class -* Animals:: A classic in learning OOP! -* But why:: The bottom line of the class hierarchy - - -File: gst.info, Node: Class Object, Next: Animals, Prev: The hierarchy, Up: The hierarchy - -Class `Object' --------------- - - Smalltalk organizes all of its classes as a tree hierarchy. At the -very top of this hierarchy is class Object. Following somewhere below -it are more specific classes, such as the ones we've worked -with--strings, integers, arrays, and so forth. They are grouped -together based on their similarities; for instance, types of objects -which may be compared as greater or less than each other fall under a -class known as Magnitude. - - One of the first tasks when creating a new object is to figure out -where within this hierarchy your object falls. Coming up with an -answer to this problem is at least as much art as science, and there -are no hard-and-fast rules to nail it down. We'll take a look at three -kinds of objects to give you a feel for how this organization matters. - - -File: gst.info, Node: Animals, Next: But why, Prev: Class Object, Up: The hierarchy - -Animals -------- - - Imagine that we have three kinds of objects, representing Animals, -Parrots, and Pigs. Our messages will be eat, sing, and snort. Our -first pass at inserting these objects into the Smalltalk hierarchy would -organize them like: - Object - Animals - Parrots - Pigs - - This means that Animals, Parrots, and Pigs are all direct -descendants of Object, and are not descendants of each other. - - Now we must define how each animal responds to each kind of message. - - Animals - eat -> Say "I have now eaten" - sing -> Error - snort -> Error - Parrots - eat -> Say "I have now eaten" - sing -> Say "Tweet" - snort -> Error - Pigs - eat -> Say "I have now eaten"" - sing -> Error - snort -> Say "Oink" - - Notice how we kept having to indicate an action for eat. An -experienced object designer would immediately recognize this as a clue -that we haven't set up our hierarchy correctly. Let's try a different -organization: - Object - Animals - Parrots - Pigs - - That is, Parrots inherit from Animals, and Pigs from Parrots. Now -Parrots inherit all of the actions from Animals, and Pigs from both -Parrots and Animals. Because of this inheritance, we may now define a -new set of actions which spares us the redundancy of the previous set: - Animals - eat -> Say "I have now eaten" - sing -> Error - snort -> Error - Parrots - sing -> Say "Tweet" - Pigs - snort -> Say "Oink" - - Because Parrots and Pigs both inherit from Animals, we have only had -to define the eat action once. However, we have made one mistake in -our class setup--what happens when we tell a Pig to sing? It says -"Tweet", because we have put Pigs as an inheritor of Parrots. Let's -try one final organization: - Object - Animals - Parrots - Pigs - - Now Parrots and Pigs inherit from Animals, but not from each other. -Let's also define one final pithy set of actions: - Animals - eat -> Say "I have eaten" - Parrots - sing -> Say "Tweet" - Pigs - snort -> Say "Oink" - - The change is just to leave out messages which are inappropriate. -If Smalltalk detects that a message is not known by an object or any of -its ancestors, it will automatically give an error--so you don't have -to do this sort of thing yourself. Notice that now sending sing to a -Pig does indeed not say "Tweet"--it will cause a Smalltalk error -instead. - - -File: gst.info, Node: But why, Prev: Animals, Up: The hierarchy - -The bottom line of the class hierarchy --------------------------------------- - - The goal of the class hierarchy is to allow you to organize objects -into a relationship which allows a particular object to inherit the -code of its ancestors. Once you have identified an effective -organization of types, you should find that a particular technique need -only be implemented once, then inherited by the children below. This -keeps your code smaller, and allows you to fix a bug in a particular -algorithm in only once place--then have all users of it just inherit -the fix. - - You will find your decisions for adding objects change as you gain -experience. As you become more familiar with the existing set of -objects and messages, your selections will increasingly "fit in" with -the existing ones. But even a Smalltalk pro stops and thinks carefully -at this stage, so don't be daunted if your first choices seem difficult -and error-prone. - - -File: gst.info, Node: Creating classes, Next: Creating subclasses, Prev: The hierarchy, Up: Tutorial - -Creating a new class of objects -=============================== - - With the basic techniques presented in the preceding chapters, we're -ready do our first real Smalltalk program. In this chapter we will -construct three new types of objects (known as classes), using the -Smalltalk technique of inheritance to tie the classes together, create -new objects belonging to these classes (known as creating instances of -the class), and send messages to these objects. - - We'll exercise all this by implementing a toy home-finance -accounting system. We will keep track of our overall cash, and will -have special handling for our checking and savings accounts. From this -point on, we will be defining classes which will be used in future -chapters. Since you will probably not be running this whole tutorial -in one Smalltalk session, it would be nice to save off the state of -Smalltalk and resume it without having to retype all the previous -examples. To save the current state of GNU Smalltalk, type: - - ObjectMemory snapshot: 'myimage.im' ! - -and from your shell, to later restart Smalltalk from this "snapshot": - $ gst -I myimage.im - - Such a snapshot currently takes a little more than a megabyte, and -contains all variables, classes, and definitions you have added. - -* Menu: - -* A new class:: Creating a new class -* Documenting the class:: So anybody will know what it's about -* Defining methods:: So it will be useful -* Instance methods:: One of two kind of methods (the others, - class methods, are above) -* A look at our object:: which will sorely show that something - is still missing. -* Moving money around:: Let's make it more fun! -* Next coming:: Yeah, what's next?!? - - -File: gst.info, Node: A new class, Next: Documenting the class, Prev: Creating classes, Up: Creating classes - -Creating a new class --------------------- - - Guess how you create a new class? This should be getting monotonous -by now--by sending a message to an object. The way we create our first -"custom" class is by sending the following message: - - Object subclass: #Account - instanceVariableNames: 'balance' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - - Quite a mouthful, isn't it? Most people end up customizing their -editor to pop this up at a push of a button. But conceptually, it -isn't really that bad. The Smalltalk variable Object is bound to the -grand-daddy of all classes on the system. What we're doing here is -telling the Object class that we want to add to it a subclass known as -Account. The other parts of the message can be ignored, but -`instanceVariableNames: 'balance'' tells it that each object in this -subclass will have a hidden variable named `balance'. (1) - - ---------- Footnotes ---------- - - (1) In case you're having a hard time making out the font, the " -after `classVariableNames:' and `poolDictionaries:' are a pair of -single quotes--an empty string. - diff -rNU3 smalltalk-2.1.6/doc/gst.info-5 smalltalk-2.1.7/doc/gst.info-5 --- smalltalk-2.1.6/doc/gst.info-5 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-5 1970-01-01 01:00:00.000000000 +0100 @@ -1,1095 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: Documenting the class, Next: Defining methods, Prev: A new class, Up: Creating classes - -Documenting the class ---------------------- - - The next step is to associate a description with the class. You do -this by sending a message to the new class: - Account comment: - 'I represent a place to deposit and withdraw money' ! - - A description is associated with every Smalltalk class, and it's -considered good form to add a description to each new class you define. -To get the description for a given class: - (Account comment) printNl ! - - And your string is printed back to you. Try this with class -Integer, too: - (Integer comment) printNl ! - - -File: gst.info, Node: Defining methods, Next: Instance methods, Prev: Documenting the class, Up: Creating classes - -Defining a method for the class -------------------------------- - - We have created a class, but it isn't ready to do any work for -us--we have to define some messages which the class can process first. -We'll start at the beginning by defining methods for instance creation: - !Account class methodsFor: 'instance creation'! - - new - | r | - - r := super new. - r init. - ^r - ! ! - - Again, programming your editor to do this is recommended. The -important points about this are: - - * `Account class' means that we are defining messages which are to - be sent to the Account class itself. - - * `methodsFor: 'instance creation'' is more documentation support; - it says that all of the methods defined will be to support - creating objects of type Account. - - * The text starting with `new' and ending with `! !' defined what - action to take for the message `new'. When you enter this - definition, GNU Smalltalk will simply give you another prompt, but - your method has been compiled in and is ready for use. GNU - Smalltalk is pretty quiet on successful method definitions--but - you'll get plenty of error messages if there's a problem! - - This is also the first example where we've had to use more than one -statement, and thus a good place to present the statement -separator--the `.' period. Like Pascal, and unlike C, statements are -separated rather than terminated. Thus you need only use a `.' when -you have finished one statement and are starting another. This is why -our last statement, `^r', does not have a `.' following. Once again -like Pascal, however, Smalltalk won't complain if your enter a spurious -statement separator after the last statement. - - The best way to describe how this method works is to step through -it. Imagine we sent a message to the new class Account with the -command line: - Account new ! - - `Account' receives the message `new' and looks up how to process -this message. It finds our new definition, and starts running it. The -first line, `| r |', creates a local variable named `r' which can be -used as a placeholder for the objects we create. `r' will go away as -soon as the message is done being processed. - - The first real step is to actually create the object. The line `r -:= super new' does this using a fancy trick. The word `super' stands -for the same object that the message `new' was originally sent to -(remember? it's `Account'), except that when Smalltalk goes to search -for the methods, it starts one level higher up in the hierarchy than -the current level. So for a method in the Account class, this is the -Object class (because the class Account inherits from is Object--go -back and look at how we created the Account class), and the Object -class' methods then execute some code in response to the `#new' -message. As it turns out, Object will do the actual creation of the -object when sent a `#new' message. - - One more time in slow motion: the Account method `#new' wants to do -some fiddling about when new objects are created, but he also wants to -let his parent do some work with a method of the same name. By saying -`r := super new' he is letting his parent create the object, and then -he is attaching it to the variable `r'. So after this line of code -executes, we have a brand new object of type Account, and `r' is bound -to it. You will understand this better as time goes on, but for now -scratch your head once, accept it as a recipe, and keep going. - - We have the new object, but we haven't set it up correctly. -Remember the hidden variable `balance' which we saw in the beginning of -this chapter? `super new' gives us the object with the `balance' field -containing nothing, but we want our balance field to start at 0. (1) - - So what we need to do is ask the object to set itself up. By saying -`r init', we are sending the `init' message to our new Account. We'll -define this method in the next section--for now just assume that -sending the `init' message will get our Account set up. - - Finally, we say `^r'. In English, this is return what r is attached -to. This means that whoever sent to Account the `new' message will get -back this brand new account. At the same time, our temporary variable -`r' ceases to exist. - - ---------- Footnotes ---------- - - (1) And unlike C, Smalltalk draws a distinction between `0' and -`nil'. `nil' is the nothing object, and you will receive an error if -you try to do, say, math on it. It really does matter that we -initialize our instance variable to the number 0 if we wish to do math -on it in the future. - - -File: gst.info, Node: Instance methods, Next: A look at our object, Prev: Defining methods, Up: Creating classes - -Defining an instance method ---------------------------- - - We need to define the `init' method for our Account objects, so that -our `new' method defined above will work. Here's the Smalltalk code: - !Account methodsFor: 'instance initialization'! - init - balance := 0 - ! ! - - It looks quite a bit like the previous method definition, except -that the first one said `Account class methodsFor:...', and ours says -`Account methodsFor:...'. - - The difference is that the first one defined a method for messages -sent directly to `Account', but the second one is for messages which -are sent to Account objects once they are created. - - The method named `init' has only one line, `balance := 0'. This -initializes the hidden variable `balance' (actually called an instance -variable) to zero, which makes sense for an account balance. Notice -that the method doesn't end with `^r' or anything like it: this method -doesn't return a value to the message sender. When you do not specify -a return value, Smalltalk defaults the return value to the object -currently executing. For clarity of programming, you might consider -explicitly returning `self' in cases where you intend the return value -to be used.(1) - - ---------- Footnotes ---------- - - (1) And why didn't the designers default the return value to nil? -Perhaps they didn't appreciate the value of void functions. After all, -at the time Smalltalk was being designed, C didn't even have a void -data type. - - -File: gst.info, Node: A look at our object, Next: Moving money around, Prev: Instance methods, Up: Creating classes - -Looking at our Account ----------------------- - - Let's create an instance of class Account: - Smalltalk at: #a put: (Account new) ! - - Can you guess what this does? The `Smalltalk at: #a put: -' creates a Smalltalk variable. And the `Account new' -creates a new Account, and returns it. So this line creates a Smalltalk -variable named `a', and attaches it to a new Account--all in one line. -Let's take a look at the Account object we just created: - a printNl ! - - It prints: - an Account - - Hmmm... not very informative. The problem is that we didn't tell -our Account how to print itself, so we're just getting the default -system `printNl' method--which tells what the object is, but not what -it contains. So clearly we must add such a method: - !Account methodsFor: 'printing'! - printOn: stream - super printOn: stream. - stream nextPutAll: ' with balance: '. - balance printOn: stream - ! ! - - Now give it a try again: - a printNl ! - -which prints: - an Account with balance: 0 - - This may seem a little strange. We added a new method, printOn:, -and our printNl message starts behaving differently. It turns out that -the printOn: message is the central printing function--once you've -defined it, all of the other printing methods end up calling it. Its -argument is a place to print to--quite often it is the variable -`Transcript'. This variable is usually hooked to your terminal, and -thus you get the printout to your screen. - - The `super printOn: stream' lets our parent do what it did -before--print out what our type is. The `an Account' part of the -printout came from this. `stream nextPutAll: ' with balance: '' -creates the string ` with balance: ', and prints it out to the stream, -too; note that we don't use `printOn:' here because that would enclose -our string within quotes. Finally, `balance printOn: stream' asks -whatever object is hooked to the `balance' variable to print itself to -the stream. We set `balance' to 0, so the 0 gets printed out. - - -File: gst.info, Node: Moving money around, Next: Next coming, Prev: A look at our object, Up: Creating classes - -Moving money around -------------------- - - We can now create accounts, and look at them. As it stands, though, -our balance will always be 0--what a tragedy! Our final methods will -let us deposit and spend money. They're very simple: - - !Account methodsFor: 'moving money'! - spend: amount - balance := balance - amount - ! - deposit: amount - balance := balance + amount - ! ! - - With these methods you can now deposit and spend amounts of money. -Try these operations: - a deposit: 125! - a deposit: 20! - a printNl! - a spend: 10! - a printNl! - - -File: gst.info, Node: Next coming, Prev: Moving money around, Up: Creating classes - -What's next? ------------- - - We now have a generic concept, an "Account". We can create them, -check their balance, and move money in and out of them. They provide a -good foundation, but leave out important information that particular -types of accounts might want. In the next chapter, we'll take a look -at fixing this problem using subclasses. - - -File: gst.info, Node: Creating subclasses, Next: Code blocks (I), Prev: Creating classes, Up: Tutorial - -Two Subclasses for the Account Class -==================================== - - This chapter continues from the previous chapter in demonstrating -how one creates classes and subclasses in Smalltalk. In this chapter -we will create two special subclasses of Account, known as Checking and -Savings. We will continue to inherit the capabilities of Account, but -will tailor the two kinds of objects to better manage particular kinds -of accounts. - -* Menu: - -* The Savings class:: One of the two subclasses we'll put together -* The Checking class:: And here is the other -* Writing checks:: Only in Smalltalk, of course - - -File: gst.info, Node: The Savings class, Next: The Checking class, Prev: Creating subclasses, Up: Creating subclasses - -The Savings class ------------------ - - We create the Savings class as a subclass of Account. It holds -money, just like an Account, but has an additional property that we -will model: it is paid interest based on its balance. We create the -class Savings as a subclass of Account: - Account subclass: #Savings - instanceVariableNames: 'interest' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - - The instance variable `interest' will accumulate interest paid. -Thus, in addition to the `spend:' and `deposit:' messages which we -inherit from our parent, Account, we will need to define a method to -add in interest deposits, and a way to clear the interest variable -(which we would do yearly, after we have paid taxes). We first define -a method for allocating a new account--we need to make sure that the -interest field starts at 0. - !Savings methodsFor: 'initialization'! - init - interest := 0. - ^ super init - ! ! - - Recall that the parent took care of the `new' message, and created a -new object of the appropriate size. After creation, the parent also -sent an `init' message to the new object. As a subclass of Account, -the new object will receive the `init' message first; it sets up its own -instance variable, and then passes the `init' message up the chain to -let its parent take care of its part of the initialization. - - With our new `Savings' account created, we can define two methods -for dealing specially with such an account: - !Savings methodsFor: 'interest'! - interest: amount - interest := interest + amount. - self deposit: amount - ! - clearInterest - | oldinterest | - - oldinterest := interest. - interest := 0. - ^oldinterest - ! ! - - The first method says that we add the `amount' to our running total -of interest. The line `self deposit: amount' tells Smalltalk to send -ourselves a message, in this case `deposit: amount'. This then causes -Smalltalk to look up the method for `deposit:', which it finds in our -parent, Account. Executing this method then updates our overall -balance.(1) - - One may wonder why we don't just replace this with the simpler -`balance := balance + amount'. The answer lies in one of the -philosophies of object-oriented languages in general, and Smalltalk in -particular. Our goal is to encode a technique for doing something once -only, and then re-using that technique when needed. If we had directly -encoded `balance := balance + amount' here, there would have been two -places that knew how to update the balance from a deposit. This may -seem like a useless difference. But consider if later we decided to -start counting the number of deposits made. If we had encoded `balance -:= balance + amount' in each place that needed to update the balance, -we would have to hunt each of them down in order to update the count of -deposits. By sending `self' the message `deposit:', we need only -update this method once; each sender of this message would then -automatically get the correct up-to-date technique for updating the -balance. - - The second method, `clearInterest', is simpler. We create a -temporary variable `oldinterest' to hold the current amount of -interest. We then zero out our interest to start the year afresh. -Finally, we return the old interest as our result, so that our year-end -accountant can see how much we made.(2) - - ---------- Footnotes ---------- - - (1) `self' is much like `super', except that `self' will start -looking for a method at the bottom of the type hierarchy for the -object, while `super' starts looking one level up from the current -level. Thus, using `super' forces inheritance, but `self' will find -the first definition of the message which it can. - - (2) Of course, in a real accounting system we would never discard -such information--we'd probably throw it into a Dictionary object, -indexed by the year that we're finishing. The ambitious might want to -try their hand at implementing such an enhancement. - - -File: gst.info, Node: The Checking class, Next: Writing checks, Prev: The Savings class, Up: Creating subclasses - -The Checking class ------------------- - - Our second subclass of Account represents a checking account. We -will keep track of two facets: - - * What check number we are on - - * How many checks we have left in our checkbook - - We will define this as another subclass of Account: - Account subclass: #Checking - instanceVariableNames: 'checknum checksleft' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - - We have two instance variables, but we really only need to -initialize one of them--if there are no checks left, the current check -number can't matter. Remember, our parent class Account will send us -the `init' message. We don't need our own class-specific `new' -function, since our parent's will provide everything we need. - !Checking methodsFor: 'Initialization'! - init - checksleft := 0. - ^super init - ! ! - - As in Savings, we inherit most of abilities from our superclass, -Account. For initialization, we leave `checknum' alone, but set the -number of checks in our checkbook to zero. We finish by letting our -parent class do its own initialization. - - -File: gst.info, Node: Writing checks, Prev: The Checking class, Up: Creating subclasses - -Writing checks --------------- - - We will finish this chapter by adding a method for spending money -through our checkbook. The mechanics of taking a message and updating -variables should be familiar: - !Checking methodsFor: 'spending'! - newChecks: number count: checkcount - checknum := number. - checksleft := checkcount - ! - - writeCheck: amount - | num | - - num := checknum. - checknum := checknum + 1. - checksleft := checksleft - 1. - self spend: amount. - ^ num - ! ! - - `newChecks:' fills our checkbook with checks. We record what check -number we're starting with, and update the count of the number of -checks in the checkbook. - - `writeCheck:' merely notes the next check number, then bumps up the -check number, and down the check count. The message `self spend: -amount' resends the message `spend:' to our own object. This causes -its method to be looked up by Smalltalk. The method is then found in -our parent class, Account, and our balance is then updated to reflect -our spending. - - You can try the following examples: - Smalltalk at: #c put: (Checking new) ! - c printNl ! - c deposit: 250 ! - c printNl ! - c newChecks: 100 count: 50 ! - c printNl ! - (c writeCheck: 32) printNl ! - c printNl ! - - For amusement, you might want to add a printOn: message to the -checking class so you can see the checking-specific information. - - In this chapter, you have seen how to create subclasses of your own -classes. You have added new methods, and inherited methods from the -parent classes. These techniques provide the majority of the structure -for building solutions to problems. In the following chapters we will -be filling in details on further language mechanisms and types, and -providing details on how to debug software written in Smalltalk. - - -File: gst.info, Node: Code blocks (I), Next: Code blocks (II), Prev: Creating subclasses, Up: Tutorial - -Code blocks -=========== - - The Account/Saving/Checking example from the last chapter has -several deficiencies. It has no record of the checks and their values. -Worse, it allows you to write a check when there are no more -checks--the Integer value for the number of checks will just calmly go -negative! To fix these problems we will need to introduce more -sophisticated control structures. - -* Menu: - -* Conditions:: Making some decisions -* Iteration:: Making some loops - - -File: gst.info, Node: Conditions, Next: Iteration, Prev: Code blocks (I), Up: Code blocks (I) - -Conditions and decision making ------------------------------- - - Let's first add some code to keep you from writing too many checks. -We will simply update our current method for the Checking class; if you -have entered the methods from the previous chapters, the old definition -will be overridden by this new one. - !Checking methodsFor: 'spending'! - writeCheck: amount - | num | - - (checksleft < 1) - ifTrue: [ ^self error: 'Out of checks' ]. - num := checknum. - checknum := checknum + 1. - checksleft := checksleft - 1. - self spend: amount - ^ num - ! ! - - The two new lines are: - (checksleft < 1) - ifTrue: [ ^self error: 'Out of checks' ]. - - At first glance, this appears to be a completely new structure. -But, look again! The only new construct is the square brackets. - - The first line is a simple boolean expression. `checksleft' is our -integer, as initialized by our Checking class. It is sent the message -`<', and the argument 1. The current number bound to `checksleft' -compares itself against 1, and returns a boolean object telling whether -it is less than 1. - - Now this boolean, which is either true or false, is sent the message -`ifTrue:', with an argument which is called a code block. A code block -is an object, just like any other. But instead of holding a number, or -a Set, it holds executable statements. So what does a boolean do with -a code block which is an argument to a `ifTrue:' message? It depends -on which boolean! If the object is the `true' object, it executes the -code block it has been handed. If it is the `false' object, it returns -without executing the code block. So the traditional conditional -construct has been replaced in Smalltalk with boolean objects which -execute the indicated code block or not, depending on their truth-value. -(1) - - In the case of our example, the actual code within the block sends -an error message to the current object. `error:' is handled by the -parent class Object, and will pop up an appropriate complaint when the -user tries to write too many checks. In general, the way you handle a -fatal error in Smalltalk is to send an error message to yourself -(through the `self' pseudo-variable), and let the error handling -mechanisms inherited from the Object class take over. - - As you might guess, there is also an `ifFalse:' message which -booleans accept. It works exactly like `ifTrue:', except that the -logic has been reversed; a boolean `false' will execute the code block, -and a boolean `true' will not. - - You should take a little time to play with this method of -representing conditionals. You can run your checkbook, but can also -invoke the conditional functions directly: - true ifTrue: [ 'Hello, world!' printNl ] ! - false ifTrue: [ 'Hello, world!' printNl ] ! - true ifFalse: [ 'Hello, world!' printNl ] ! - false ifFalse: [ 'Hello, world!' printNl ] ! - - ---------- Footnotes ---------- - - (1) It is interesting to note that because of the way conditionals -are done, conditional constructs are not part of the Smalltalk -language, instead they are merely a defined behavior for the Boolean -class of objects. - - -File: gst.info, Node: Iteration, Prev: Conditions, Up: Code blocks (I) - -Iteration and collections -------------------------- - - Now that we have some sanity checking in place, it remains for us to -keep a log of the checks we write. We will do so by adding a -Dictionary object to our Checking class, logging checks into it, and -providing some messages for querying our check-writing history. But -this enhancement brings up a very interesting question--when we change -the "shape" of an object (in this case, by adding our dictionary as a -new instance variable to the Checking class), what happens to the -existing class, and its objects? The answer is that the old objects -are mutated to keep their new shape, and all methods are recompiled so -that they work with the new shape. New objects will have exactly the -same shape as old ones, but old objects might happen to be initialized -incorrectly (since the newly added variables will be simply put to -nil). As this can lead to very puzzling behavior, it is usually best -to eradicate all of the old objects, and then implement your changes. - - If this were more than a toy object accounting system, this would -probably entail saving the objects off, converting to the new class, -and reading the objects back into the new format. For now, we'll just -ignore what's currently there, and define our latest Checking class. - - Account subclass: #Checking - instanceVariableNames: 'checknum checksleft history' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - - This is the same syntax as the last time we defined a checking -account, except that we have three instance variables: the `checknum' -and `checksleft' which have always been there, and our new `history' -variable; since we have removed no instance variables, the old method -will be recompiled without errors. We must now feed in our definitions -for each of the messages our object can handle, since we are basically -defining a new class under an old name. - - With our new Checking instance variable, we are all set to start -recording our checking history. Our first change will be in the -handling of the `init' message: - !Checking methodsFor: 'initialization'! - init - checksleft := 0. - history := Dictionary new. - ^ super init - ! ! - - This provides us with a Dictionary, and hooks it to our new -`history' variable. - - Our next method records each check as it's written. The method is a -little more involved, as we've added some more sanity checks to the -writing of checks. - - !Checking methodsFor: 'spending'! - writeCheck: amount - | num | - - "Sanity check that we have checks left in our checkbook" - (checksleft < 1) - ifTrue: [ ^self error: 'Out of checks' ]. - - "Make sure we've never used this check number before" - num := checknum. - (history includesKey: num) - ifTrue: [ ^self error: 'Duplicate check number' ]. - - "Record the check number and amount" - history at: num put: amount. - - "Update our next checknumber, checks left, and balance" - checknum := checknum + 1. - checksleft := checksleft - 1. - self spend: amount. - ^ num - ! ! - - We have added three things to our latest version of `writeCheck:'. -First, since our routine has become somewhat involved, we have added -comments. In Smalltalk, single quotes are used for strings; double -quotes enclose comments. We have added comments before each section of -code. - - Second, we have added a sanity check on the check number we propose -to use. Dictionary objects respond to the `includesKey:' message with -a boolean, depending on whether something is currently stored under the -given key in the dictionary. If the check number is already used, the -`error:' message is sent to our object, aborting the operation. - - Finally, we add a new entry to the dictionary. We have already seen -the `at:put:' message (often found written as `#at:put:', with a sharp -in front of it) at the start of this tutorial. Our use here simply -associates a check number with an amount of money spent.(1) With this, -we now have a working Checking class, with reasonable sanity checks and -per-check information. - - Let us finish the chapter by enhancing our ability to get access to -all this information. We will start with some simple print-out -functions. - - !Checking methodsFor: 'printing'! - printOn: stream - super printOn: stream. - ', checks left: ' printOn: stream. - checksleft printOn: stream. - ', checks written: ' printOn: stream. - (history size) printOn: stream. - ! - check: num - | c | - c := history - at: num - ifAbsent: [ ^self error: 'No such check #' ]. - ^c - ! ! - - There should be very few surprises here. We format and print our -information, while letting our parent classes handle their own share of -the work. When looking up a check number, we once again take advantage -of the fact that blocks of executable statements are an object; in this -case, we are using the `at:ifAbsent:' message supported by the -Dictionary class. As you can probably anticipate, if the requested key -value is not found in the dictionary, the code block is executed. This -allows us to customize our error handling, as the generic error would -only tell the user "key not found". - - While we can look up a check if we know its number, we have not yet -written a way to "riffle through" our collection of checks. The -following function loops over the checks, printing them out one per -line. Because there is currently only a single numeric value under -each key, this might seem wasteful. But we have already considered -storing multiple values under each check number, so it is best to leave -some room for each item. And, of course, because we are simply sending -a printing message to an object, we will not have to come back and -re-write this code so long as the object in the dictionary honors our -`printNl'/`printOn:' messages sages. - - !Checking methodsFor: 'printing'! - printChecks - history associationsDo: [ :assoc | - (assoc key) print. - ' - ' print. - (assoc value) printNl. - ] - ! ! - - We still see a code block object being passed to the dictionary, but -`:assoc |' is something new. A code block can optionally receive -arguments. In this case, the argument is the key/value pair, known in -Smalltalk as an Association. This is the way that a dictionary object -stores its key/value pairs internally. In fact, when you sent an -at:put: message to a dictionary object, the first thing it does is pack -them into a new object from the Association class. If you only wanted -the value portion, you could call history with a `do:' message instead; -if you only wanted the key portion, you could call history with a -`keysDo:' message instead. - - Our code merely uses the `key' and `value' messages to ask the -association for the two values. We then invoke our printing interface -upon them. We don't want a newline until the end, so the `print' -message is used instead. It is pretty much the same as `printNl', -since both implicitly use `Transcript', except it doesn't add a newline. - - It is important that you be clear on the relationship between an -Association and the argument to a code block. In this example, we -passed a `associationsDo:' message to a dictionary. A dictionary -invokes the passed code block with an Association when processing an -associationsDo: message. But code blocks can receive any type of -argument: the type is determined by the code which invokes the code -block; Dictionary's `associationDo:' method, in this case. In the next -chapter we'll see more on how code blocks are used; we'll also look at -how you can invoke code blocks in your own code. - - ---------- Footnotes ---------- - - (1) You might start to wonder what one would do if you wished to -associate two pieces of information under one key. Say, the value and -who the check was written to. There are several ways; the best would -probably be to create a new, custom object which contained this -information, and then store this object under the check number key in -the dictionary. It would also be valid (though probably over-kill) to -store a dictionary as the value--and then store as many pieces of -information as you'd like under each slot! - - -File: gst.info, Node: Code blocks (II), Next: Debugging, Prev: Code blocks (I), Up: Tutorial - -Code blocks, part two -===================== - - In the last chapter, we looked at how code blocks could be used to -build conditional expressions, and how you could iterate across all -entries in a collection.(1) We built our own code blocks, and handed -them off for use by system objects. But there is nothing magic about -invoking code blocks; your own code will often need to do so. This -chapter will shows some examples of loop construction in Smalltalk, and -then demonstrate how you invoke code blocks for yourself. - -* Menu: - -* Integer loops:: Well, Smalltalk too has them -* Intervals:: And of course here's a peculiar way to use them -* Invoking code blocks:: You can do it, too - - ---------- Footnotes ---------- - - (1) The `do:' message is understood by most types of Smalltalk -collections. It works for the Dictionary class, as well as sets, -arrays, strings, intervals, linked lists, bags, and streams. The -`associationsDo:' message works only with dictionaries. The difference -is that `do:' passes only the value portion, while `associationsDo:' -passes the entire key/value pair in an Association object. - - -File: gst.info, Node: Integer loops, Next: Intervals, Prev: Code blocks (II), Up: Code blocks (II) - -Integer loops -------------- - - Integer loops are constructed by telling a number to drive the loop. -Try this example to count from 1 to 20: - 1 to: 20 do: [:x | x printNl ] ! - - There's also a way to count up by more than one: - 1 to: 20 by: 2 do: [:x | x printNl ] ! - - Finally, counting down is done with a negative step: - 20 to: 1 by: -1 do: [:x | x printNl ] ! - - -File: gst.info, Node: Intervals, Next: Invoking code blocks, Prev: Integer loops, Up: Code blocks (II) - -Intervals ---------- - - It is also possible to represent a range of numbers as a standalone -object. This allows you to represent a range of numbers as a single -object, which can be passed around the system. - Smalltalk at: #i put: (Interval from: 5 to: 10) ! - i printNl ! - i do: [:x | x printNl] ! - - As with the integer loops, the Interval class can also represent -steps greater than 1. It is done much like it was for our numeric loop -above: - i := (Interval from: 5 to: 10 by: 2) - i printNl ! - i do: [:x| x printNl] ! - - -File: gst.info, Node: Invoking code blocks, Prev: Intervals, Up: Code blocks (II) - -Invoking code blocks --------------------- - - Let us revisit the checking example and add a method for scanning -only checks over a certain amount. This would allow our user to find -"big" checks, by passing in a value below which we will not invoke -their function. We will invoke their code block with the check number -as an argument ment; they can use our existing check: message to get the -amount. - - !Checking methodsFor: 'scanning'! - checksOver: amount do: aBlock - history associationsDo: [:assoc| - ((assoc value) > amount) - ifTrue: [aBlock value: (assoc key)] - ] - ! ! - - The structure of this loop is much like our printChecks message sage -from chapter 6. However, in this case we consider each entry, and only -invoke the supplied block if the check's value is greater than the -specified amount. The line: - - ifTrue: [aBlock value: (assoc key)] - -invokes the user-supplied block, passing as an argument the -association's key, which is the check number. The `value:' message, -when received by a code block, causes the code block to execute. Code -blocks take `value', `value:', `value:value:', and `value:value:value:' -messages, so you can pass from 0 to 3 arguments to a code block.(1) - - You might find it puzzling that an association takes a `value' -message, and so does a code block. Remember, each object can do its -own thing with a message. A code block gets run when it receives a -`value' message. An association merely returns the value part of its -key/value pair. The fact that both take the same message is, in this -case, coincidence. - - Let's quickly set up a new checking account with $250 (wouldn't this -be nice in real life?) and write a couple checks. Then we'll see if -our new method does the job correctly: - Smalltalk at: #mycheck put: (Checking new) ! - mycheck deposit: 250 ! - mycheck newChecks: 100 count: 40 ! - mycheck writeCheck: 10 ! - mycheck writeCheck: 52 ! - mycheck writeCheck: 15 ! - mycheck checksOver: 1 do: [:x | x printNl] ! - mycheck checksOver: 17 do: [:x | x printNl] ! - mycheck checksOver: 200 do: [:x | x printNl] ! - - We will finish this chapter with an alternative way of writing our -`checksOver:' code. In this example, we will use the message `select:' -to pick the checks which exceed our value, instead of doing the -comparison ourselves. We can then invoke the new resulting collection -against the user's code block. - - !Checking methodsFor: 'scanning'! - checksOver: amount do: aBlock - | chosen | - chosen := history select: [:amt| amt > amount]. - chosen associationsDo: aBlock - ! ! - - Unlike our previous definition of `checksOver:do:', this one passes -the user's code block the association, not just a check number. How -could this code be rewritten to remedy this, while still using select:? - - Yet, this new behavior can be useful. You can use the same set of -tests that we ran above. Notice that our code block: - [:x| x printNl] - now prints out an Association. This has a very nice effect: with -our old method, we were told which check numbers were above a given -amount; with this new method, we get the check number and amount in the -form of an Association. When we print an association, since the key is -the check number and the value is the check amount, we get a list of -checks over the amount in the format: - CheckNum -> CheckVal - - ---------- Footnotes ---------- - - (1) There is also a `valueWithArguments:' message which accepts an -array holding as many arguments as you would like. - - -File: gst.info, Node: Debugging, Next: More subclassing, Prev: Code blocks (II), Up: Tutorial - -When Things Go Bad -================== - - So far we've been working with examples which work the first time. -If you didn't type them in correctly, you probably received a flood of -unintelligible complaints. You probably ignored the complaints, and -typed the example again. - - When developing your own Smalltalk code, however, these messages are -the way you find out what went wrong. Because your objects, their -methods, the error printout, and your interactive environment are all -contained within the same Smalltalk session, you can use these error -messages to debug your code using very powerful techniques. - -* Menu: - -* Simple errors:: Those that only happen in examples -* Nested calls:: Those that actually happen in real life -* Looking at objects:: Trying to figure it out - - -File: gst.info, Node: Simple errors, Next: Nested calls, Prev: Debugging, Up: Debugging - -A Simple Error --------------- - - First, let's take a look at a typical error. Type: - 7 plus: 1 ! - - This will print out: - 7 did not understand selector 'plus:' - - UndefinedObject>>#executeStatements - - The first line is pretty simple; we sent a message to the `7' object -which was not understood; not surprising since the `plus:' operation -should have been `+'. Then there are a few lines of gobbledegook: just -ignore them, they reflect the fact that the error passed throgh GNU -Smalltalk's exception handling system. The remaining line reflect the -way the GNU Smalltalk invokes code which we type to our command prompt; -it generates a block of code which is invoked via an internal method -`executeStatements' defined in class Object and evaluated like `nil -executeStatements' (nil is an instance of UndefinedObject). Thus, this -output tells you that you directly typed a line which sent an invalid -message to the `7' object. - - All the error output but the first line is actually a stack -backtrace. The most recent call is the one nearer the top of the -screen. In the next example, we will cause an error which happens -deeper within an object. - - -File: gst.info, Node: Nested calls, Next: Looking at objects, Prev: Simple errors, Up: Debugging - -Nested Calls ------------- - - Type the following lines: - Smalltalk at: #x put: (Dictionary new) ! - x at: 1 ! - - The error you receive will look like: - Dictionary new: 31 "<0x33788>" error: key not found - ...blah blah... - Dictionary>>#error: - [] in Dictionary>>#at: - [] in Dictionary>>#at:ifAbsent: - Dictionary(HashedCollection)>>#findIndex:ifAbsent: - Dictionary>>#at:ifAbsent: - Dictionary>>#at: - UndefinedObject(Object)>>#executeStatements - - The error itself is pretty clear; we asked for something within the -Dictionary which wasn't there. The object which had the error is -identified as `Dictionary new: 31'. A Dictionary's default size is 31; -thus, this is the object we created with `Dictionary new'. - - The stack backtrace shows us the inner structure of how a Dictionary -responds to the `#at:' message. Our hand-entered command causes the -usual entry for `UndefinedObject(Object)'. Then we see a Dictionary -object responding to an `#at:' message (the "Dictionary>>#at:" line). -This code called the object with an `#at:ifAbsent:' message. All of a -sudden, Dictionary calls that strange method `#findIndex:ifAbsent:', -which evaluates two blocks, and then the error happens. - - To understand this better, it is necessary to know that a very -common way to handle errors in Smalltalk is to hand down a block of -code which will be called when an error occurs. For the Dictionary -code, the `at:' message passes in a block of code to the at:ifAbsent: -code to be called when `at:ifAbsent:' can't find the given key, and -`at:ifAbsent:' does the same with `findIndex:ifAbsent:'. Thus, without -even looking at the code for Dictionary itself, we can guess something -of the code for Dictionary's implementation: - - findIndex: key ifAbsent: errCodeBlock - ...look for key... - (keyNotFound) ifTrue: [ ^(errCodeBlock value) ] - ... - - at: key - ^self at: key ifAbsent: [^self error: 'key not found'] - - Actually, `findIndex:ifAbsent:' lies in class HashedCollection, as -that `Dictionary(HashedCollection)' in the backtrace says. - - It would be nice if each entry on the stack backtrace included -source line numbers. Unfortunately, at this point GNU Smalltalk doesn't -provide this feature. Of course, you have the source code available... - - -File: gst.info, Node: Looking at objects, Prev: Nested calls, Up: Debugging - -Looking at Objects ------------------- - - When you are chasing an error, it is often helpful to examine the -instance variables of your objects. While strategic calls to `printNl' -will no doubt help, you can look at an object without having to write -all the code yourself. The `inspect' message works on any object, and -dumps out the values of each instance variable within the object.(1) - - Thus: - Smalltalk at: #x put: (Interval from: 1 to: 5) ! - x inspect ! - - displays: - An instance of Interval - start: 1 - stop: 5 - step: 1 - contents: [ - [1]: 1 - [2]: 2 - [3]: 3 - [4]: 4 - [5]: 5 - ] - - We'll finish this chapter by emphasizing a technique which has -already been covered: the use of the `error:' message in your own -objects. As you saw in the case of Dictionary, an object can send -itself an `error:' message with a descriptive string to abort execution -and dump a stack backtrace. You should plan on using this technique in -your own objects. It can be used both for explicit user-caused errors, -as well as in internal sanity checks. - - ---------- Footnotes ---------- - - (1) When using the Blox GUI, it actually pops up a so-called -Inspector window. - - -File: gst.info, Node: More subclassing, Next: Streams, Prev: Debugging, Up: Tutorial - -Coexisting in the Class Hierarchy -================================= - - The early chapters of this tutorial discussed classes in one of two -ways. The "toy" classes we developed were rooted at Object; the -system-provided classes were treated as immutable entities. While one -shouldn't modify the behavior of the standard classes lightly, -"plugging in" your own classes in the right place among their -system-provided brethren can provide you powerful new classes with very -little effort. - - This chapter will create two complete classes which enhance the -existing Smalltalk hierarchy. The discussion will start with the issue -of where to connect our new classes, and then continue onto -implementation. Like most programming efforts, the result will leave -many possibilities for improvements. The framework, however, should -begin to give you an intuition of how to develop your own Smalltalk -classes. - -* Menu: - -* The existing hierarchy:: We've been talking about it for a while, - so here it is at last -* Playing with Arrays:: Again. -* New kinds of Numbers:: Sounds interesting, doesn't it? -* Inheritance and Polymorphism:: Sounds daunting, doesn't it? - diff -rNU3 smalltalk-2.1.6/doc/gst.info-6 smalltalk-2.1.7/doc/gst.info-6 --- smalltalk-2.1.6/doc/gst.info-6 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-6 1970-01-01 01:00:00.000000000 +0100 @@ -1,1226 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: The existing hierarchy, Next: Playing with Arrays, Prev: More subclassing, Up: More subclassing - -The Existing Class Hierarchy ----------------------------- - - To discuss where a new class might go, it is helpful to have a map -of the current classes. The following is the basic class hierarchy of -GNU Smalltalk. Indentation means that the line inherits from the -earlier line with one less level of indentation.(1). - - Object - Behavior - ClassDescription - Class - Metaclass - BlockClosure - Boolean - False - True - Browser - CFunctionDescriptor - CObject - CAggregate - CArray - CPtr - CCompound - CStruct - CUnion - CScalar - CChar - CDouble - CFloat - CInt - CLong - CShort - CSmalltalk - CString - CUChar - CByte - CBoolean - CUInt - CULong - CUShort - Collection - Bag - MappedCollection - SequenceableCollection - ArrayedCollection - Array - ByteArray - WordArray - LargeArrayedCollection - LargeArray - LargeByteArray - LargeWordArray - CompiledCode - CompiledMethod - CompiledBlock - Interval - CharacterArray - String - Symbol - LinkedList - Semaphore - OrderedCollection - RunArray - SortedCollection - HashedCollection - Dictionary - IdentityDictionary - MethodDictionary - RootNamespace - Namespace - SystemDictionary - Set - IdentitySet - ContextPart - BlockContext - MethodContext - CType - CArrayCType - CPtrCType - CScalarCType - Delay - DLD - DumperProxy - AlternativeObjectProxy - NullProxy - VersionableObjectProxy - PluggableProxy - File - Directory - FileSegment - Link - Process - SymLink - Magnitude - Association - Character - Date - LargeArraySubpart - Number - Float - Fraction - Integer - LargeInteger - LargeNegativeInteger - LargePositiveInteger - LargeZeroInteger - SmallInteger - Time - Memory - Message - DirectedMessage - MethodInfo - NullProxy - PackageLoader - Point - ProcessorScheduler - Rectangle - SharedQueue - Signal - Exception - Error - Halt - ArithmeticError - ZeroDivide - MessageNotUnderstood - UserBreak - Notification - Warning - Stream - ObjectDumper - PositionableStream - ReadStream - WriteStream - ReadWriteStream - ByteStream - FileStream - Random - TextCollector - TokenStream - TrappableEvent - CoreException - ExceptionCollection - UndefinedObject - ValueAdaptor - NullValueHolder - PluggableAdaptor - DelayedAdaptor - ValueHolder - - While initially a daunting list, you should take the time to hunt -down the classes we've examined in this tutorial so far. Notice, for -instance, how an Array is a subclass below the SequenceableCollection -class. This makes sense; you can walk an Array from one end to the -other. By contrast, notice how this is not true for Sets: it doesn't -make sense to walk a Set from one end to the other. - - A little puzzling is the relationship of a Bag to a Set, since a Bag -is actually a Set supporting multiple occurrences of its elements. The -answer lies in the purpose of both a Set and a Bag. Both hold an -unordered collection of objects; but a Bag needs to be optimized for -the case when an object has possibly thousands of occurrences, while a -Set is optimized for checking object uniqueness. That's why Set being -a subclass or Bag, or the other way round, would be a source of -problems in the actual implementation of the class. Currently a Bag -holds a Dictionary associating each object to each count; it would be -feasible however to have Bag as a subclass of HashedCollection and a -sibling of Set. - - Look at the treatment of numbers--starting with the class Magnitude. -While numbers can indeed be ordered by _less than_, _greater than_, -and so forth, so can a number of other objects. Each subclass of -Magnitude is such an object. So we can compare characters with other -characters, dates with other dates, and times with other times, as well -as numbers with numbers. - - Finally, you will have probably noted some pretty strange classes, -representing language entities that you might have never thought of as -objects themselves: Namespace, Class and even CompiledMethod. They are -the base of Smalltalk's "reflection" mechanism which will be discussed -later, in *Note The truth on metaclasses: Why is #new there?!?. - - ---------- Footnotes ---------- - - (1) This listing is courtesy of the printHierarchy method supplied -by GNU Smalltalk author Steve Byrne. It's in the `kernel/Browser.st' -file. - - -File: gst.info, Node: Playing with Arrays, Next: New kinds of Numbers, Prev: The existing hierarchy, Up: More subclassing - -Playing with Arrays -------------------- - - Imagine that you need an array, but alas you need that if an index -is out of bounds, it returns nil. You could modify the Smalltalk -implementation, but that might break some code in the image, so it is -not practical. Why not add a subclass? - - Array variableSubclass: #NiledArray - instanceVariableNames: '' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - - !NiledArray methodsFor: 'bounds checking'! - boundsCheck: index - ^(index < 1) | (index > (self basicSize)) - ! ! - - !NiledArray methodsFor: 'basic'! - at: index - ^(self boundsCheck: index) - ifTrue: [ nil ] - ifFalse: [ super at: index ] - - ! - at: index put: val - ^(self boundsCheck: index) - ifTrue: [ val ] - ifFalse: [ super at: index put: val ] - ! ! - - Much of the machinery of adding a class should be familiar. Instead -of our usual `subclass:' message, we use a `variableSubclass:' message. -This reflects the underlying structure of an `Array' object; we'll -delay discussing this until the chapter on the nuts and bolts of -arrays. In any case, we inherit all of the actual knowledge of how to -create arrays, reference them, and so forth. All that we do is -intercept at: and at:put: messages, call our common function to -validate the array index, and do something special if the index is not -valid. The way that we coded the bounds check bears a little -examination. - - Making a first cut at coding the bounds check, you might have coded -the bounds check in NiledArray's methods twice (once for `at:', and -again for `at:put:'. As always, it's preferable to code things once, -and then re-use them. So we instead add a method for bounds checking -`boundsCheck:', and use it for both cases. If we ever wanted to -enhance the bounds checking (perhaps emit an error if the index is < 1 -and answer nil only for indices greater than the array size?), we only -have to change it in one place. - - The actual math for calculating whether the bounds have been -violated is a little interesting. The first part of the expression -returned by the method: - (index < 1) | (index > (self basicSize)) - -is true if the index is less than 1, otherwise it's false. This part -of the expression thus becomes the boolean object true or false. The -boolean object then receives the message `|', and the argument `(index -> (self basicSize))'. `|' means "or"--we want to OR together the two -possible out-of-range checks. What is the second part of the -expression? (1) - - `index' is our argument, an integer; it receives the message `>', -and thus will compare itself to the value `self basicSize' returns. -While we haven't covered the underlying structures Smalltalk uses to -build arrays, we can briefly say that the `#basicSize' message returns -the number of elements the Array object can contain. So the index is -checked to see if it's less than 1 (the lowest legal Array index) or -greater than the highest allocated slot in the Array. If it is either -(the `|' operator!), the expression is true, otherwise false. - - From there it's downhill; our boolean object, returned by -`boundsCheck:', receives the `ifTrue:ifFalse:' message, and a code -block which will do the appropriate thing. Why do we have `at:put:' -return val? Well, because that's what it's supposed to do: look at -every implementor of `at:put' or `at:' and you'll find that it returns -its second parameter. In general, the result is discarded; but one -could write a program which uses it, so we'll write it this way anyway. - - ---------- Footnotes ---------- - - (1) Smalltalk also offers an `or:' message, which is different in a -subtle way from `|'. or: takes a code block, and only invokes the code -block if it's necessary to determine the value of the expression. This -is analogous to the guaranteed C semantic that `||' evaluates -left-to-right only as far as needed. We could have written the -expressions as `((index < 1) or: [index > (self basicSize)])'. Since -we expect both sides of or: to be false most of the time, there isn't -much reason to delay evaluation of either side in this case. - - -File: gst.info, Node: New kinds of Numbers, Next: Inheritance and Polymorphism, Prev: Playing with Arrays, Up: More subclassing - -Adding a New Kind of Number ---------------------------- - - If we were programming an application which did a large amount of -complex math, we could probably manage it with a number of two-element -arrays. But we'd forever be writing in-line code for the math and -comparisons; it would be much easier to just implement an object class -to support the complex numeric type. Where in the class hierarchy -would it be placed? - - You've probably already guessed--but let's step down the hierarchy -anyway. Everything inherits from Object, so that's a safe starting -point. Complex numbers can not be compared with `<' and `>', and yet -we strongly suspect that, since they are numbers, we should place them -under the Number class. But Number inherits from Magnitude--how do we -resolve this conflict? A subclass can place itself under a superclass -which allows some operations the subclass doesn't wish to allow. All -that you must do is make sure you intercept these messages and return -an error. So we will place our new Complex class under Number, and -make sure to disallow comparisons. - - One can reasonably ask whether the real and imaginary parts of our -complex number will be integer or floating point. In the grand -Smalltalk tradition, we'll just leave them as objects, and hope that -they respond to numeric messages reasonably. If they don't, the user -will doubtless receive errors and be able to track back their mistake -with little fuss. - - We'll define the four basic math operators, as well as the (illegal) -relationals. We'll add `printOn:' so that the printing methods work, -and that should give us our Complex class. The class as presented -suffers some limitations, which we'll cover later in the chapter. - - Number subclass: #Complex - instanceVariableNames: 'realpart imagpart' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - !Complex class methodsFor: 'creating'! - new - ^self error: 'use real:imaginary:' - ! - new: ignore - ^self new - ! - real: r imaginary: i - ^(super new) setReal: r setImag: i - ! ! - - !Complex methodsFor: 'creating--private'! - setReal: r setImag: i - realpart := r. - imagpart := i. - ^self - ! ! - - !Complex methodsFor: 'basic'! - real - ^realpart - ! - imaginary - ^imagpart - ! ! - - !Complex methodsFor: 'math'! - + val - ^Complex real: (realpart + val real) - imaginary: (imagpart + val imaginary) - ! - - val - ^Complex real: (realpart - val real) - imaginary: (imagpart - val imaginary) - ! - * val - ^Complex real: (realpart * val real) - (imagpart * val imaginary) - imaginary: (imagpart * val real) + (realpart * val imaginary) - ! - / val - | d r i | - d := (val real * val real) + (val imaginary * val imaginary). - r := ((realpart * val real) + (imagpart * val imaginary)). - i := ((imagpart * val real) - (realpart * val imaginary)). - ^Complex real: r / d imaginary: i / d - ! ! - - !Complex methodsFor: 'comparison'! - - = val - ^(realpart = val real) & (imagpart = val imaginary) - ! - > val - ^self shouldNotImplement - ! - >= val - ^self shouldNotImplement - ! - < val - ^self shouldNotImplement - ! - <= val - ^self shouldNotImplement - ! ! - - !Complex methodsFor: 'printing'! - printOn: aStream - aStream nextPut: $(. - realpart printOn: aStream. - aStream nextPut: $,. - imagpart printOn: aStream. - aStream nextPut: $) - ! ! - - There should be surprisingly little which is actually new in this -example. The printing method uses both printOn: as well as nextPut: to -do its printing. While we haven't covered it, it's pretty clear that -`$(' generates the ASCII character `(' as an object, and nextPut: puts -its argument as the next thing on the stream. - - The math operations all generate a new object, calculating the real -and imaginary parts, and invoking the Complex class to create the new -object. Our creation code is a little more compact than earlier -examples; instead of using a local variable to name the newly-created -object, we just use the return value and send a message directly to the -new object. Our initialization code explicitly returns self; what -would happen if we left this off? - - -File: gst.info, Node: Inheritance and Polymorphism, Prev: New kinds of Numbers, Up: More subclassing - -Inheritance and Polymorphism ----------------------------- - - This is a good time to look at what we've done with the two previous -examples at a higher level. With the NiledArray class, we inherited -almost all of the functionality ality of arrays, with only a little bit -of code added to address our specific needs. While you may have not -thought to try it, all the existing methods for an Array continue to -work without further effort-you might find it interesting to ponder why -the following still works: - Smalltalk at: #a put: (NiledArray new: 10) ! - a at: 5 put: 1234 ! - a do: [:i| i printNl ] ! - - The strength of inheritance is that you focus on the incremental -changes you make; the things you don't change will generally continue -to work. - - In the Complex class, the value of polymorphism was exercised. A -Complex number responds to exactly the same set of messages as any -other number. If you had handed this code to someone, they would know -how to do math with Complex numbers without further instruction. -Compare this with C, where a complex number package would require the -user to first find out if the complex-add function was complex_plus(), -or perhaps complex_add(), or add_complex(), or... - - However, one glaring deficiency is present in the Complex class: -what happens if you mix normal numbers with Complex numbers? -Currently, the Complex class assumes that it will only interact with -other Complex numbers. But this is unrealistic: mathematically, a -"normal" number is simply one with an imaginary part of 0. Smalltalk -was designed to allow numbers to coerce themselves into a form which -will work with other numbers. - - The system is clever and requires very little additional code. -Unfortunately, it would have tripled the amount of explanation -required. If you're interested in how coercion works in GNU Smalltalk, -you should find the Smalltalk library source, and trace back the -execution of the `retry:coercing:' messages. You want to consider the -value which the `generality' message returns for each type of number. -Finally, you need to examine the `coerce:' handling in each numeric -class. - - -File: gst.info, Node: Streams, Next: Behind the scenes, Prev: More subclassing, Up: Tutorial - -Smalltalk Streams -================= - - Our examples have used a mechanism extensively, even though we -haven't discussed it yet. The Stream class provides a framework for a -number of data structures, including input and output functionality, -queues, and endless sources of dynamically-generated data. A Smalltalk -stream is quite similar to the UNIX streams you've used from C. A -stream provides a sequential view to an underlying resource; as you -read or write elements, the stream position advances until you finally -reach the end of the underlying medium. Most streams also allow you to -set the current position, providing random access to the medium. - -* Menu: - -* The output stream:: Which, even though you maybe didn't know - it, we've used all the time -* Your own stream:: Which, instead, is something new -* Files:: Which are streams too -* Dynamic Strings:: A useful application of Streams - - -File: gst.info, Node: The output stream, Next: Your own stream, Prev: Streams, Up: Streams - -The Output Stream ------------------ - - The examples in this book all work because they write their output -to the `Transcript' stream. Each class implements the `printOn:' -method, and writes its output to the supplied stream. The `printNl' -method all objects use is simply to send the current object a -`printOn:' message whose argument is `Transcript' (by default attached -to the standard output stream found in the `stdout' global). You can -invoke the standard output stream directly: - 'Hello, world' printOn: stdout ! - stdout inspect ! - -or you can do the same for the Transcript, which is yet another stream: - 'Hello, world' printOn: stdout ! - Transcript inspect ! - -the last `inspect' statement will show you how the `Transcript' is -linked to `stdout'(1). - - ---------- Footnotes ---------- - - (1) Try executing it under Blox, where the Transcript is linked to -the omonymous window! - - -File: gst.info, Node: Your own stream, Next: Files, Prev: The output stream, Up: Streams - -Your Own Stream ---------------- - - Unlike a pipe you might create in C, the underlying storage of a -Stream is under your control. Thus, a Stream can provide an anonymous -buffer of data, but it can also provide a stream-like interpretation to -an existing array of data. Consider this example: - Smalltalk at: #a put: (Array new: 10) ! - a at: 4 put: 1234 ! - a at: 9 put: 5678 ! - Smalltalk at: #s put: (ReadWriteStream on: a) ! - s inspect ! - s position: 1 ! - s inspect ! - s nextPut: 11; nextPut: 22 ! - (a at: 1) printNl ! - a do: [:x| x printNl] ! - s position: 2 ! - s do: [:x| x printNl] ! - s position: 5 ! - s do: [:x| x printNl] ! - s inspect ! - - The key is the `on:' message; it tells a stream class to create -itself in terms of the existing storage. Because of polymorphism, the -object specified by on: does not have to be an Array; any object which -responds to numeric at: messages can be used. If you happen to have -the NiledArray class still loaded from the previous chapter, you might -try streaming over that kind of array instead. - - You're wondering if you're stuck with having to know how much data -will be queued in a Stream at the time you create the stream. If you -use the right class of stream, the answer is no. A ReadStream provides -read-only access to an existing collection. You will receive an error -if you try to write to it. If you try to read off the end of the -stream, you will also get an error. - - By contrast, WriteStream and ReadWriteStream (used in our example) -will tell the underlying collection to grow when you write off the end -of the existing collection. Thus, if you want to write several -strings, and don't want to add up their lengths yourself: - - Smalltalk at: #s put: (ReadWriteStream on: (String new)) ! - s inspect ! - s nextPutAll: 'Hello, '! - s inspect ! - s nextPutAll: 'world'! - s inspect ! - s position: 1 ! - s inspect ! - s do: [:c | stdout nextPut: c ] ! - (s contents) printNl ! - - In this case, we have used a String as the collection for the -Stream. The `printOn:' messages add bytes to the initially empty -string. Once we've added the data, you can continue to treat the data -as a stream. Alternatively, you can ask the stream to return to you -the underlying object. After that, you can use the object (a String, -in this example) using its own access methods. - - There are many amenities available on a stream object. You can ask -if there's more to read with `atEnd'. You can query the position with -`position', and set it with `position:'. You can see what will be read -next with `peek', and you can read the next element with `next'. - - In the writing direction, you can write an element with `nextPut:'. -You don't need to worry about objects doing a `printOn:' with your -stream as a destination; this operation ends up as a sequence of -`nextPut:' operations to your stream. If you have a collection of -things to write, you can use `nextPutAll:' with the collection as an -argument; each member of the collection will be written onto the -stream. If you want to write an object to the stream several times, you -can use `next:put:', like this: - - Smalltalk at: #s put: (ReadWriteStream on: (Array new: 0)) ! - s next: 4 put: 'Hi!' ! - s position: 1 ! - s do: [:x | x printNl] ! - - -File: gst.info, Node: Files, Next: Dynamic Strings, Prev: Your own stream, Up: Streams - -Files ------ - - Streams can also operate on files. If you wanted to dump the file -`/etc/passwd' to your terminal, you could create a stream on the file, -and then stream over its contents: - Smalltalk at: #f put: (FileStream - open: '/etc/passwd' - mode: FileStream read) ! - f do: [ :c | Transcript nextPut: c ] ! - f position: 30 ! - 25 timesRepeat: [ Transcript nextPut: (f next) ] ! - f close ! - - and, of course, you can load Smalltalk source code into your image: - FileStream fileIn: '/users/myself/src/source.st' ! - - -File: gst.info, Node: Dynamic Strings, Prev: Files, Up: Streams - -Dynamic Strings ---------------- - - Streams provide a powerful abstraction for a number of data -structures. Concepts like current position, writing the next position, -and changing the way you view a data structure when convenient combine -to let you write compact, powerful code. The last example is taken -from the actual Smalltalk source code--it shows a general method for -making an object print itself onto a string. - - printString - | stream | - stream := WriteStream on: (String new). - self printOn: stream. - ^stream contents - ! - - This method, residing in Object, is inherited by every class in -Smalltalk. The first line creates a WriteStream which stores on a -String whose length is currently 0 (`String new' simply creates an -empty string. It then invokes the current object with `printOn:'. As -the object prints itself to "stream", the String grows to accommodate -new characters. When the object is done printing, the method simply -returns the underlying string. - - As we've written code, the assumption has been that printOn: would -go to the terminal. But replacing a stream to a file like `/dev/tty' -with a stream to a data structure (`String new') works just as well. -The last line tells the Stream to return its underlying collection, -which will be the string which has had all the printing added to it. -The result is that the `printString' message returns an object of the -String class whose contents are the printed representation of the very -object receiving the message. - - -File: gst.info, Node: Behind the scenes, Next: And now, Prev: Streams, Up: Tutorial - -Some nice stuff from the Smalltalk innards -========================================== - - Just like with everything else, you'd probably end up asking -yourself: how's it done? So here's this chapter, just to wheten your -appetite... - -* Menu: - -* Inside Arrays:: Delving into something old -* Two flavors of equality:: Delving into something new -* Why is #new there?!?:: Or, the truth on metaclasses -* Performance:: Hmm... they told me Smalltalk is slow... - - -File: gst.info, Node: Inside Arrays, Next: Two flavors of equality, Prev: Behind the scenes, Up: Behind the scenes - -How Arrays Work ---------------- - - Smalltalk provides a very adequate selection of predefined classes -from which to choose. Eventually, however, you will find the need to -code a new basic data structure. Because Smalltalk's most fundamental -storage allocation facilities are arrays, it is important that you -understand how to use them to gain efficient access to this kind of -storage. - - The Array Class. Our examples have already shown the Array class, and -its use is fairly obvious. For many applications, it will fill all -your needs--when you need an array in a new class, you keep an instance -variable, allocate a new Array and assign it to the variable, and then -send array accesses via the instance variable. - - This technique even works for string-like objects, although it is -wasteful of storage. An Array object uses a Smalltalk pointer for each -slot in the array; its exact size is transparent to the programmer, but -you can generally guess that it'll be roughly the word size of your -machine. (1) For storing an array of characters, therefore, an Array -works but is inefficient. - - Arrays at a Lower Level. So let's step down to a lower level of data -structure. A ByteArray is much like an Array, but each slot holds only -an integer from 0 to 255-and each slot uses only a byte of storage. If -you only needed to store small quantities in each array slot, this -would therefore be a much more efficient choice than an Array. As you -might guess, this is the type of array which a String uses. - - Aha! But when you go back to chapter 9 and look at the Smalltalk -hierarchy, you notice that String does not inherit from ByteArray. To -see why, we must delve down yet another level, and arrive at the basic -methods for creating a class. - - For most example classes, we've used the message: - subclass: - instanceVariableNames: - classVariableNames: - poolDictionaries: - category: - - But when we implemented our CheckedArray example, we used -`variableSubclass:' instead of just `subclass:'. The choice of these -two kinds of class creation (and two more we'll show shortly) defines -the fundamental structure of Smalltalk objects created within a given -class. Let's consider the differences in the next sub-sections. - - subclass:. This kind of class creation specifies the simplest -Smalltalk object. The object consists only of the storage needed to -hold the instance variables. In C, this would be a simple structure -with zero or more scalar fields.(2). - - variableSubclass:. All the other types of class are a superset of a -`subclass:'. Storage is still allocated for any instance variables, -but the objects of the class must be created with a `new:' message. -The number passed as an argument to `new:' causes the new object, in -addition to the space for instance variables, to also have that many -slots of unnamed (indexed) storage allocated. The analog in C would be -to have a dynamically allocated structure with some scalar fields, -followed at its end by a array of pointers. - - variableByteSubclass:. This is a special case of -`variableSubclass:'; the storage age allocated as specified by new: is -an array of bytes. The analog in C would be a dynamically allocated -structure with scalar fields(3), followed by a array of `char'. - - variableWordSubclass:. Once again, this is a special case of -`variableSubclass:'; the storage age allocated as specified by new: is -an array of C signed longs, which are represented in Smalltalk by -Integer objects. The analog in C would be a dynamically allocated -structure with scalar fields, followed by an array of `long'. This -kind of subclass is only used in a few places in Smalltalk. - - Accessing These New Arrays. You already know how to access instance -variables--by name. But there doesn't seem to be a name for this new -storage. The way an object accesses it is to send itself array-type -messages like `at:', `at:put:', and so forth. - - The problem is when an object wants to add a new level of -interpretation to the at: and at:put: messages. Consider a -Dictionary--it is a `variableSubclass:' type of object, but its `at:' -message is in terms of a key, not an integer index of its storage. -Since it has redefined the `at:' message, how does it access its -fundamental storage? - - The answer is that Smalltalk has defined `basicAt:' and -`basicAt:put:', which will access the basic storage even when the `at:' -and `at:put:' messages have been defined to provide a different -abstraction. - - An Example. This can get pretty confusing in the abstract, so let's -do an example to show how it's pretty simple in practice. Smalltalk -arrays tend to start at 1; let's define an array type whose permissible -range is arbitrary. - - ArrayedCollection variableSubclass: 'RangedArray' - instanceVariableNames: 'base' - classVariableNames: '' - poolDictionaries: '' - category: nil ! - RangedArray comment: 'I am an Array whose base is arbitrary' ! - !RangedArray class methodsFor: 'creation'! - new - ^self error: 'Use new:base:' - ! - new: size - ^self new: size base: 1 - ! - new: size base: b - ^(super new: size) init: b - ! ! - !RangedArray methodsFor: 'init'! - init: b - base := (b - 1). "- 1 because basicAt: works with a 1 base" - ^self - ! ! - !RangedArray methodsFor: 'basic'! - rangeCheck: i - ((i <= base) | (i > (base + (self basicSize)))) ifTrue: [ - 'Bad index value: ' printOn: stderr. - i printOn: stderr. - (Character nl) printOn: stderr. - ^self error: 'illegal index' - ] - ! - at: i - self rangeCheck: i. - ^self basicAt: (i-base) - ! - at: i put: v - self rangeCheck: i. - ^self basicAt: (i-base) put: v - ! ! - - The code has two parts; an initialization, which simply records what -index you wish the array to start with, and the at: messages, which -adjust the requested index so that the underlying storage receives its -1-based index instead. We've included a range check; its utility will -demonstrate itself in a moment: - Smalltalk at: #a put: (RangedArray new: 10 base: 5) ! - a at: 5 put: 0 ! - a at: 4 put: 1 ! - - Since 4 is below our base of 5, a range check error occurs. But -this check can catch more than just our own misbehavior! - - a do: [:x| x printNl] ! - - Our do: message handling is broken! The stack backtrace pretty much -tells the story: - - RangedArray>>#rangeCheck: - RangedArray>>#at: - RangedArray>>#do: - - Our code received a do: message. We didn't define one, so we -inherited the existing do: handling. We see that an Integer loop was -constructed, that a code block was invoked, and that our own at: code -was invoked. When we range checked, we trapped an illegal index. Just -by coincidence, this version of our range checking code also dumps the -index. We see that do: has assumed that all arrays start at 1. - - The immediate fix is obvious; we implement our own do: - !RangedArray methodsFor: 'basic'! - do: aBlock - 1 to: (self basicSize) do: [:x| - aBlock value: (self basicAt: x) - ] - ! ! - - But the issues start to run deep. If our parent class believed that -it knew enough to assume a starting index of 1(4), why didn't it also -assume that it could call basicAt:? The answer is that of the two -choices, the designer of the parent class chose the one which was less -likely to cause trouble; in fact all standard Smalltalk collections do -have indices starting at 1, yet not all of them are implemented so that -calling basicAt: would work.(5) - - Object-oriented methodology says that one object should be entirely -opaque to another. But what sort of privacy should there be between a -higher class and its subclasses? How many assumption can a subclass -make about its superclass, and how many can the superclass make before -it begins infringing on the sovereignty of its subclasses? Alas, there -are rarely easy answers. - - Basic Allocation. In this chapter, we've seen the fundamental -mechanisms used to allocate and index storage. When the storage need -not be accessed with peak efficiency, you can use the existing array -classes. When every access counts, having the storage be an integral -part of your own object allows for the quickest access. When you move -into this area of object development, inheritance and polymorphism -become trickier; each level must coordinate its use of the underlying -array with other levels. - - ---------- Footnotes ---------- - - (1) For GNU Smalltalk, the size of a C `long', which is usually 32 -bits. - - (2) C requires one or more; zero is allowed in Smalltalk - - (3) This is not always true for other Smalltalk implementations, who -don't allow instance variables in variableByteSubclasses and -variableWordSubclasses. - - (4) Actually, in GNU Smalltalk `do:' is not the only message -assuming that. - - (5) Some of these classes actually redefine `do:' for performance -reasons, but they would work even if the parent class' implementation -of `do:' was kept. - - -File: gst.info, Node: Two flavors of equality, Next: Why is #new there?!?, Prev: Inside Arrays, Up: Behind the scenes - -Two flavors of equality ------------------------ - - As first seen in chapter two, Smalltalk keys its dictionary with -things like #word, whereas we generally use 'word'. The former, as it -turns out, is from class Symbol. The latter is from class String. -What's the real difference between a Symbol and a String? To answer -the question, we'll use an analogy from C. - - In C, if you have a function for comparing strings, you might try to -write it: - streq(char *p, char *q) - { - return (p == q); - } - - But clearly this is wrong! The reason is that you can have two -copies of a string, each with the same contents but each at its own -address. A correct string compare must walk its way through the -strings and compare each element. - - In Smalltalk, exactly the same issue exists, although the details of -manipulating storage addresses are hidden. If we have two Smalltalk -strings, both with the same contents, we don't necessarily know if -they're at the same storage address. In Smalltalk terms, we don't know -if they're the same object. - - The Smalltalk dictionary is searched frequently. To speed the -search, it would be nice to not have to compare the characters of each -element, but only compare the address itself. To do this, you need to -have a guarantee that all strings with the same contents are the same -object. The String class, created like: - y := 'Hello' ! - - does not satisfy this. Each time you execute this line, you may -well get a new object. But a very similar class, Symbol, will always -return the same object: - y := #Hello ! - - In general, you can use strings for almost all your tasks. If you -ever get into a performance-critical function which looks up strings, -you can switch to Symbol. It takes longer to create a Symbol, and the -memory for a Symbol is never freed (since the class has to keep tabs on -it indefinitely to guarantee it continues to return the same object). -You can use it, but use it with care. - - This tutorial has generally used the strcmp()-ish kind of checks for -equality. If you ever need to ask the question "is this the same -object?", you use the `==' operator instead of `=': - Smalltalk at: #x put: 0 ! - Smalltalk at: #y put: 0 ! - x := 'Hello' ! - y := 'Hello' ! - (x = y) printNl ! - (x == y) printNl ! - y := 'Hel', 'lo' ! - (x = y) printNl ! - (x == y) printNl ! - x := #Hello ! - y := #Hello ! - (x = y) printNl ! - (x == y) printNl ! - - Using C terms, `=' compares contents like `strcmp()'. `==' compares -storage addresses, like a pointer comparison. - - -File: gst.info, Node: Why is #new there?!?, Next: Performance, Prev: Two flavors of equality, Up: Behind the scenes - -The truth about metaclasses ---------------------------- - - Everybody, sooner or later, looks for the implementation of the -`#new' method in Object class. To their surprise, they don't find it; -if they're really smart, they search for implementors of #new in the -image and they find out it is implemented by `Behavior'... which turns -out to be a subclass of Object! The truth starts showing to their eyes -about that sentence that everybody says but few people understand: -"classes are objects". - - Huh? Classes are objects?!? Let me explain. - - Open up an image; then type the text following the `st>' prompt. - - st> Set superclass! - HashedCollection - - st> HashedCollection superclass! - Collection - - st> Collection superclass! - Object - - st> Object superclass! - nil - - Nothing new for now. Let's try something else: - - st> #(1 2 3) class! - Array - - st> '123' class! - String - - st> Set class! - Set class - - st> Set class class! - Metaclass - - You get it, that strange `Set class' thing is something called "a -meta-class"... let's go on: - - st> ^Set class superclass! - Collection class - - st> ^Collection class superclass! - Object class - - You see, there is a sort of `parallel' hierarchy between classes and -metaclasses. When you create a class, Smalltalk creates a metaclass; -and just like a class describes how methods for its instances work, a -metaclass describes how class methods for that same class work. - - `Set' is an instance of the metaclass, so when you invoke the `#new' -class method, you can also say you are invoking an instance method -implemented by `Set class'. Simply put, class methods are a lie: -they're simply instance methods that are understood by instances of -metaclasses. - - Now you would expect that `Object class superclass' answers `nil -class', that is `UndefinedObject'. Yet you saw that `#new' is not -implemented there... let's try it: - - st> ^Object class superclass! - Class - - Uh?!? Try to read it aloud: the `Object class' class inherits from -the `Class' class. `Class' is the abstract superclass of all -metaclasses, and provides the logic that allows you to create classes -in the image. But it is not the termination point: - - st> ^Class superclass! - ClassDescription - - st> ^ClassDescription superclass! - Behavior - - st> ^Behavior superclass! - Object - - Class is a subclass of other classes. `ClassDescription' is -abstract; `Behavior' is concrete but lacks the methods and state that -allow classes to have named instance variables, class comments and -more. Its instances are called _light-weight_ classes because they -don't have separate metaclasses, instead they all share `Behavior' -itself as their metaclass. - - Evaluating `Behavior superclass' we have worked our way up to class -Object again: Object is the superclass of all instances as well as all -metaclasses. This complicated system is extremely powerful, and allows -you to do very interesting things that you probably did without -thinking about it--for example, using methods such as `#error:' or -`#shouldNotImplement' in class methods. - - Now, one final question and one final step: what are metaclasses -instances of? The question makes sense: if everything has a class, -should not metaclasses have one? - - Evaluate the following: - - st> | meta | - st> meta := Set class - st> 0 to: 4 do: [ :i | - st> i timesRepeat: [ Transcript space ]. - st> meta printNl. - st> meta := meta class. - st> ]! - Set class - Metaclass - Metaclass class - Metaclass - Metaclass class - 0 - - If you send `#class' repeatedly, it seems that you end up in a loop -made of class `Metaclass'(1) and its own metaclass, `Metaclass class'. -It looks like class Metaclass is an instance of an instance of itself. - - To understand the role of `Metaclass', it can be useful to know that -the class creation is implemented there. Think about it. - - * `Random class' implements creation and initialization of its - instances' random number seed; analogously, `Metaclass class' - implements creation and initialization of its instances, which are - metaclasses. - - * And `Metaclass' implements creation and initialization of its - instances, which are classes (subclasses of `Class'). - - The circle is closed. In the end, this mechanism implements a -clean, elegant and (with some contemplation) understandable facility -for self-definition of classes. In other words, it is what allows -classes to talk about themselves, posing the foundation for the -creation of browsers. - - ---------- Footnotes ---------- - - (1) Which turns out to be another subclass of `ClassDescription'. - - -File: gst.info, Node: Performance, Prev: Why is #new there?!?, Up: Behind the scenes - -The truth of Smalltalk performance ----------------------------------- - - Everybody says Smalltalk is slow, yet this is not completely true for -at least three reasons. First, most of the time in graphical -applications is spent waiting for the user to "do something", and most -of the time in scripting applications (which GNU Smalltalk is -particularly well versed in) is spent in disk I/O; implementing a -travelling salesman problem in Smalltalk would indeed be slow, but for -most real applications you can indeed exchange performance for -Smalltalk's power and development speed. - - Second, Smalltalk's automatic memory management is faster than C's -manual one. Most C programs are sped up if you relink them with one of -the garbage collecting systems available for C or C++. - - Third, even though very few Smalltalk virtual machines are as -optimized as, say, the Self environment (which reaches half the speed -of optimized C!), they do perform some optimizations on Smalltalk code -which make them run many times faster than a naive bytecode -interpreter. Peter Deutsch, who among other things invented the idea -of a just-in-time compiler like those you are used to seeing for -Java(1), once observed that implementing a language like Smalltalk -efficiently requires the implementor to cheat... but that's okay as -long as you don't get caught. That is, as long as you don't break the -language semantics. Let's look at some of these optimizations. - - For certain frequently used 'special selectors', the compiler emits a -send-special-selector bytecode instead of a send-message bytecode. -Special selectors have one of three behaviors: - - * A few selectors are assigned to special bytecode solely in order to - save space. This is the case for `#do:' for example. - - * Three selectors (`#at:', `#at:put:', `#size') are assigned to - special bytecodes because they are subject to a special caching - optimization. These selectors often result in calling a virtual - machine primitive, so GNU Smalltalk remembers which primitve was - last called as the result of sending them. If we send `#at:' 100 - times for the same class, the last 99 sends are directly mapped to - the primitive, skipping the method lookup phase. - - * For some pairs of receiver classes and special selectors, the - interpreter never looks up the method in the class; instead it - swiftly executes the same code which is tied to a particular - primitive. Of course a special selector whose receiver or - argument is not of the right class to make a no-lookup pair is - looked up normally. - - No-lookup methods do contain a primitive number specification, -`', but it is used only when the method is reached -through a `#perform:...' message send. Since the method is not -normally looked up, deleting the primitive name specification cannot in -general prevent this primitive from running. No-lookup pairs are -listed below: - -`Integer'/`Integer' for `+ - * = ~= > < >= <=' -`Float'/`Integer' -`Float'/`Float' -`Integer'/`Integer' for `// \\ bitOr: bitShift: bitAnd:' -Any pair of objects for `== isNil notNil class' -BlockClosure for `value value: blockCopy:'(2) - - Other messages are open coded by the compiler. That is, there are -no message sends for these messages--if the compiler sees blocks -without temporaries and with the correct number of arguments at the -right places, the compiler unwinds them using jump bytecodes, producing -very efficient code. These are: - - to:by:do: if the second argument is an integer literal - to:do: - timesRepeat: - and:, or: - ifTrue:ifFalse:, ifFalse:ifTrue:, ifTrue:, ifFalse: - whileTrue:, whileFalse: - - Other minor optimizations are done. Some are done by a peephole -optimizer which is ran on the compiled bytecodes. Or, for example, -when GNU Smalltalk pushes a boolean value on the stack, it -automatically checks whether the following bytecode is a jump (which is -a common pattern resulting from most of the open-coded messages above) -and combines the execution of the two bytecodes. All these snippets -can be optimized this way: - - 1 to: 5 do: [ :i | ... ] - a < b and: [ ... ] - myObject isNil ifTrue: [ ... ] - - That's all. If you want to know more, look at the virtual machine's -source code in `libgst/interp-bc.inl' and at the compiler in -`libgst/comp.c'. - - ---------- Footnotes ---------- - - (1) And like the one that GNU Smalltalk includes as an experimental -feature. - - (2) You won't ever send this message in Smalltalk programs. The -compiler uses it when compiling blocks. - diff -rNU3 smalltalk-2.1.6/doc/gst.info-7 smalltalk-2.1.7/doc/gst.info-7 --- smalltalk-2.1.6/doc/gst.info-7 2003-12-13 10:44:44.000000000 +0100 +++ smalltalk-2.1.7/doc/gst.info-7 1970-01-01 01:00:00.000000000 +0100 @@ -1,313 +0,0 @@ -This is gst.info, produced by makeinfo version 4.5 from -/home/utente/devel-gst-stable/doc/gst-fixed.texi. - -INFO-DIR-SECTION GNU Smalltalk -START-INFO-DIR-ENTRY -* GNU Smalltalk: (gst). The GNU Smalltalk environment. -END-INFO-DIR-ENTRY - -This file documents GNU Smalltalk Version 2.1.6. It was last updated -on 16 September 2003. - - Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, -2002 Free Software Foundation, Inc. - - This document is released under the terms of the GNU Free -Documentation License as published by the Free Software Foundation; -either version 1.1, or (at your option) any later version. - - You should have received a copy of the GNU Free Documentation -License along with GNU Smalltalk; see the file `COPYING.DOC'. If not, -write to the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. - - There are no Cover Texts and no Invariant Sections; this text, along -with its equivalent in the printed manual, constitutes the Title Page. - -File: gst.info, Node: And now, Next: The syntax, Prev: Behind the scenes, Up: Tutorial - -Some final words -================ - - The question is always how far to go in one document. At this -point, you know how to create classes. You know how to use -inheritance, polymorphism, and the basic storage management mechanisms -of Smalltalk. You've also seen a sampling of Smalltalk's powerful -classes. The rest of this chapter simply points out areas for further -study; perhaps a newer version of this document might cover these in -further chapters. - -Viewing the Smalltalk Source Code - Lots of experience can be gained by looking at the source code for - system methods; all of them are visible: data structure classes, - the innards of the magic that makes classes be themselves objects - and have a class, a compiler written in Smalltalk itself, the - classes that implement the Smalltalk GUI and those that wrap - sockets and TCP/IP. - -Other Ways to Collect Objects - We've seen Array, ByteArray, Dictionary, Set, and the various - streams. You'll want to look at the Bag, OrderedCollection, and - SortedCollection classes. For special purposes, you'll want to - examine the CObject and CType hierarchies. - -Flow of Control - GNU Smalltalk has support for non-preemptive multiple threads of - execution. The state is embodied in a Process class object; - you'll also want to look at the Semaphore and ProcessorScheduler - class. - -Smalltalk Virtual Machine - GNU Smalltalk is implemented as a virtual instruction set. By - invoking GNU Smalltalk with the `-d' option, you can view the byte - opcodes which are generated as files on the command line are - loaded. Similarly, running GNU Smalltalk with `-e' will trace the - execution of instructions in your methods. - - You can look at the GNU Smalltalk source to gain more information - on the instruction set. With a few modifications, it is based on - the set described in the canonical book from two of the original - designers of Smalltalk: Smalltalk-80: The Language and its - Implementation, by Adele Goldberg and David Robson. - -Where to get Help - The Usenet comp.lang.smalltalk newsgroup is read by many people - with a great deal of Smalltalk experience. There are several - commercial Smalltalk implementations; you can buy support for - these, though it isn't cheap. For the GNU Smalltalk system in - particular, you can try the mailing list at: - help-smalltalk@gnu.org - - No guarantees, but the subscribers will surely do their best! - - -File: gst.info, Node: The syntax, Prev: And now, Up: Tutorial - -A Simple Overview of Smalltalk Syntax -===================================== - - Smalltalk's power comes from its treatment of objects. In this -document, we've mostly avoided the issue of syntax by using strictly -parenthesized expressions as needed. When this leads to code which is -hard to read due to the density of parentheses, a knowledge of -Smalltalk's syntax can let you simplify expressions. In general, if it -was hard for you to tell how an expression would parse, it will be hard -for the next person, too. - - The following presentation presents the grammar a couple of related -elements at a time. We use an EBNF style of grammar. The form: - [ ... ] - -means that "..." can occur zero or one times. - - [ ... ]* - -means zero or more; - - [ ... ]+ - -means one or more. - - ... | ... [ | ... ]* - -means that one of the variants must be chosen. Characters in double -quotes refer to the literal characters. Most elements may be separated -by white space; where this is not legal, the elements are presented -without white space between them. - -methods: "!" id ["class"] "methodsFor:" string "!" [method "!"] "!" - Methods are introduced by first naming a class (the id element), - specifying "class" if you're adding class methods instead of - instance methods, and sending a string argument to the methodsFor: - message. Each method is terminated with an "!"; two bangs in a - row (with a space in the middle) signify the end of the new - methods. - -method: message [prim] [temps] exprs -message: id | binsel id | [keysel id]+ -prim: "<" "primitive:" id ">" -temps: "|" [id]* "|" - A method definition starts out with a kind of template. The - message to be handled is specified with the message names spelled - out and identifiers in the place of arguments. A special kind of - definition is the primitive; it has not been covered in this - tutorial; it provides an interface to the underlying Smalltalk - virtual machine. temps is the declaration of local variables. - Finally, exprs (covered soon) is the actual code for implementing - the method. - -unit: id | literal | block | arrayconstructor | "(" expr ")" -unaryexpr: unit [ id ]+ -primary: unit | unaryexpr - These are the "building blocks" of Smalltalk expressions. A unit - represents a single Smalltalk value, with the highest syntactic - precedence. A unaryexpr is simply a unit which receives a number - of unary messages. A unaryexpr has the next highest precedence. - A primary is simply a convenient left-hand-side name for one of - the above. - -exprs: [expr "."]* [["^"] expr] -expr: [id ":="]* expr2 -expr2: primary | msgexpr [ ";" cascade ]* - A sequence of expressions is separated by dots and can end with a - returned value (`^'). There can be leading assignments; unlike C, - assignments apply only to simple variable names. An expression is - either a primary (with highest precedence) or a more complex - message. cascade does not apply to primary constructions, as they - are too simple to require the construct. Since all primary - construct are unary, you can just add more unary messages: - 1234 printNl printNl printNl ! - -msgexpr: unaryexpr | binexpr | keyexpr - A complex message is either a unary message (which we have already - covered), a binary message (`+', `-', and so forth), or a keyword - message (`at:', `new:', ...) Unary has the highest precedence, - followed by binary, and keyword messages have the lowest - precedence. Examine the two versions of the following messages. - The second have had parentheses added to show the default - precedence. - myvar at: 2 + 3 put: 4 - mybool ifTrue: [ ^ 2 / 4 roundup ] - - (myvar at: (2 + 3) put: (4)) - (mybool ifTrue: ([ ^ (2 / (4 roundup)) ])) - -cascade: id | binmsg | keymsg - A cascade is used to direct further messages to the same object - which was last used. The three types of messages ( id is how you - send a unary message) can thus be sent. - -binexpr: primary binmsg [ binmsg ]* -binmsg: binsel primary -binsel: selchar[selchar] - A binary message is sent to an object, which primary has - identified. Each binary message is a binary selector, constructed - from one or two characters, and an argument which is also provided - by a primary. - 1 + 2 - 3 / 4 - - which parses as: - (((1 + 2) - 3) / 4) - -keyexpr: keyexpr2 keymsg -keyexpr2: binexpr | primary -keymsg: [keysel keyw2]+ -keysel: id":" - Keyword expressions are much like binary expressions, except that - the selectors are made up of identifiers with a colon appended. - Where the arguments to a binary function can only be from primary, - the arguments to a keyword can be binary expressions or primary - ones. This is because keywords have the lowest precedence. - -block: "[" [[":" id]* "|" ] [temps] exprs "]" - A code block is square brackets around a collection of Smalltalk - expressions. The leading ": id" part is for block arguments. - Note that it is possible for a block to have temporary variables - of its own. - -arrayconstructor: "{" exprs "}" - Not covered in this tutorial, this syntax allows to create arrays - whose values are not literals, but are instead evaluated at - run-time. Compare `#(a b)', which results in an Array of two - symbols `#a' and `#b', to `{a. b+c}' which results in an Array - whose two elements are the contents of variable `a' and the result - of summing `c' to `b'. - -literal: number | string | charconst | symconst | arrayconst | binding -arrayconst: "#" array | "#" bytearray -bytearray: "[" [number]* "]" -array: "(" [literal | array | bytearray | arraysym | ]* ")" -number: [[dig]+ "r"] ["-"] [alphanum]+ ["." [alphanum]+] [exp ["-"][dig]+]. -string: "'"[char]*"'" -charconst: "$"char -symconst: "#"symbol | "#"string -arraysym: [id | ":"]* -exp: "d" | "e" | "q" | "s" - We have already shown the use of many of these constants. - Although not covered in this tutorial, numbers can have a base - specified at their front, and a trailing scientific notation. We - have seen examples of character, string, and symbol constants. - Array constants are simple enough; they would look like: - Smalltalk at: #a put: #(1 2 'Hi' $x $Hello 4 26r5H) ! - - There are also ByteArray constants, whose elements are constrained - to be integers between 0 and 255; they would look like: - Smalltalk at: #a put: #[1 2 34 16r8F 26r3H 253] ! - - Finally, there are three types of floating-point constants with - varying precision (the one with the `e' being the less precise, - followed by `d' and `q'), and scaled-decimal constants for a - special class which does exact computations but truncates - comparisons to a given number of decimals. For example, `1.23s4' - means "the value `1.23', with four significant decimal digits". - -binding: "#{" [id "."]* id "}" - This syntax has not been used in the tutorial, and results in an - Association literal (known as a "variable binding") tied to the - class that is named between braces. For example, `#{Class} value' - is the same as `Class'. The dot syntax is required for supporting - namespaces: `#{Smalltalk.Class}' is the same as `Smalltalk - associationAt: #Class', but is resolved at compile-time rather - than at run-time. - -symbol: id | binsel | keysel[keysel]* - Symbols are mostly used to represent the names of methods. Thus, - they can hold simple identifiers, binary selectors, and keyword - selectors: - #hello - #+ - #at:put: - -id: letter[letter|dig]* -selchar: "+" | "-" | "*" | "/" | "~" | "|" | "," | -"<" | ">" | "=" | "&" | "'' | "?" | "\" | "%" -alphanum: "0".."9" | "A".."Z" -dig: "0".."9" - These are the categories of characters and how they are combined - at the most basic level. selchar simply lists the characters - which can be combined to name a binary message (binary messages - including a question mark are almost never used). - - - -File: gst.info, Node: Future, Prev: Tutorial, Up: Top - -Future directions for GNU Smalltalk -*********************************** - - Presented below is the set of tasks that I feel need to be performed -to make GNU Smalltalk a more fully functional, viable system. They are -presented in no particular order; other tasks are listed in the `TODO' -file, in the main distribution directory. - - I would _very much_ welcome any volunteers who would like to help -with the implementation of one or more of these tasks. Please write at -help-smalltalk@gnu.org if you are interested in adding your efforts to -the GNU Smalltalk project. - - Tasks: - * Port software to GNU Smalltalk. The class library has proven to - be quite robust; it should be easy to port packages (especially - free ones!) to GNU Smalltalk if the source dialect is reasonably - ANSI-compliant. One area which might give problems is namespaces, - which is not standardized, and possibly exception handling for - which most dialects have been cooking their own syntax for years. - - * Port to other computers/operating systems. The code thus far has - shown itself to be relatively portable to various machines and Unix - derivatives. The architecture must support 32 or 64 bit pointers - the same size as a long integers; in addition, the operating - system had better be advanced enough to support asynchronous file - polling and explicit allocation of virtual memory address ranges. - - * Modify the Delay class primitive so that it does not fork a new - process each time it is called when `setitimer' or a similar - function call is not available; this involves using a pipe. I - want to do it somewhen, but if you do it before me, please tell me. - - * Port Blox to GTK+. - - * More ideas are sketched in the `TODO' file, in the main - distribution directory. - - diff -rNU3 smalltalk-2.1.6/doc/stamp-1 smalltalk-2.1.7/doc/stamp-1 --- smalltalk-2.1.6/doc/stamp-1 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/stamp-1 2003-12-17 14:51:16.000000000 +0100 @@ -1,4 +1,4 @@ @set UPDATED 13 December 2003 @set UPDATED-MONTH December 2003 -@set EDITION 2.1.6 -@set VERSION 2.1.6 +@set EDITION 2.1.7 +@set VERSION 2.1.7 diff -rNU3 smalltalk-2.1.6/doc/stamp-2 smalltalk-2.1.7/doc/stamp-2 --- smalltalk-2.1.6/doc/stamp-2 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/stamp-2 2003-12-17 14:51:16.000000000 +0100 @@ -1,4 +1,4 @@ @set UPDATED 13 December 2003 @set UPDATED-MONTH December 2003 -@set EDITION 2.1.6 -@set VERSION 2.1.6 +@set EDITION 2.1.7 +@set VERSION 2.1.7 diff -rNU3 smalltalk-2.1.6/doc/stamp-vti smalltalk-2.1.7/doc/stamp-vti --- smalltalk-2.1.6/doc/stamp-vti 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/stamp-vti 2003-12-17 14:51:16.000000000 +0100 @@ -1,4 +1,4 @@ @set UPDATED 16 September 2003 @set UPDATED-MONTH September 2003 -@set EDITION 2.1.6 -@set VERSION 2.1.6 +@set EDITION 2.1.7 +@set VERSION 2.1.7 diff -rNU3 smalltalk-2.1.6/doc/vers-base.texi smalltalk-2.1.7/doc/vers-base.texi --- smalltalk-2.1.6/doc/vers-base.texi 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/vers-base.texi 2003-12-17 14:51:16.000000000 +0100 @@ -1,4 +1,4 @@ @set UPDATED 13 December 2003 @set UPDATED-MONTH December 2003 -@set EDITION 2.1.6 -@set VERSION 2.1.6 +@set EDITION 2.1.7 +@set VERSION 2.1.7 diff -rNU3 smalltalk-2.1.6/doc/vers-gst.texi smalltalk-2.1.7/doc/vers-gst.texi --- smalltalk-2.1.6/doc/vers-gst.texi 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/vers-gst.texi 2003-12-17 14:51:16.000000000 +0100 @@ -1,4 +1,4 @@ @set UPDATED 16 September 2003 @set UPDATED-MONTH September 2003 -@set EDITION 2.1.6 -@set VERSION 2.1.6 +@set EDITION 2.1.7 +@set VERSION 2.1.7 diff -rNU3 smalltalk-2.1.6/doc/vers-libs.texi smalltalk-2.1.7/doc/vers-libs.texi --- smalltalk-2.1.6/doc/vers-libs.texi 2003-12-13 10:42:39.000000000 +0100 +++ smalltalk-2.1.7/doc/vers-libs.texi 2003-12-17 14:51:16.000000000 +0100 @@ -1,4 +1,4 @@ @set UPDATED 13 December 2003 @set UPDATED-MONTH December 2003 -@set EDITION 2.1.6 -@set VERSION 2.1.6 +@set EDITION 2.1.7 +@set VERSION 2.1.7 diff -rNU3 smalltalk-2.1.6/gnu-smalltalk.spec smalltalk-2.1.7/gnu-smalltalk.spec --- smalltalk-2.1.6/gnu-smalltalk.spec 2003-12-17 10:35:58.000000000 +0100 +++ smalltalk-2.1.7/gnu-smalltalk.spec 2003-12-17 15:22:02.000000000 +0100 @@ -2,7 +2,7 @@ Summary: GNU Smalltalk Name: gst -Version: 2.1.6 +Version: 2.1.7 Release: 1 Source: ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-%{version}.tar.gz Copyright: GPL diff -rNU3 smalltalk-2.1.6/gtk/gst-gtk.c smalltalk-2.1.7/gtk/gst-gtk.c --- smalltalk-2.1.6/gtk/gst-gtk.c 2003-12-17 10:21:40.000000000 +0100 +++ smalltalk-2.1.7/gtk/gst-gtk.c 2003-12-17 14:47:20.000000000 +0100 @@ -486,7 +486,7 @@ } args[i] = oop; } - args[n_param_values + 1] = stc->data; + args[n_param_values] = stc->data; resultOOP = _blox_vm_proxy->nvmsgSend(stc->receiver, stc->selector, args, 1 + n_param_values); diff -rNU3 smalltalk-2.1.6/lightning/Makefile.in smalltalk-2.1.7/lightning/Makefile.in --- smalltalk-2.1.6/lightning/Makefile.in 2003-12-13 11:11:23.000000000 +0100 +++ smalltalk-2.1.7/lightning/Makefile.in 2003-12-17 14:49:14.000000000 +0100 @@ -41,12 +41,32 @@ $(nobase_dist_lightning_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/config/align.m4 \ + $(top_srcdir)/config/bold.m4 $(top_srcdir)/config/codeset.m4 \ + $(top_srcdir)/config/ext_goto.m4 $(top_srcdir)/config/gcc.m4 \ + $(top_srcdir)/config/glib-2.0.m4 $(top_srcdir)/config/gmp.m4 \ + $(top_srcdir)/config/gtk-2.0.m4 $(top_srcdir)/config/iconv.m4 \ + $(top_srcdir)/config/inet.m4 $(top_srcdir)/config/lib-ld.m4 \ + $(top_srcdir)/config/lib-link.m4 \ + $(top_srcdir)/config/lib-prefix.m4 \ + $(top_srcdir)/config/libc-so-name.m4 \ + $(top_srcdir)/config/libtool-tags.m4 \ + $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/lightning.m4 \ + $(top_srcdir)/config/localtime.m4 $(top_srcdir)/config/ltdl.m4 \ + $(top_srcdir)/config/modules.m4 $(top_srcdir)/config/pkg.m4 \ + $(top_srcdir)/config/readline.m4 \ + $(top_srcdir)/config/restrict.m4 \ + $(top_srcdir)/config/snprintfv.m4 \ + $(top_srcdir)/config/strtoul.m4 \ + $(top_srcdir)/config/symbolset.m4 \ + $(top_srcdir)/config/tcltk.m4 $(top_srcdir)/config/version.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/lightning.h -CONFIG_CLEAN_FILES = asm.h fp.h core.h funcs.h +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = asm.h core.h fp.h funcs.h SOURCES = DIST_SOURCES = am__installdirs = $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(lightningdir) $(DESTDIR)$(lightningdir) @@ -60,42 +80,94 @@ CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ATK_CFLAGS = @ATK_CFLAGS@ +ATK_LIBS = @ATK_LIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ -BACKENDS = @BACKENDS@ +BLOX_IMPLEMENTATION = @BLOX_IMPLEMENTATION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ +CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DISASS_FALSE = @DISASS_FALSE@ -DISASS_TRUE = @DISASS_TRUE@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ EXEEXT = @EXEEXT@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_DISABLED = @GTK_DISABLED@ +GTK_LIBS = @GTK_LIBS@ +HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ +HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ +HAVE_INSTALLED_LIGHTNING_FALSE = @HAVE_INSTALLED_LIGHTNING_FALSE@ +HAVE_INSTALLED_LIGHTNING_TRUE = @HAVE_INSTALLED_LIGHTNING_TRUE@ +HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ +HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ +I18N_DISABLED = @I18N_DISABLED@ +ICON = @ICON@ +INCLTDL = @INCLTDL@ +INCSNPRINTFV = @INCSNPRINTFV@ +INCTCLTK = @INCTCLTK@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_INFO = @INSTALL_INFO@ +INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ +INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ -LIBDISASS = @LIBDISASS@ +LDPATH = @LDPATH@ +LEX = @LEX@ +LIBADD_DL = @LIBADD_DL@ +LIBC_SO_DIR = @LIBC_SO_DIR@ +LIBC_SO_NAME = @LIBC_SO_NAME@ +LIBGMP = @LIBGMP@ +LIBICONV = @LIBICONV@ +LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ +LIBREADLINE = @LIBREADLINE@ LIBS = @LIBS@ +LIBSNPRINTFV = @LIBSNPRINTFV@ +LIBTCLTK = @LIBTCLTK@ +LIBTOOL = @LIBTOOL@ LIGHTNING_MAIN_FALSE = @LIGHTNING_MAIN_FALSE@ LIGHTNING_MAIN_TRUE = @LIGHTNING_MAIN_TRUE@ LN_S = @LN_S@ +LTALLOCA = @LTALLOCA@ +LTLIBICONV = @LTLIBICONV@ LTLIBOBJS = @LTLIBOBJS@ +MAINTAINER = @MAINTAINER@ MAKEINFO = @MAKEINFO@ +MODULES = @MODULES@ +MODULES_EXAMPLE = @MODULES_EXAMPLE@ +MODULES_GTK = @MODULES_GTK@ +MODULES_I18N = @MODULES_I18N@ +MODULES_TCP = @MODULES_TCP@ +MODULES_TK = @MODULES_TK@ +OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -103,15 +175,28 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ +PANGO_CFLAGS = @PANGO_CFLAGS@ +PANGO_LIBS = @PANGO_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ RANLIB = @RANLIB@ -REGRESSION_TESTING_FALSE = @REGRESSION_TESTING_FALSE@ -REGRESSION_TESTING_TRUE = @REGRESSION_TESTING_TRUE@ +RM = @RM@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +TCLSH = @TCLSH@ +USE_JIT_TRANSLATION_FALSE = @USE_JIT_TRANSLATION_FALSE@ +USE_JIT_TRANSLATION_TRUE = @USE_JIT_TRANSLATION_TRUE@ VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +WITH_EMACS_FALSE = @WITH_EMACS_FALSE@ +WITH_EMACS_TRUE = @WITH_EMACS_TRUE@ +YACC = @YACC@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_AS = @ac_ct_AS@ ac_ct_CC = @ac_ct_CC@ +ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ +ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ @@ -137,6 +222,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +lispdir = @lispdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ @@ -145,12 +231,9 @@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +subdirs = @subdirs@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ DISTCLEANFILES = asm.h core.h funcs.h fp.h LIGHTNING_FILES = funcs-common.h core-common.h fp-common.h \ asm-common.h \ @@ -195,6 +278,15 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool uninstall-info-am: install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) @@ -354,11 +446,12 @@ @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-generic mostlyclean-am +clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags dvi: dvi-am @@ -388,7 +481,7 @@ mostlyclean: mostlyclean-am -mostlyclean-am: mostlyclean-generic +mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am @@ -403,16 +496,17 @@ uninstall-nodist_lightningHEADERS .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - ctags distclean distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dist_pkgdataDATA \ - install-exec install-exec-am install-info install-info-am \ - install-man install-nobase_dist_lightningHEADERS \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dist_pkgdataDATA install-exec \ + install-exec-am install-info install-info-am install-man \ + install-nobase_dist_lightningHEADERS \ install-nodist_lightningHEADERS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-dist_pkgdataDATA uninstall-info-am \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-dist_pkgdataDATA uninstall-info-am \ uninstall-nobase_dist_lightningHEADERS \ uninstall-nodist_lightningHEADERS diff -rNU3 smalltalk-2.1.6/packages.xml smalltalk-2.1.7/packages.xml --- smalltalk-2.1.6/packages.xml 2003-12-17 10:41:58.000000000 +0100 +++ smalltalk-2.1.7/packages.xml 2003-12-17 15:25:05.000000000 +0100 @@ -1,4 +1,4 @@ - +