OSDN Git Service

Initial revision
authorkseitz <kseitz>
Tue, 22 Jul 2008 20:41:46 +0000 (20:41 +0000)
committerkseitz <kseitz>
Tue, 22 Jul 2008 20:41:46 +0000 (20:41 +0000)
itcl/itk/CHANGES [new file with mode: 0644]
itcl/itk/ChangeLog [new file with mode: 0644]
itcl/itk/INCOMPATIBLE [new file with mode: 0644]
itcl/itk/README [new file with mode: 0644]
itcl/itk/TODO [new file with mode: 0644]

diff --git a/itcl/itk/CHANGES b/itcl/itk/CHANGES
new file mode 100644 (file)
index 0000000..b0cbdaf
--- /dev/null
@@ -0,0 +1,2041 @@
+
+ [incr Tcl] - CHANGE LOG
+==========================================================================
+ ----------------------- CHANGES FROM itcl-1.5 --------------------------
+==========================================================================
+
+ Release itcl-2.0 provides a new syntax for defining classes.  The
+ new syntax is accessed using the new "itcl::class" command.  For the
+ time being, the old syntax will be supported via the old "itcl_class"
+ command, but support for this will be phased out over time.
+
+ Because both syntaxes are supported, the new version is "backward
+ compatible" with the previous itcl-1.5 release.  However, there are
+ some semantic changes that may break existing scripts.  These are
+ listed in detail in the section "INCOMPATIBLE CHANGES".
+
+
+ CATALOG OF NEW COMMANDS
+--------------------------------------------------------------------------
+ Following is a brief catalog of new commands available in this release.
+
+ == Tcl with Namespaces =================================================
+
+    delete namespace name ?name...?
+
+      Deletes one or more namespaces, destroying all commands, variables,
+      and child namespaces within it.
+
+
+    ensemble name {
+        option optName arglist body
+        option optName arglist body
+        ...
+        ensemble optName {
+            option subOptName arglist body
+            option subOptName arglist body
+            ...
+        }
+    }
+
+      Adds options to an ensemble called "name".  If the ensemble does
+      not already exist, it is created automatically.  An "ensemble" is
+      a toplevel command that groups a collection of sub-commands.  For
+      example, the usual Tcl "info" command is an ensemble with options
+      like "globals", "level", "tclversion", etc.
+
+      Ensembles are good for two reasons.  First, new options can be
+      integrated in without modifying any source code or "switch"
+      statements.  For example, [incr Tcl] adds the "info classes"
+      and "info objects" commands simply by adding options to the
+      "info" ensemble.  Second, error messages are generated automatically
+      by the ensemble mechanism.  Try invoking "info" with no options
+      and see the result.
+
+      Each option declaration is just like a Tcl proc declaration,
+      with an option name, arglist and body.  Ensembles can also
+      contain sub-ensembles with more options.
+
+
+    import add name ?name...? ?-where pos...?
+    import all ?name?
+    import list ?importList?
+    import remove name ?name...?
+
+      Used to manipulate the "import" list for the current namespace.
+      When one namespace imports another, it gains access to all of
+      its public commands/variables as if they were part of the
+      same namespace.  In other words, one namespace can be integrated
+      seamlessly into another by adding it to the import list of the
+      other namespace.  By default, each namespace imports its parent,
+      so most namespaces import the global scope in some fashion.
+
+      The form "import list" is used to query or set the import list
+      for the current namespace.  The form "import all" returns the
+      namespace search path that is consulted when commands/variables
+      are accessed.
+
+
+    info context
+
+      Returns the current namespace context.  The global namespace
+      context is reported here as "", so it is easy to build
+      namespace paths like this:
+
+          set path "[info context]::name"
+
+
+    info namespace all ?pattern?
+
+      Returns a list of namespaces found in the current namespace
+      context, whose names match an optional string pattern.  This
+      includes children of the current namespace, and children of
+      all imported namespaces.
+
+
+    info namespace children ?name?
+
+      Returns a list of child namespaces for namespace "name",
+      or for the current namespace if "name" is not specified.
+
+
+    info namespace parent ?name?
+
+      Returns the parent namespace for namespace "name", or
+      for the current namespace if "name" is not specified.
+
+
+    info namespace qualifiers string
+
+      Parses a string of the form "namesp::namesp::name", and returns
+      the leading "namesp::namesp" scope qualifiers.
+
+
+    info namespace tail string
+
+      Parses a string of the form "namesp::namesp::name", and returns
+      the trailing "name" element.
+
+
+    info protection ?-command? ?-variable? name
+
+      Returns the protection level for an element.  By default, "name"
+      is treated as a command name, but the "-command" or "-variable"
+      flags can be used to request a specific treatment.
+
+
+    info which ?-command? ?-variable? ?-namespace? name
+
+      Reports the full namespace path (e.g., "::namesp::namesp::name")
+      for an element.  By default, "name" is treated as a command name,
+      but the "-command", "-variable" and "-namespace" flags can be
+      used to request a specific treatment.
+
+
+    namespace name ?-local? ?-enforced val? ?--? ?commands?
+
+      This is the usual mechanism for creating a namespace and defining
+      elements within it.
+
+      If namespace "name" does not exist, it is created automatically.
+      The namespace name may include a full namespace path (e.g.,
+      "namesp::namesp::namesp").  During the search for this namespace,
+      all imported namespaces are consulted.  If the "-local" flag is
+      specified, then the search is restricted to the local namespace;
+      this prevents against accidentally importing a namespace if the
+      intent is to create a child namespace.
+
+      If the "-enforced" flag is specified, then "val" is treated as a
+      boolean value; if true, then command/variable enforcement is
+      turned on for this namespace.  Each time a new command is
+      referenced within the namespace, Tcl automatically calls a
+      procedure:
+
+          enforce_cmd <name>
+
+      with the <name> of the command that is about to be executed.  The
+      "enforce_cmd" proc can return an error, and access to that command
+      will be denied.  It can return another command name, or a more
+      specific namespace path, and that command will be used instead.
+      Or it can return "", and command lookup will continue via the
+      normal namespace rules (i.e., in local scope, imported namespaces,
+      etc.).
+
+      Each time a new variable is referenced within an enforced
+      namespace, Tcl automatically calls a procedure:
+
+          enforce_var <name>
+
+      with the <name> of a global variable that is being referenced.
+      The "enforce_var" proc can return an error, and access to that
+      variable will be denied.  It can return another variable name,
+      or a more specific namespace path, and that variable will be
+      used instead.  Or it can return "", and variable lookup will
+      continue via the normal namespace rules (i.e., in local scope,
+      imported namespaces, etc.).
+
+      Note that command/variable enforcement done at the Tcl language
+      level can be slow.  There is also a C language interface for
+      the same functionality, which offers much better performance.
+
+      The namespace is first found and updated with whatever flags were
+      specified.  After that, if a "commands" string was specified, it
+      is executed in the context of the namespace.
+
+
+    public command ?arg arg...?
+    protected command ?arg arg...?
+    private command ?arg arg...?
+
+      These commands attach a particular protection level to whatever
+      commands or variables are created while executing the specified
+      command.  They are used in conjunction with commands like
+      "proc" and "variable" to create public/protected/private elements.
+
+
+    scope string
+    code ?-namespace name? command ?arg arg ...?
+    @scope namespace value
+
+      The "scope" command takes a string and encodes it into an "@scope"
+      declaration.  The "code" command performs a similar function,
+      but accepts multiple arguments and is usually used to wrap up
+      code fragments.  The "@scope" declaration keeps a value (like a
+      variable name or code fragment) together with its context
+      namespace.  It can be executed like an ordinary command:
+
+        set cmd {@scope :: puts}
+        $cmd "hello world!"
+
+      or used as an ordinary variable name:
+
+        set var {@scope :: auto_path}
+        lappend $var /usr/local/mylib
+
+      The difference, however, is that an "@scope" value bypasses the
+      usual access protections and guarantees that values have the
+      proper scope.
+
+      Ordinary variable names refer to variables in the global
+      namespace.  Ordinary code fragments are usually interpreted
+      by extensions like Tk in the global namespace.  The "scope"
+      and "code" commands are used to wrap up variable names and
+      code fragments to preserve the namespace context.  For example:
+
+        namespace foo {
+            private variable state 0
+            private proc show_state {mesg} {
+                global state
+                puts "$mesg: $state"
+            }
+
+            checkbutton .cb -text "Toggle" \
+                -variable [scope state] \
+                -command [code show_state "current state"]
+
+            pack .cb
+        }
+
+      In this example, the checkbutton is tied to the variable
+      "foo::state" and executes the command "foo::show_state"
+      whenever it is pressed.
+
+      When a Tk widget uses commands and variables within a
+      namespace, these names should be wrapped up as scoped
+      values, as shown above.
+
+
+    variable name ?value?
+      Creates a variable called "name" and initializes it to an optional
+      value.  This is normally used in conjunction with public, protected
+      and private commands to declare variables within a namespace:
+
+          namespace foo {
+              public variable x 0
+              private variable y 1
+          }
+
+      If the variable "name" already exists, it updated to have
+      the protection level that is currently active.
+
+
+ == Tk with Namespaces ==================================================
+
+    bind...
+
+      Recognizes and expands the following fields within command
+      strings:
+
+        %q  =>  Replaced with the fully-qualified access command
+                for the widget receiving the event.  For example,
+
+                    namespace foo {
+                        namespace bar {
+                            button .b -text "Hello World!"
+                        }
+                    }
+
+                The fully-qualified access command for this widget
+                is "::foo::bar::.b".  The "%q" field should be used
+                instead of "%W" as the widget access command:
+
+                    bind Button <Key-Return> "%q flash; %q invoke"
+
+
+        %M  =>  Replaced with the window path name of the mega-widget
+                containing the window receiving the event.  For example,
+                if an "entryfield" mega-widget ".x" contains an entry
+                widget ".x.entry", bindings added to ".x.entry" will
+                replace "%M" with ".x".  This allows generic bindings
+                to be added to component widgets which affect the
+                mega-widget as a whole.
+
+                For this to work properly, mega-widget packages must
+                register their component widgets using Itk_SetMegaWidget().
+
+
+    winfo command window
+
+      Returns the fully-qualified access command for the widget "window".
+      This is equivalent to the "%q" field in bindings, and is useful
+      in procedures where the only the window name is known:
+
+        foreach kid [winfo children $win] {
+            [winfo command $kid] configure -bg blue
+        }
+
+
+    winfo megawidget window
+
+      Returns the window path name of the mega-widget containing "window"
+      as a component.  This is equivalent to the "%M" field in bindings,
+      and is useful in procedures where only the component window name
+      is known.  For this to work properly, mega-widget packages must
+      register their component widgets using Itk_SetMegaWidget().
+
+
+ == [incr Tcl] ==========================================================
+
+    delete class name ?name...?
+
+      Deletes one or more object classes.  Deleting a class also
+      causes all derived classes, and all objects belonging to the
+      class, to be deleted as well.
+
+
+    delete object name ?name...?
+
+      Deletes one or more objects.  If the access command for an
+      object resides in another namespace, then the full namespace
+      path should be used:
+
+          delete object foo::bar::x
+
+
+    info classes ?pattern?
+
+      Returns a list of all classes in the current namespace
+      whose names match an optional string pattern.
+
+
+    info objects ?-class className? ?-isa className? ?pattern?
+
+      Returns a list of all objects whose names match an optional
+      string pattern.  If the "-class" option is specified, then
+      the list is further restricted to those objects whose
+      most-specific class is "className".  If the "-isa" option
+      is specified, then the list is further restricted to those
+      objects who belong to class "className".
+
+
+    itcl::class name { definition }
+
+      Used to create define a new class "name".  The "definition"
+      commands include:
+
+          inherit baseClass ?baseClass...?
+
+          constructor arglist ?init? body
+          destructor body
+
+          method name ?arglist? ?body?
+          proc name ?arglist? ?body?
+          variable name ?init? ?config?
+          common name ?init?
+
+          public command ?arg arg...?
+          protected command ?arg arg...?
+          private command ?arg arg...?
+
+      Note that the constructor statement has changed to include an
+      optional "init" argument.  This is an initialization statement
+      that can be used to call out base class constructors.  If it
+      is not included, base classes are constructors are invoked
+      automatically without any arguments.
+
+      The "variable" statement is now used to create object-specific
+      data members.  The "common" statement is used to create "common"
+      variables, which are global within the class namespace.  Both
+      types of variables can be designated public, protected or
+      private.
+
+
+    itcl::body class::func arglist body
+
+      Used to define the body of a class member function outside of
+      the class definition.  If "body" declarations are kept in a
+      separate file, they can be sourced again and again to test
+      changes as bugs are fixed.  If an "arglist" is specified in
+      the class definition, then the "arglist" for the body definition
+      must have the same meaning.
+
+
+    itcl::configbody  class::option body
+
+      Similar to the "body" command, but used to define the configuration
+      code for a public variable.
+
+
+    itcl_class name { old-style-definition }   \__ backward compatibility
+    itcl_info option ?arg arg...?              /
+
+
+ == [incr Tk] ===========================================================
+
+    itcl::class name {
+        ...
+        itk_option define -switch resName resClass initVal ?configCode?
+    }
+
+      The "itk_option define" command is recognized at the level of
+      the class definition.  It defines a new mega-widget option with
+      the given switch name and X11 resource database names.  The
+      "initVal" is used as a last resort to initialize the option
+      if no other value can be queried from the X11 resource database.
+      If "configCode" is specified, it is executed whenever the option
+      is modified via the "configure" method.  The "configCode" can
+      also be specified outside of the class definition via the
+      "itcl::configbody" command.
+
+
+  Methods provided by itk::Archetype base class:
+
+    component
+    component name
+    component name command ?arg arg...?
+
+      Used to query or access components within a mega-widget.  With
+      no arguments, this returns a list of component widgets that
+      are accessible in the current scope.  Note that component
+      widgets obey any public/protected/private access restriction
+      that is in force when the component is created.
+
+      With one argument, this returns the window path name for a
+      component with the symbolic name "name".
+
+      In any other case, the remaining arguments are invoked as a
+      method on the component with the symbolic name "name".
+
+
+    configure
+    configure option
+    configure option value ?-switch value...?
+
+      Works just like the usual Tk configure method, but for mega-widgets.
+      Here options are really composite widget options.  When set, they
+      trigger changes to many different internal components, and may
+      invoke many bits of "configCode" for options defined by "itk_option
+      define".  However, there is only one value for the composite option.
+
+
+    cget option
+
+      Works just like the usual Tk cget method, but for mega-widgets.
+      Returns the current value for a composite widget option.
+
+
+    itk_component add name {create-commands} ?{option-commands}?
+
+      Adds a new mega-widget component with the symbolic name "name".
+      Invokes the "create-commands" to create the component, and
+      invokes "option-commands" to integrate its options into the
+      composite list.  By default, no options are integrated.  Options
+      may be added using the following commands:
+
+          keep option ?option...?
+          ignore option ?option...?
+          rename oldswitch newswitch resname resclass
+          usual ?tag?
+
+
+    itk_component delete name ?name...?
+
+      Deletes an existing mega-widget component with the symbolic
+      name "name".  The component will still exist as a widget,
+      but it will no longer be accessible as a component for this
+      mega-widget.  Any options associated with the component are
+      removed from the composite list.
+
+      Note that you can destroy a component like any ordinary widget:
+
+          destroy .foo.bar.b
+
+      Components automatically detach themselves from their mega-widget
+      parent when destroyed, so "itk_component delete" is not used
+      very often.
+
+
+    itk_option add option ?option...?     \__ class::option
+    itk_option remove option ?option...?  /   component.option
+
+      Adds or removes an option from the composite option list for
+      a mega-widget.  These commands cannot be used at the level of
+      the class definition; they must be invoked for a particular
+      mega-widget.  They usually appear in the constructor for a
+      mega-widget class, to add or redefine options in components
+      created by a base class.  For example, the base classes
+      itk::Toplevel and itk::Widget keep only the bare minimum
+      options for their "hull" component:  -background and -cursor.
+      If you want your mega-widget to have a border around it, you
+      can add the hull options back in:
+
+          itcl::class MyWidget {
+              inherit itk::Widget
+
+              constructor {args} {
+                  itk_option add hull.borderwidth hull.relief
+              }
+          }
+
+
+    itk_initialize ?option value option value...?
+
+      Initializes the composite option list for a mega-widget.
+      This method should be invoked within the constructor for each
+      mega-widget class.  It is usually included the end of the
+      constructor, below the component creation code.  It integrates
+      all "itk_option" options defined in the current class into
+      the composite configuration list, and includes "-option value"
+      settings usually received as arguments to the constructor.
+      When this is executed in the most-specific class, it scans
+      through the composite option list and makes sure that all
+      options have been properly initialized.
+
+    itk::usual tag ?commands?
+
+      Used outside of a mega-widget class definition to declare
+      the "usual" option-handling commands for the mega-widget.
+      These commands suggest how the configuration options should
+      be handled if the mega-widget becomes a component of an even
+      larger mega-widget.  They include commands like "keep" and
+      "rename".
+
+
+ INCOMPATIBLE CHANGES
+--------------------------------------------------------------------------
+
+ >> Object construction/destruction now follows C++ model.
+
+    In the previous release, object construction started at the
+    most-specific constructor.  Base class constructors could
+    be called out explicitly within the body of a constructor.
+    If they were not, they were invoked implicitly when the
+    constructor finished executing.  This led to a construction
+    model that was backward from C++, and contrary to what most
+    people expected.  Destructors were backwards in a similar
+    manner.
+
+    In the current release, object construction starts at the
+    least-specific class in the hierarchy, and proceeds to the
+    most-specific class.  Therefore, each base class is fully
+    constructed before the derived class constructor is executed.
+
+    Arguments are now passed to base class constructors through
+    an optional "initialization" statement.  This statement is
+    included between the argument list and the body of the
+    constructor, so the syntax is reminiscent of C++:
+
+        class Base {
+            constructor {x y} {
+                ...constructor body...
+            }
+        }
+        class Derived {
+            inherit Base
+            constructor {x y z} {
+                Base::constructor $x $y    << "initialization"
+            } {
+                ...constructor body...
+            }
+        }
+
+    Note that variables from the argument list (e.g., $x and $y)
+    can be referenced within the initialization statement.  With
+    multiple inheritance, each of the base class constructors
+    can be called out individually.
+
+    Object destruction is the exact opposite of construction.
+    It proceeds from most-specific to least-specific class.
+
+
+ >> All class methods are now implicitly virtual
+
+    In the previous release, all method names were interpreted
+    with respect to the current class scope and its base classes.
+    If you wanted a method to act virtual, you had to explicitly
+    preface it with the "virtual" command each time you used it.
+    This proved to be error prone.
+
+    In the new release, all methods are virtual by default.  If
+    you invoke a method with a simple name, the most-specific
+    method with that name will be invoked, regardless of your
+    class scope:
+
+        class Base {
+            constructor {} {show}
+            method show {} {puts "Base::show"}
+        }
+        class Derived {
+            inherit Base
+            constructor {} {show}
+            method show {} {puts "Derived::show"}
+        }
+
+    The method "show" called out in the constructors for both of
+    these classes is virtual.  When Base::constructor is executed
+    it finds the most-specific "show" method and prints
+    "Derived::show".  When Derived::constructor is executed, it
+    finds the most-specific "show" method and prints "Derived::show"
+    again.
+
+    If you want to invoke a particular method, you have to scope
+    it explicity:
+
+        class Base {
+            constructor {} {Base::show}
+            method show {} {puts "Base::show"}
+        }
+        class Derived {
+            inherit Base
+            constructor {} {Derived::show}
+            method show {} {puts "Derived::show"}
+        }
+
+
+ >> Within class methods/procs the "global" command now refers to
+    variables within the class namespace.
+
+    In the previous release, the "global" command was used to
+    access variables at the global scope.  The "global" command
+    now refers to variables that are "global" within the current
+    namespace context.  Within the scope of a class, this refers
+    to "global" class variables.  Note that common data members
+    are global variables, but they can be accessed transparently,
+    without any special "global" declaration.  You can also create
+    ordinary global variables within a class, but you will have to
+    declare them each time they are used with a "global" statement.
+    The new scheme will allow classes to have their own private
+    global variables (e.g., for interacting with widgets) without
+    flooding the global namespace.
+
+    If you really want to access a variable at the "::" global
+    scope, use its complete path name:
+
+        itcl::class Foo {
+            method getenv {name} {
+                global ::env
+                return $env($name)
+            }
+        }
+
+
+ >> "this" variable used to be included in every class scope
+
+    In the previous release, each class scope included a separate
+    "this" variable containing the object name.  There is now only
+    one "this" variable, kept in the most-specific class scope.
+    It can still be referenced as if it belongs to all classes,
+    e.g., "Base::this", "Derived::this".
+
+    This change is probably not important to most applications.
+    But it did break my test suite, which expected to find many
+    different "this" variables coming back from the "info" command.
+
+
+ >> "this" variable now contains complete namespace path for the
+      object access command
+
+    This change will break many scripts written for mega-widgets.
+    In the previous release, mega-widgets had a window name and an
+    access command name that were interchangeable.  For example,
+    you would create a widget ".dialog" and configure it using
+    the ".dialog" command.  Inside of this widget there was a
+    "this" variable containing the name ".dialog".
+
+    In the current release, an object can exist in any namespace,
+    so the complete namespace path is a part of the object's
+    identity.  Instead of just ".dialog", the "this" variable will
+    now contain a name like "::.dialog" or "::foo::.dialog".  But
+    the window name is still just ".dialog".
+
+    Scripts that used to use "$this" as a window name:
+
+        wm title $this "Dialog"
+
+    must now use the [incr Tk] "hull" component instead:
+
+        wm title $itk_component(hull) "Dialog"
+
+    If for some other reason you need the simple object name at the
+    end of the namespace path, you can get at it using the
+    "info namespace tail" command:
+
+        set oldthis [info namespace tail $this]
+
+
+ >> "#auto" generated names now start with lower-case letter
+
+    In the previous release, "#auto" could be used in place of
+    an object name to produce an automatically generated name:
+
+        Toaster #auto -heat light
+
+    The names were generated by adding a unique number onto the
+    class name:  "Toaster0", "Toaster1", etc.
+
+    The current release supports the same functionality, except
+    that the names generated are guaranteed to start with a
+    lowercase letter:  "toaster0", "toaster1", etc.  This helps
+    out in the mega-widget arena, where window names must start
+    with lowercase letters.
+
+
+ >> "config" argument used to allow multiple default values
+
+    The magic "config" argument used to allow multiple default
+    values, which were simply concatenated into a single value
+    before processing.  For example, in the previous release
+    you could say:
+
+        itcl_class Foo {
+            method test {x y {config -foo 0 -bar 0}} {
+                ...
+            }
+        }
+
+    and if the "test" method was used without extra configuration
+    arguments, they would default to "-foo 0 -bar 0".
+
+    In the current release, you must make the default value for
+    a "config" argument a single string:
+
+        itcl::class Foo {
+            method test {x y {config "-foo 0 -bar 0"}} {
+                ...
+            }
+        }
+
+ >> "info class" now acts "virtual"
+
+    In the previous release, the "info class" command would report
+    the current class context.  In a base class method, it would
+    report the base class name, and in a derived class method, it
+    would report the derived class name.  If you wanted to know
+    the most-specific class for an object, you would have to use
+    the "virtual" command explicitly:
+
+        itcl_class Base {
+            method whatAmI {} {
+                return [virtual info class]
+            }
+        }
+
+    The "info" command is now virtual by default, as long as an
+    object context is present.  This means that you can drop the
+    "virtual" command:
+
+        itcl::class Base {
+            method whatAmI {} {
+                return [info class]
+            }
+        }
+
+    If you really want to know the current class scope, use the
+    "info context" command instead to query the current namespace
+    context.
+
+    If an object context is not present (i.e., in the body of a
+    common class "proc"), the "info class" command reverts to
+    the current class context, the same as the "info context" command.
+
+
+ >> Library procedures "itcl_unload" and "itcl_reload" have been removed
+
+    In the previous release, the library procedure "itcl_unload"
+    provided a way of deleting a class.  You can now do the same
+    thing using the "delete class" command:
+
+        delete class Toaster
+
+    This deletes the specified class, all derived classes, and all
+    objects belonging to this class.  If autoloading is set up,
+    you can reload a deleted class just by invoking its name.
+    The old "itcl_reload" function is now trivial:
+
+        proc itcl_reload {class} {
+            delete class $class
+            $class
+        }
+
+
+ >> Class definition no longer recognizes ordinary Tcl commands.
+
+    As an undocumented "feature" of the previous release, you could
+    include ordinary Tcl commands in the body of your class definition.
+    For example:
+
+        itcl_class Foo {
+            ...
+            if {$somevar} {
+                public foo
+            }
+        }
+
+    In the new release, only class definition commands are allowed
+    within the body of a class definition.  You can, however, use Tcl
+    commands outside of the class definition to modify the class
+    definition as a string, and then define the class:
+
+        set defn {
+            method test {} {return "test"}
+        }
+        if {$somevar} {
+            append defn "public variable foo"
+        }
+        class Foo $defn
+
+
+ IMPROVEMENTS
+--------------------------------------------------------------------------
+
+ >> an object can be renamed by renaming its access command
+
+    In the previous release, an object's identity was fixed when
+    it was created.  In the new release, the object is tied
+    directly to its access command.  If you rename the access
+    command, you have renamed the object.  The "this" variable
+    automatically keeps in sync with name changes.  If you delete
+    the access command, you automatically delete the object.
+
+        Toaster new -heat light
+        rename new fred          << rename Toaster
+        fred toast 2
+        fred toast 1
+        rename fred ""           << delete Toaster
+
+
+ >> Bodies of methods, procs and public variables can be defined
+    outside of the class definition, and can be redefined on the fly.
+
+    In the previous release, all of the code related to a class was
+    defined within the class definition.  This kept everything
+    together in one place, but it made it difficult to get an overview
+    of the class interface.
+
+    In the new release, bodies can be defined outside of the class
+    definition, perhaps in a separate file.  When debugging, the
+    implementations can be fixed and sourced again and again, without
+    having to delete existing objects and classes.
+
+    Use the "itcl::body" command to redefine the body of a class
+    method or proc.  Use "itcl::configbody" to redefine the configuration
+    code associated with a public variable.  For example:
+
+        itcl::class Toaster {
+            constructor {args} {
+                eval configure $args
+            }
+            destructor {
+                if {$crumbs > 0} {
+                    error "cannot destroy dirty toaster: clean first"
+                }
+            }
+
+            method toast {nslices}
+            method clean {}
+
+            public variable heat 3
+            protected variable crumbs 0
+        }
+
+        itcl::body Toaster::toast {nslices} {
+            if {$nslices < 1 || $nslices > 2} {
+                error "bad number of slices: should be 1 or 2"
+            }
+            set crumbs [expr $crumbs+$heat*$nslices]
+            if {$crumbs >= 50} {
+                puts stderr "== FIRE! FIRE! =="
+            }
+        }
+
+        itcl::body Toaster::clean {} {
+            set crumbs 0
+        }
+
+        itcl::configbody Toaster::heat {
+            if {$heat < 1 || $heat > 5} {
+                error "invalid setting \"$heat\": should be 1-5"
+            }
+        }
+
+    If an argument list is specified in the class definition, then
+    the same argument list must be used when the implementation is
+    redefined.  The variable names can change, but the meaning of
+    the arguments must be the same.  If you leave the argument
+    list out of the class definition, or if you include the "args"
+    argument, the argument list can change.
+
+
+ >> C procedures can be integrated into class definitions
+
+    Any method body that is specified as "@symbol" is treated as a
+    reference to a C procedure with the symbolic name "symbol".
+    Symbolic names are established by registering C procedures
+    via the Itcl_RegisterC() procedure.  This is usually done
+    when the interpreter starts up in the Tcl_AppInit() procedure:
+
+        if (Itcl_RegisterC(interp, "foo", My_FooCmd) != TCL_OK) {
+            return TCL_ERROR;
+        }
+
+    This registers a procedure My_FooCmd() with the symbolic name
+    "foo".  It can be used as the implementation for a class method,
+    proc, or bit of configuration code simply by specifying "@foo"
+    in place of the Tcl code body.
+
+    These C procedures are just like ordinary Tcl command handlers.
+    They take the usual arguments:
+
+        int My_FooCmd(ClientData cdata, Tcl_Interp *interp,
+            int argc, char** argv)
+        {
+            ...
+            return TCL_OK;
+        }
+
+    including the (argc,argv) arguments from the command line.  But
+    before these procedures are invoked, the proper class scope is
+    established so that object data members can be accessed as if
+    they were ordinary variables via Tcl_GetVar() and Tcl_SetVar().
+
+    Look at the [incr Tk] base class itk::Archetype as an example
+    for integrating C code.
+
+
+ >> "#auto" can be buried within an object name:  ".x.y.z.#auto"
+
+    In the previous release, "#auto" was a keyword that could be
+    used in place of an object name.  It can now be used as a
+    part of the object name, making it easier to generate automatic
+    names for mega-widgets.
+
+
+ >> Every object now has built-in "configure" and "cget" methods
+    that follow the Tk paradigm.  For [incr Tk] widgets, they follow
+    the paradigm exactly.  The ordinary [incr Tcl] objects, the
+    X11 resource values are missing.
+
+
+ >> There is no longer a built-in "delete" method, so classes can
+    define their own "delete" operations.
+
+    Instead of "objName delete", use the new "delete object" command:
+
+        Toaster fred -heat dark
+        delete object fred
+
+
+ >> All data members can be declared public, protected or private.
+
+    Private data members can only be accessed in the class where
+    they are defined.  Protected data members can be accessed in
+    the defining class and all derived classes.  Public data members
+    can be accessed like protected data members, but are also
+    recognized as configuration options by the built-in "configure"
+    and "cget" methods.
+
+
+ >> In [incr Tk], options are now defined outside of the constructor,
+    at the level of the class definition.
+
+
+ >> In [incr Tk], configuration options belonging to components
+    created in a base class can be added or removed in derived
+    classes.
+
+    The base classes "itk::Toplevel" and "itk::Widget" are now stripped
+    down to the bare minimum options.  For example, if you want to add
+    "-width" and "-height" options for the hull component, do this using
+    the "itk_option" command in the body of the constructor:
+
+        class MyWidget {
+            inherit itk::Widget
+
+            constructor {args} {
+                itk_option add hull.widget hull.height
+                ...
+            }
+        }
+
+    Options can be added and removed on-the-fly during normal operation,
+    but this is not recommended, since it could lead to a confusing
+    interface.
+
+
+ >> In [incr Tk], components can now be added or removed on-the-fly.
+
+    The "itk_component" method now supports "add" and "delete"
+    operations that are used to add/delete components.
+
+
+ >> All [incr Tk] widgets can be destroyed like normal Tk widgets.
+
+    If you destroy a component widget, for example, it will automatically
+    remove itself from its parent via "itk_component delete".  Likewise,
+    when a parent widget is destroyed, it will automatically destroy
+    all component widgets.
+
+
+ >> In [incr Tk], the "itk::Archetype::component" method now provides
+    access to mega-widget components.
+
+    In the previous [incr Tk] prototype, the "component" method had
+    a different syntax and only supported query operations.  You can
+    now access an internal component via the "component" method using
+    its symbolic name:
+
+        .dialog component hull configure -width 450 -height 500
+
+    This example accesses the "hull" component of the ".dialog"
+    mega-widget, and sets the width and height options.
+
+==========================================================================
+ ---------------------- RELEASE 2.0beta - 9/6/95 ------------------------
+==========================================================================
+
+9/8/95 (bug fix)
+  Fixed menus to work properly within namespaces.  Menu library code
+  now recognizes the proper namespace context for all "-menu" options.
+
+9/8/95 (new feature)
+  Added "winfo command name" option to report the scoped access command
+  for a given window.
+
+9/8/95 (configuration changes)
+  - fixed "sed" invocation in iwidgets Makefile
+  - added configuration guesses for Tadpole Sparcbook
+  - added George Howlett's test for "gcc", so that "-fwritable-strings"
+    is added even if gcc is masquerading as "cc"
+  - fixed tcl/tk configure scripts to have default prefix "/usr/local/itcl"
+    or wherever itclsh/itkwish is installed
+  - fixed makefiles to use $(MAKE) instead of "make"
+
+9/9/95 (bug fix)
+  Protected references to obj->accessCmd to avoid seg faults when
+  an object is being destroyed.
+
+9/9/95 (new features)
+  Changed the syntax of the "namespace" command:
+
+    namespace name ?-local? ?-hidden val? ?-enforced val? ?--? ?commands?
+
+  Flags now follow the namespace name, and the "commands" body is
+  optional.  The "-hidden" option allows a namespace to be hidden
+  during "info namespace all" queries.  The "-enforced" option turns
+  command/variable enforcement on or off.
+
+  Update "info namespaces all" command to allow for display of hidden
+  namespaces:  info namespaces all ?-hidden? ?pattern?
+
+9/10/95 (bug fix)
+  Fixed "auto_mkindex" to work properly for procs defined within
+  namespaces.  Added support for itcl::class, itcl::body and
+  itcl::configbody as well.  Added tests for tclIndex file generation.
+
+9/11/95 (configuration changes)
+  Fixed makefiles to reference sources and libraries properly, so
+  it should be possible to build different object trees for
+  different platforms with "gmake".
+
+9/13/95 (configuration changes)
+  Added "AC_C_CROSS" to configure files, so configuration should work
+  properly on Solaris 2.4.
+
+9/13/95 (bug fix)
+  Changed option configuration to work synchronously, and added
+  "itk_initialize" command to initialize the configuration options
+  for each mega-widget class.  The original behavior of handling
+  option changes via "do-when-idle" has been removed.
+
+9/13/95 (bug fix)
+  Changed all structure members called "namespace" to "namesp".
+  This allows the code to compile correctly under C++.
+
+9/13/95 (configuration changes)
+  - added support for "i[34]86:BSD/OS" in "config/config.guess"
+  - fixed "test" target for iwidgets
+
+9/13/95 (bug fix)
+  Fixed "global" command and other places where namespace paths
+  are parsed to allow for a single ":" in command/variable names.
+
+9/13/95 (bug fix)
+  Fixed a problem which caused class-based options to be lost when
+  a widget class was defined within a proc.
+
+9/14/95 (bug fix)
+  Fixed class access command so that when it is deleted, it
+  automatically destroys the class.  This also fixed a seg fault
+  that occurred when an object's access command stomped on the
+  class access command.
+
+9/14/95 (enhancement)
+  Fixed "scope" command and the @scope facility so that null strings
+  can be passed around without all of the extra scoping info.
+
+==========================================================================
+ ----------------------- RELEASE 2.0b2 - 9/14/95 ------------------------
+==========================================================================
+
+9/15/95 (enhancement)
+  Changed error messages reported when a class method/proc gets the
+  wrong number of arguments to report the usage information, like:
+  {wrong # args: should be "obj foo x y ?arg arg...?"}
+
+9/18/95 (bug fix)
+  Fixed a seg fault that occurred when the "cget" method was called
+  with no args.
+
+9/18/95 (bug fix)
+  Fixed a bug that caused private variables in a base class to be
+  uninitialized, even if an initial value was specified in the
+  class definition.
+
+9/22/95 (configuration changes)
+  Added the "SHELL=/bin/sh" statement to the main makefile.  This
+  fixes build problems on SGI machines.
+
+10/9/95 (paradigm shift)
+  Removed the implicit scoping from any facility that takes a command
+  or variable name.  Implicit scoping made it difficult to pass a
+  command string or variable name into a wrapper proc and yet preserve
+  the scope that it came from.  All scoping is now explicit.  All
+  commands and variables are interpreted in the global "::" scope
+  unless they are wrapped in an "@scope" declaration.  Commands can
+  be wrapped up like this:
+
+      button .b -text "Push Me" -command [code .b configure -bg red]
+
+  Variable names can be wrapped up like this:
+
+      radiobutton .rb1 -text "Choice #1" -variable [scope mode] -value 1
+
+  The "code" and "scope" commands wrap up strings with an "@scope"
+  specification which preserves the namespace context.
+
+10/17/95 (paradigm shift)
+  Changed the "%C" option of the "bind" command to return a scoped
+  command of the form "@scope namespace widget" that can be used to
+  access the widget.  "%C" should be used instead of the usual "%W"
+  window name when attempting to access the widget.  Bindings should
+  be written like this:
+
+      bind Entry <FocusIn>  {%C configure -bg white}
+      bind Entry <FocusOut> {%C configure -bg gray}
+
+  The command "%C" can be used to access the widget regardless which
+  namespace it belongs to.
+
+10/31/95 (enhancement)
+  Fixed "unknown" command to support a general facility for adding
+  unknown command handlers.  The "unknown_handler" proc is used to
+  register new handlers.  Each time an unknown command is encountered,
+  each of the handlers is invoked to attempt to handle the command.
+  If a handler returns "-code continue", control passes to the next
+  handler on the list.  Handlers are invoked in the order opposite to
+  the way they were registered.  Extensions can use this facility to
+  add their own handlers into the "unknown" scheme.
+
+11/7/95 (enhancement)
+  Added a "backward-compatibility" mode to [incr Tcl].  By default,
+  widget names can now be used as access commands in any namespace,
+  even if the widget access command exists in another namespace.
+  This emulates the normal Tk behavior that widgets are global resources
+  in the application that can be accessed anywhere.  This behavior can
+  be disabled by setting the global variable "itcl_purist" to "1".  When
+  this variable is set non-zero, care must be used to use "%C" or
+  "[winfo command %W]" as an access command when the widget is used
+  outside of the namespace that contains it.  From the standpoint of
+  the object-oriented paradigm, the "purist" mode is better since it
+  supports encapsulation.  The "backward-compatible" mode, however,
+  allows [incr Tcl] to work better with existing Tk applications and
+  extensions.
+
+11/22/95 (bug fix and enhancement)
+  Fixed the built-in "info" command for classes to include the "info
+  classes" and "info objects" queries.  These were initially overlooked
+  in a hard-wired list of "info" queries.
+
+  Fixed the ensemble facility in general to support unknown options
+  via an "@error" handler.  Any option registered with the name "@error"
+  is treated as an error handler for the ensemble.  Arguments passed
+  to the option include the ensemble name, the unknown option, and all
+  remaining arguments.  For the built-in "info" command, the "@error"
+  handler passes any unknown options to the usual Tcl "info" command,
+  so all of the standard options are automatically available.
+
+11/23/95 (bug fix)
+  Fixed usual tkerror dialog to truncate error messages at 5 lines.
+  The usage information returned by an ensemble or itcl object can
+  be much longer, causing the "Stack Trace" button to get lost in
+  many cases.
+
+11/27/95 (bug fix)
+  Removed the constructor/destructor from the list of public methods
+  returned as usage information when an unknown method is encountered
+  on an object.
+
+12/2/95 (bug fix)
+  Fixed error reporting for object construction.  Used to say
+  something like "object constructor x y z" which made it look
+  like a method invocation.  Now says "class object x y z" which
+  looks more like the call that the user made to trigger the error.
+
+12/4/95 (bug fix)
+  Fixed class creation and object creation to avoid clobbering
+  existing commands with new class/object access commands.  This
+  prevents all hell from breaking loose when a command like
+  "class set {...}" is invoked.
+
+12/6/95 (configuration changes)
+  Fixed parsing of namespace paths to use local storage instead of
+  assuming that strings are writable.  This means that the
+  "-fwritable-strings" option is no longer necessary for GCC and
+  other compilers that store static strings in the program text
+  segment.  This option has been removed from all "configure.in"
+  files.  Linux users will no longer see core dumps on start-up.
+
+12/8/95 (bug fix)
+  Fixed "upvar" so that class data members can be accessed from
+  another calling procedure.  This fixed a problem with using
+  "parray" from within class methods.
+
+12/9/95 (bug fix)
+  Fixed "@scope" variable references so that variables can be created
+  using "@scope" in any context and referenced later.
+
+12/9/95 (feature change)
+  Removed "-hidden" option from namespaces.  It seemed to complicated
+  and quirky to explain on the man page.  Instead, all parser
+  namespaces like "scope-parser" and "mkindex-parser" are grouped
+  into a "::tcl" namespace.  This keeps them somewhat hidden even
+  without any special treatment.
+
+12/9/95 (minor enhancement)
+  Added "array" command to class definition parser, so it can be
+  used along with "set" to initialize common arrays.
+
+12/10/95 (paradigm shift)
+  Removed the "%C" pattern from the expansions recognized by the
+  "bind" command, in favor of the following scheme:
+    %W ........ name of widget receiving event
+    %M ........ name of mega-widget containing widget receiving event
+    %q ........ fully-qualified command name of widget receiving event
+    %Q ........ fully-qualified command name of mega-widget receiving event
+  Fixed "winfo command" to return the fully-qualified command name of
+  a widget (instead of a scoped access command) to be consistent with
+  the "%q" bind pattern.
+
+12/10/95 (bug fix)
+  Fixed Tk library code to use "%q" and "winfo command", so that the
+  default widget behaviors will work even in "itcl_purist" mode.
+
+12/11/95 (minor enhancement)
+  Added "winfo megawidget" query, which will return the name of the
+  mega-widget containing a specified component widget.  In order for
+  this to work, a mega-widget package must use the procedure
+  Itcl_SetMegaWidget() to register each component as it is added
+  to a mega-widget.
+
+12/12/95 (bug fix)
+  Fixed Archetype base class to keep all options sorted in alphabetical
+  order.  This way they can be reported back by the "configure" method
+  in alphabetical order.  Options are now initialized by "itk_initialize"
+  in alphabetical order as well.
+
+12/12/95 (bug fix)
+  Fixed the Archetype base class to register each component widget with
+  Tk via Itk_SetMegaWidget().  This means that "winfo megawidget" and
+  "%Q" can be used to reference the containing mega-widget for any component.
+
+12/12/95 (bug fix)
+  Fixed the "configure" method in the Archetype base class so that when
+  an error is encountered while setting a configuration option, the option
+  is set back to its previous value.
+
+12/12/95 (bug fix)
+  Fixed the "itk_component add" method to find access commands for
+  components even if they are created in the global scope.  Components
+  that are meant to be shared can be created using "uplevel #0".  The
+  access command for this component will be installed in the global scope,
+  and therefore available to all other namespaces.
+
+  Syntactic sugar like a "-global" option would be nice, but references
+  like $itk_component(...) must be substituted in the calling scope, and
+  it is not possible to get these properly substituted and still maintain
+  the boundaries around arguments.
+
+12/12/95 (bug fix)
+  Fixed Archetype base class to handle public/protected/private components
+  properly.  The usual public/protected/private commands can be used in
+  conjunction with "itk_component add" to set the protection level of a
+  component.  The protection level affects the action of the "component"
+  method.  Public components are reported in any namespace, and are
+  accessible from any namespace.  Protected components are accessible
+  within a base class and derived classes.  Private components are
+  accessible only within the class where they are defined.  This feature
+  can be used to keep unimportant components (such as frames) off of the
+  component list that a client would see.
+
+12/13/95 (enhancement)
+  Added "usual" and "ignore" commands for processing component widget
+  configuration options.  The "usual" command finds the usual code fragment
+  for the widget class of the component, and executes it.  The command
+  "itk::usual" can be used to register option code for new widget classes.
+
+  The "ignore" command can be used to override previous "keep" and "rename"
+  commands.  This is useful for removing options that the "usual" code
+  keeps or renames.
+
+  Fixed the "itk_component add" command so that if the option handling code
+  is not specified, the "usual" command is invoked automatically.
+
+12/13/95 (bug fix)
+  Fixed the Archetype base class to handle the immutable Tk options
+  properly.  Options like -class, -colormap, -screen and -visual can only
+  be set at creation time.  The itk_option array is now properly
+  initialized to report their creation value.
+
+12/14/95 (bug fix)
+  Fixed "itk_option add" command to report errors properly for unknown
+  options.
+
+12/14/95 (bug fix)
+  Fixed "body" command to report errors properly for unknown functions.
+
+12/14/95 (bug fix)
+  Fixed a bug in the handling of TCL_GLOBAL_ONLY flag when looking up
+  class variables.  Previously, this was ignored, so object-specific
+  variables could be accessed in a "global" context by Tk widgets.
+  This caused some strange behavior when object-specific variables
+  were used in conjunction with widget options like "-textvariable".
+  Tk widgets now properly interact with classes via global variables.
+
+12/14/95 (bug fix)
+  Fixed "auto_mkindex" to recognize procs within class definitions and
+  add them to the "tclIndex" file.
+
+12/15/95 (bug fix)
+  Fixed "body" command to find functions only in the specified class.
+  The bug caused a base class method to be redefined whenever a "body"
+  command was issued for a derived class if the method was not declared
+  in the derived class.  Made a corresponding fix to the "configbody"
+  command for public variables.
+
+12/15/95 (enhancement)
+  Added the following commands to the class definition parser:  bind,
+  scope and code.  This allows generic class bindings to be included
+  in the body of a class definition.
+
+12/15/95 (enhancement)
+  Added "-clientdata" option in itk::Archetype base class so that
+  all widgets will have an extra field for client data.  For application
+  developers, this may come in handy.
+
+12/16/95 (bug fix)
+  Fixed the itk::Archetype base class so that if "itk_option add" or
+  "itk_option remove" is called for ordinary class-based options before
+  "itk_initialize" (which normally integrates them in) it does not cause
+  a problem.
+
+12/17/95 (bug fix)
+  Fixed namespace resolution so that a command/variable with a
+  specific path like "itk::body" will not be found in another
+  imported namespace.  For the import list to be followed, the
+  command name must be generic like "body".
+
+12/19/95 (configuration changes)
+  Changed from generic directories like "tcl" and "tk" to directory
+  names with version numbers like "tcl7.4" and "tk4.0".
+
+12/19/95 (bug fix)
+  Changed names like "itcl_library" and "itcl_purist" to "itcl::library"
+  and "itcl::purist".  This makes more sense in the documentation, since
+  the underbar stuff is no longer needed with namespaces, and extension
+  writers are discouraged from using it.
+
+12/21/95 (bug fix)
+  Changed handling of argument lists for functions with Tcl or C
+  implementations.  All argument lists are now treated as Tcl
+  argument specifications.  For Tcl implementations, this determines
+  what arguments are available in the body of the procedure; for C
+  implementations, this merely gives the intended usage information
+  for the function (the C implementation may choose to ignore this
+  and do something else).  This fix makes it easier to override
+  C implementations with Tcl procedure bodies.
+
+12/25/95 (bug fix)
+  Split the usual TCL_GLOBAL_ONLY flag into two meanings:  TCL_GLOBAL_ONLY
+  now means "a global variable in the global namespace", and ITCL_GLOBAL_VAR
+  means "a global variable in the current namespace".  This enhancement
+  fixes Tk (and many other extensions) which request global variables.
+  A plain variable name together with TCL_GLOBAL_ONLY is now interpreted
+  as an ordinary Tcl global variable, so the behavior is backward-compatible.
+  A scoped variable reference will work properly with namespaces.  If
+  extension writers get more ambitious, they can start using the
+  ITCL_GLOBAL_VAR flag, which will make their extensions namespace-friendly.
+
+12/26/95 (bug fix)
+  Fixed "@scope" command so that extra arguments added at the end are
+  kept as proper list elements when added to the command string.  This
+  makes sure that boundaries around Tcl words are not lost when the
+  scoped command is interpreted.
+
+12/28/95 (minor enhancement)
+  Added "config" method to the Archetype base class as an alias for
+  the usual "configure" method.  Many Tk applications use "config"
+  as an abbreviation for "configure", so this fix improves compatibility
+  with other packages.
+
+12/28/95 (bug fix)
+  Fixed Itcl_SaveInterpState() and Itcl_RestoreInterpState() to
+  properly save/restore the interp state even for commands like
+  Tcl_SetCmd(), which are sloppy about setting the interpreter
+  result.  This fixed bad memory references that were encountered
+  in enforced namespaces.
+
+12/28/95 (bug fix)
+  Fixed Itcl_DeleteNamesp() to allow variable traces to be fired
+  off properly when a namespace is destroyed.
+
+12/30/95 (bug fix)
+  Fixed the Archetype base class to do the "ignore" operation
+  properly for mega-widget options.  A bug was causing a single
+  "ignore" request not only to eliminate the desired option, but
+  to eliminate options that were renamed to the "ignore" name
+  as well.
+
+==========================================================================
+ ------------------------ RELEASE 2.0 - 12/31/95 ------------------------
+==========================================================================
+
+1/2/96 (cleanup)
+  Fixed some compiler warnings reported by Christopher Hylands
+  (cxh@EECS.Berkeley.EDU)
+
+1/4/96 (cleanup)
+  Fixed the description of the last test in itk/tests/option.test.
+
+1/4/96 (cleanup)
+  Fixed code examples in man pages.  Lines starting with "." now
+  start with the null character "\&", to avoid errors with troff.
+
+1/5/96 (bug fix)
+  Fixed a bug in tkMenuUnpost.  Popup menus associated with something
+  other than a menubutton can now be unposted properly.
+
+1/10/96 (bug fix)
+  If an error occurs during construction, all destructors are now
+  invoked--even if an error is encountered.  All destructor errors
+  are completely ignored.  This fixed a core dump reported by
+  Christopher Hylands (cxh@EECS.Berkeley.EDU).
+
+2/5/96 (cleanup)
+  Fixed memory leaks reported by Forest Rouse (rouse@flash.icemcfd.com).
+  Also fixed a problem in Itcl_DeleteNamesp() with the way that
+  the variable cache was destroyed.  This caused a core dump on Solaris
+  systems when a namespace was deleted.
+
+2/8/96 (cleanup)
+  Fixed itk tests to ignore any resources that the user might have
+  on the desktop (e.g., *background: red)
+
+2/11/96 (bug fix)
+  Fixed auto_mkindex so that the "proc" command accepts arglist and
+  body as optional arguments.  Within class definitions, these
+  parameters may not be specified.  Also, fixed the "source" command
+  so that it is ignored within the file being indexed.  Otherwise,
+  it brought in program elements that confused the index.
+
+2/15/96 (bug fix)
+  Fixed the unknown command to save errorInfo and restore it before
+  invoking each handler.  This fixed an irritating bug that caused
+  the first error message to be lost as "tkerror" was autoloaded.
+
+2/20/96 (bug fix)
+  Fixed a bug in variable lookup that allowed private/protected
+  variables to be set from outside the normal context.  On initial
+  lookup variables were being passed over, but since they did not
+  appear to exist, they were being created.  Variables are now
+  protected from being set or redeclared from an improper context.
+
+3/1/96 (enhancement)
+  Changed namespaces to import from their parent in "protected"
+  mode instead of "public" mode.  This is a better default, since
+  it emphasizes the strong relationship between a parent and a
+  child.  They can share variables that are hidden from anyone else.
+
+3/5/96 (bug fix)
+  Fixed the "info objects" to autoload any classes referenced by
+  "-isa" or "-class" that are not yet defined.
+
+3/12/96 (enhancement)
+  Fixed class parser to recognize commands at the global scope.
+  This makes it possible to embed normal Tcl commands like an
+  "if" statement within a class definition.  It also makes it
+  easy to extend the class parser by defining procs in the
+  ::itcl::parser namespace.
+
+3/17/96 (enhancement)
+  Fixed "usual" command so that with no arguments, it returns a
+  list of all known tags.  Each tag name can be used to query its
+  associated code.
+
+3/19/96 (enhancement)
+  Fixed the "configure" method for mega-widgets to include public
+  variables as configuration options.  Normally, mega-widget
+  classes use "itk_option define" to define configuration options.
+  However, if a mega-widget includes an ordinary itcl class as
+  a base class, it should provide access to the base class options.
+  Public variables are now integrated into the composite option
+  list by "itk_initialize".
+
+4/2/96 (enhancement)
+  Added a "chain" command to the built-ins available in each class.
+  A command like "chain 1 2 3" invokes the next implementation of
+  the current method/proc found looking up the inheritance hierarchy
+  toward base classes.  This can be used to invoke a base class method
+  in a generic way, without hard-coding the base class name.
+
+4/10/96 (bug fix)
+  Fixed "configure" operation for mega-widgets.  Previously, if an
+  error was encountered during configuration, the value in itk_option
+  was set back to the previous value, but some parts of the mega-widget
+  might be left in a partially configured state.  Now, if an error is
+  encountered and the option is set back to its previous value, the
+  change is propagated down to all parts, so the widget remains in a
+  consistent state.
+
+4/15/96 (bug fix)
+  Fixed a bug reported by Karel Zuiderveld (karel.zuiderveld@cv.ruu.nl)
+  related to virtual method selection in "itcl_methods.c".  If for some
+  reason a method name was not found in the virtual table, the table
+  access caused a core dump.  This is now fixed.
+
+5/13/96 (bug fix)
+  Fixed "itk_initialize" to recognize errors when executing the "config"
+  code associated with configuration options.  Any error immediately
+  causes itk_initialize to abort, which usually aborts construction.
+
+5/13/96 (bug fix)
+  Fixed a bug in Itcl_SaveInterpState() and Itcl_RestoreInterpState()
+  which caused error information to get lost during object construction
+  when errors were encountered.  The new iPtr->appendResult buffer was
+  being ignored, and results in this buffer were getting lost.
+
+6/1/96 (bug fix)
+  Changed the internal Interp and TkWindow data structures so that all
+  of the extra [incr Tcl] data members are at the bottom of the structure.
+  This should prevent errors when modules that have been compiled against
+  vanilla Tcl/Tk are dynamically loaded into [incr Tcl].
+
+6/12/96 (enhancement)
+  Integrated changes for "itcl2.0+3" release by Karel Zuiderveld,
+  Jan Nijtmans and Vince Darley.  This added support for tcl7.5/tk4.1,
+  dynamic loading, canvas improvements, and support for Macintosh
+  environments.  Many thanks to these guys for all of their hard
+  work!
+
+6/22/96 (installation)
+  Changed the way things are installed:
+  - the startup file "init.itcl" is now called "itcl.tcl"
+  - the startup file "init.itk" is now called "itk.tcl"
+  - libraries, include files and man pages are now installed under
+    a special "itcl" directory to avoid conflicts with a vanilla
+    Tcl/Tk installation.  For example, if your --prefix is set
+    to /usr/local, things would be installed as follows:
+
+        /usr/local/bin ............ executables:
+                 ish = tclsh with namespaces
+               iwish = wish with namespaces
+            itclwish = tclsh with namespaces and classes
+             itkwish = wish with namespaces and classes
+
+        /usr/local/include/itcl ... include files
+        /usr/local/lib/itcl ....... libraries
+        /usr/local/man/itcl ....... manual pages
+
+6/24/96 (bug fix)
+  Fixed "itkwish" so that it requires the Iwidgets package automatically
+  during initialization.  For all other shells, you must specifically
+  request Iwidgets with a statement like "package require Iwidgets"
+
+6/26/96 (bug fix)
+  Fixed Tk_CanvasTagsParseProc to avoid dumping core when an item
+  is configured with a null tag string.
+
+6/26/96 (bug fix)
+  Fixed PolygonToPoint() in tkCanvPoly.c so that invisible polygons
+  (with no outline and no fill) are still considered when picking
+  the closest item.  Without this fix, programs like the "floor plan"
+  in the Tk widget demo will not work.
+
+6/26/96 (bug fix)
+  Fixed the [incr Widgets] "feedback" widget to do a full update on
+  each step.  Without this, changes appear from time to time, but
+  the bar does not grow smoothly.
+
+6/26/96 (bug fix)
+  Fixed fileselectiondialog and fileselectionbox to update directory
+  list properly when "-directory" option is configured.
+
+6/28/96 (bug fix)
+  Fixed "itk_option define" to properly preserve a "config" code
+  body so that it can be released if it is redefined later.
+
+==========================================================================
+ ------------------------ RELEASE 2.1 - 6/28/96 -------------------------
+==========================================================================
+
+7/22/96 (bug fix)
+  Fixed C-level variable access so flags like ITCL_FIND_LOCAL_ONLY
+  can be passed into Tcl_GetVar() and Tcl_SetVar().
+
+7/25/96 (bug fix)
+  Fixed the "notebook" widget in the [incr Widgets] set.  The "index"
+  method now supports pattern matching and index names with spaces in
+  them.
+
+8/1/96 (bug fix)
+  Fixed destructor invocation so that if an object is being
+  destructed and you try to delete it again, it will report an
+  error.
+
+8/7/96 (bug fix)
+  Fixed the "inherit" command to make sure all names are really
+  valid classes.  Previously, trying to inherit from a proc would
+  dump core.
+
+8/29/96 (enhancement)
+  Integrated with itcl2.1+2 (tcl7.5p1/tk4.1p1).
+
+9/1/96 (bug fix)
+  Fixed the Itcl_RegisterC() procedure so that the same name can be
+  registered more than once, as long as it has the same function
+  pointer.
+
+9/7/96 (bug fix)
+  Fixed a bug in method access for protected methods.  There was a
+  problem when a base class defined a method, and a derived class
+  overloaded the method, and the method was accessed from the base
+  class namespace.  Added function Itcl_CanAccessMethod() to check
+  for overloaded methods and allow access accordingly.
+
+9/13/96 (bug fix)
+  Fixed the Itcl_RestoreInterpState() procedure so that the "errorCode"
+  variable is restored properly.  There was a problem when the
+  error code contained a list of elements.
+
+9/20/96 (bug fix)
+  Fixed a bug in the way namespaces were deleted.  The hash table of
+  child namespaces was being traversed while elements within it were
+  being deleted.  This caused a core dump when you tried to exit
+  the application with a command like "destroy .".
+
+9/28/96 (bug fix)
+  Fixed the way that errors are reported when a base class is constructed
+  with the wrong arguments.  Previously, the error message showed the
+  object creation command like "wrong # args: should be Foo name val1 val2".
+  Now, it shows the base class constructor name, so it is more obvious
+  where the error is coming from.
+
+10/5/96 (bug fix)
+  Fixed a bug in constructor invocations.  All base class constructors
+  are now invoked properly, even if a derived class does not have a
+  constructor.
+
+10/9/96 (enhancement)
+  Added proper support for safe interpreters.  You can now use namespace
+  commands in a safe interpreter, and you can load Itcl as a safe package.
+
+10/11/96 (bug fix)
+  Fixed a core dump with "namespace foo {info locals}".  The namespace
+  call frame was not being set up properly, so the local variable table
+  was garbage.  Normally, you don't access local variables at the
+  namespace level.  But now it is fixed.
+
+10/14/96 (bug fix)
+  Fixed the Itcl_RegisterC() procedure so that each interpreter has
+  its own list of symbolic function names.  This avoids global data
+  and makes more sense for people using multiple interpreters.
+
+10/20/96 (bug fix)
+  Fixed variable lookup so that when you try to access a variable
+  like "::foo::x" inside of a procedure, you get an error instead
+  of a local variable named "::foo::x".  Variables like this need
+  to be declared global.
+
+10/22/96 (enhancement)
+  Fixed the built-in "isa" method to autoload class definitions as
+  needed for each "isa" test.  If a class is not defined and cannot
+  be autoloaded, it is an error.
+
+10/26/96 (enhancement)
+  Fixed "delete object" command so that objects can be deleted
+  using scoped values for the object name.
+
+10/29/96 (enhancement)
+  Integrated with itcl2.1+5 (tcl7.6/tk4.2).
+
+11/1/96 (porting)
+  Removed "plus" and "dash" patches to allow for porting to Windows95
+  and Macintosh platforms.  Simplified configuration and makefiles
+  for Unix platforms.
+
+11/4/96 (installation)
+  Fixed configuration and makefiles to support building in a
+  separate directory.  There is a bug in "autoconf" which prevents
+  this from going smoothly.  You have to copy all of the configure
+  scripts to a separate tree (e.g., using a tar file), and then build.
+
+11/5/96 (bug fix)
+  Fixed a bug in the way variables were reported by the built-in
+  "info" command for classes and objects.  Private variables in
+  a base class were incorrectly reported as "<undefined>".  They
+  are now reported properly.
+
+11/10/96 (bug fix)
+  Fixed the "this" variable so that if an object is deleted while it
+  is still in use, its name is properly reported as the null string.
+
+11/10/96 (bug fix)
+  Fixed the way namespaces are deleted so that the "::errorInfo" and
+  "::errorCode" variables remain intact until everything else has been
+  destroyed.  These variables are needed if any errors are encountered
+  as an interpreter is being destroyed.
+
+11/11/96 (installation)
+  Split the "itclConfig.sh" file into separate "itclConfig.sh" and
+  "itkConfig.sh" files.
+
+11/11/96 (installation)
+  Fixed the package installation to conform to tcl7.6/tk4.2.  The
+  pkgIndex.tcl files are now stored in the library directory for
+  each package.
+
+11/13/96 (enhancement)
+  Overhauled the scrolledcanvas widget.  It is now about an order of
+  magnitude faster.
+
+11/14/96 (enhancement)
+  Overhauled the [incr Widgets] "catalog" demo.  When you pick any
+  mega-widget class, the demo displays an example widget, the code
+  used to build it, the class hierarchy, and the man page.
+
+11/23/96 (bug fix)
+  Fixed the way the "inherit" command autoloads class definitions.
+  Previously, it invoked the class name as a command.  Now, it uses
+  the "auto_load" command.
+
+11/23/96 (installation)
+  Fixed the "configure" files to use "mkinstalldirs" instead of "mkdir"
+  so that the entire distribution can be built in a separate directory
+  starting with a single "configure" file.  Fixed the way the distribution
+  is created to make this patch for each new distribution.
+
+11/23/96 (installation)
+  Fixed the iwidgets installation so that the installed files (instead
+  of the source files) are chmod'd to have the proper permissions.
+
+11/29/96 (installation)
+  Fixed iwidgets (combobox, optionmenu, shell) so that they don't rely
+  on "tkwait visibility" before doing a grab.  On the Macintosh, this
+  only works the first time a window is mapped.  After that, this
+  command does not return control, even when a window is remapped.
+
+11/30/96 (bug fix)
+  Fixed "tk4.2/library/menu.tcl", moving a comment in a switch statement
+  above the default case into the default case.  When the comment is
+  above the case, it is treated as a list element and a parsing error
+  occurs.  You can trigger the error with a command like "tkMenuFind . x".
+  When the comment is inside the case, everything works fine.
+
+11/30/96 (bug fix)
+  Fixed a memory error that occured when an interpreter was destroyed.
+  One namespace (e.g., base class) caused another (e.g., derived class)
+  to be destroyed.  Then the namespace was destroyed again later on.
+  Now, as we iteration through the safeCopy list, we check to make
+  sure the namespace still exists.
+
+11/30/96 (bug fix)
+  Fixed entryfield mega-widget to avoid using the "%s" state field
+  for key presses.  It was using it to find out whether or not Control,
+  Shift, or Alt keys were being held down during a key press.  But this
+  field confuses Alt with NumLock when you go between Unix and Windows
+  platforms.  The entryfield appeared to be broken when NumLock was
+  turned on.  Nothing is lost if we simply ignore it and let all
+  keypresses through.
+
+12/1/96 (installation)
+  Fixed the way that "pkgIndex.tcl" files are built for Itcl/Itk.
+  When you build with "--enable-shared", the package files load the
+  shared library, but when you build without, the package files
+  use {load "" Itcl} to get the static package.  This lets you
+  do "package require" commands in slave interpreters, even if
+  things were built with static packages.
+
+12/1/96 (bug fix)
+  Fixed how namespaces are deleted when an interpreter is deleted.
+  Previously, namespaces were deleted after the assocData for the
+  interp.  If any background errors occurred while the namespace
+  was being deleted, they caused seg faults later on.  Now, the
+  global namespace is cleared (but not deleted) *before* deleting
+  the assocData.  Any background errors are deleted, and the global
+  namespace is finally deleted at that point.
+
+12/2/96 (enhancement) JCI
+  Defined "tkOpenDocument" in tk.tcl so that Macintosh users can
+  double-click on an [incr Tcl] source file, and itkwish will be
+  invoked to execute it.
+
+12/2/96 (bug fix)
+  Fixed the entryfield widget so that characters like: " [ ] { } \ &
+  are substituted properly into the "%c" field when doing character
+  validation.
+
+12/2/96 (enhancement)  **POTENTIAL INCOMPATIBILITY**
+  Changed the HTML parsing in the scrolledhtml widget to speed it up.
+  Also, changed the "-feedback" option so that it appends two numbers
+  on the end of the feedback command:  the current position and the
+  maximum position.  This frees the caller from having to figure out
+  the maximum position.
+
+12/2/96 (enhancement)
+  Added "-borderwidth", "-relief" and "-elementborderwidth" options
+  to the feedback widget, so you can control its appearance a little
+  better.
+
+==========================================================================
+ ------------------------ RELEASE 2.2 - 12/3/96 -------------------------
+==========================================================================
+
+12/12/96 (installation)
+  Fixed "iwidgets.tcl" initialization file to rely on the environment
+  variable IWIDGETS_LIBRARY (if it exists), and use the compiled-in
+  path as a last resort.  That way, the user can override the iwidgets
+  library with an environment variable setting.
+
+12/12/96 (installation)
+  Fixed the "catalog" demo for [incr Widgets] to help support Windows3.1.
+  The code is now arranged to make it easy to translate between the
+  real demo names and DOS 8.3 file names.
+
+12/13/96 (bug fix)
+  Added a "usual" test for all of the [incr Widgets].  This checks to
+  make sure that there is a bit of "usual" code for each widget, that
+  the options in the "usual" code are valid, and that all of the
+  widgets mix together without errors.
+
+4/11/97 (enhancement)
+  Merged in patches for tcl7.6p2/tk4.2p2 (jingham)
+
+5/17/97 (bug fix)
+  Fixed itk::Toplevel to have the hull keep the -takefocus option.
+  This fixed a problem with the tab ring in iwidget dialogs.
+
+6/1/98 (complete rewrite)
+  Rewrote the entire package to work with Tcl8.0 namespaces and the
+  new byte code compiler.
+
+==========================================================================
+ ----------------------- RELEASE 3.0a1 - 6/16/98 ------------------------
+==========================================================================
+
+7/23/98 (bug fix)
+  Removed references to Tcl internal macros such as TclDecrRefCount.
+  This was causing problems under Windows, since those macros use
+  global variables that are not available outside of tcl80.dll.
+
+7/23/98 (bug fix)
+  Added my own definition of the assert macro.  Since Tcl/Tk doesn't
+  use assert, the default version was causing build problems with
+  gcc.
+
+7/27/98 (configuration change)
+  Changed all "configure" scripts to rely on tclConfig.sh and tkConfig.sh
+  for compile options.
+
+7/27/98 (configuration change)
+  Changed the initialization process for Itcl/Itk.  Both packages now
+  key off of tcl_library to find their initialization scripts.
+
+7/27/98 (configuration change)
+  Removed IWIDGETS_LIBRARY environment variable from the Iwidgets
+  package.  If Iwidgets is installed properly, this variable is not
+  needed.
+
+7/29/98 (configuration change)
+  Added Scott Stanton's patch to the initialization process.  The
+  last-ditch installation directory is no longer compiled into the
+  itcl sources.  Instead, itcl searches for the installation directory
+  starting from $tcl_library.  Also, if the variable itcl::library is
+  set before loading itcl, then itcl aborts the search and uses that
+  as its library directory.
+
+7/30/98 (Macintosh)
+  Added Jim Ingham's patches for the Mac.
+
+7/30/98 (configuration)
+  Fixed Makefiles for Iwidgets 2.2/3.0 to avoid a problem while
+  installing the demo images/html.  The INSTALL_DATA program may
+  have a relative name (../../config/install-sh) so we must be
+  careful to "cd" into library, demos, etc., but not into other
+  directories below them.
+
+8/8/98 (bug fix)
+  Fixed "namespace import" to work with autoloading.  If you
+  execute "namespace import iwidgets::*", the auto_import proc
+  will create stubs for all of the iwidgets commands.  Executing
+  one of the stubs triggers autoloading for the appropriate command.
+
+8/10/98 (bug fix)
+  Integrated changes from Scriptics team to work seamlessly with
+  Tcl 8.0.3.
+
+8/10/98 (bug fix)
+  Fixed the iwidgets::optionmenu to work properly under Windows 95/NT.
+  Extended the "get" method in iwidgets3.0 so that you can query
+  existing elements from an optionmenu.
+
+==========================================================================
+ ------------------------ RELEASE 3.0 - 8/11/98 -------------------------
+==========================================================================
+
+8/16/98 (bug fix)
+  Fixed the windows pkgIndex.tcl files for Itcl and Itk to properly
+  load their .dll.  Also fixed iwidgets/catalog to package require
+  Itcl, Itk, and to import ::itcl::* to get "class" defined. (BW)
+
+12/21/99 (bug fix)
+  Fixed tests for auto_mkindex to work properly outside of itkwish.
+  Tests now include "namespace import itcl::*" instead of assuming that
+  this behavior is built into the wish.
+
+4/18/00 (feature enhancement)
+  Fixed itcl::find to find classes and objects in *all* namespaces
+  in the interpreter.  Until this fix, the itcl::find command would
+  report only the objects in the active namespace or the global
+  namespace.  Being able to find classes/objects in all namespaces
+  makes debugging easier.  Thanks to Chad Smith for pushing to make
+  this change happen.
+
+6/26/00 (bug fix)
+  Fixed Itcl_ClassVarResolver so that the formal parameters in a
+  method/proc take precedence over class data members.
+
+6/30/00 (bug fix)
+  Fixed all itcl/itk/iwidgets3.0.0 tests to run cleanly with the new
+  tcltest package.
+
+7/1/00 (bug fix)
+  Fixed "itk_component delete" so that the composite option list is
+  cleaned up whenever a component is deleted.  For example, suppose
+  a component is the sole contributor of -font.  When that component
+  is removed via "itk_component delete", the -font option goes away
+  as well.  Also fixed the handling of the itk-delete-* binding for
+  the component.  When the component is removed, the binding tag
+  is also removed by itk::remove_destroy_hook.
+
+7/5/00 (bug fix)
+  Fixed the check done during object creation to avoid clobbering
+  existing commands.  Previously, itcl would look for any command--
+  in the local *and* global namespace--that might be clobbered.
+  Now, it looks for commands only in the local namespace, since
+  those are the only ones that could truly be clobbered.
+
+7/5/00 (cleanup)
+  Removed obsolete Makefile/configure files in the various "unix"
+  directories.  Makefiles and configure files now reside one level
+  above, in the standard TEA place.
+
+7/11/00 (stubs cleanup) <welch@ajubasolutions.com>
+  Fix the build so static links do not use the stubs library. 
+
+8/1/00 (stubs cleanup) <davygrvy@ajubasolutions.com>
+  Added missing declarations for Itcl_InitStubs and Itk_InitStubs
+  and simplified how Itcl Stubs are set in Initialize() of itk_cmds.c
+
+8/1/00 (Makefile) <welch@ajubasolutions.com>
+  Added config/installFiles.tcl and changed the various Makefile.in
+  files to use this instead of install-sh.  installFiles.tcl can
+  optimize out a copy if the target file is already up-to-date.
+  This eliminates conflicts from parallel builds on different platforms
+  where one build is zipping up the installed files while another platform
+  is copying platform-independent files (i.e., the iwidgets demos).
+
+8/4/00 (stubs cleanup) <davygrvy@ajubasolutions.com>
+  Fixed dll linkage problem with the prototypes of the 2 XX_InitStubs
+  functions use. I copied the core too literally.  Stubs libraries are
+  always static, so there's no need to play games with __declspec on
+  windows.
+
+8/7/00 (stubs cleanup) <welch@ajubasolutions.com>
+  Cleaned up use of Itcl_InitStubs by Itk.  Finally got it right after
+  much flailing about.  itcl.h has the correct definitions, and
+  itclStubLib.c has the correct #ifdefs.
+  Also nuked extra definitions of itclStubsPtr from the itk_cmds.c file.
+
+8/17/00 (more stubs cleanup) <davygrvy@ajubasolutions.com>
+  Tcl_InitStubs in itcl/generic/itcl_cmds.c was using the TCL_VERSION macro
+  set by the tcl.h header.  Changed it to be "8.1" instead as it doesn't
+  matter unless Itcl needs special/new features of the core it's header is
+  from.  But it doesn't..  so hard code it for an 8.1 minimum to make the
+  Itcl library have a better version range with the core as specific
+  version tracking with the core isn't needed (at this time).
+
+==========================================================================
+ ------------------------ RELEASE 3.2 - 08/18/00 ------------------------
+==========================================================================
+
+9/22/00 (stubs cleanup) <davygrvy@ajubasolutions.com>
+  Itcl_InitStub prototype in itcl/generic/itcl.h was getting name mangled
+  by c++ compilers.  Fixed with an 'extern "C"' appropriately applied.
+
+4/07/01 (bug fix) <davygrvy@pobox.com>
+  Tcl's internal header, tclInt.h, in 8.4a2 got a small change in the Command
+  structure that needed 2 changes in Itcl to resolve.  1) #if/#else/#endif blocks
+  added in itcl_class.c and itc_ensemble.c allowing Itcl to compile. 2) added
+  a global variable called itclCompatFlags that's sets a flag in Itcl_Init()
+  that will modify the logic around access to cmdPtr->flags/deleted.  This
+  way, any core compile will yield a fully forward/backward compatible
+  binary (correct logic set at runtime).
+
+5/22/01 (bug fixes) <davygrvy@pobox.com>
+  makefile.vc lives again!  Brought back from it's death to conquere windows
+  once again for users who prefer to avoid (or can't understand or get the tools
+  installed for) the TEA build system.
+
+  Also, numerous fixes relating to Kevin Kenny's Tcl API mods for better CONST
+  support.  The latest headers for Tcl where throwing warnings all over the place
+  about type errors.  I fixed the sources, but haven't checked against older
+  headers yet.
\ No newline at end of file
diff --git a/itcl/itk/ChangeLog b/itcl/itk/ChangeLog
new file mode 100644 (file)
index 0000000..777cced
--- /dev/null
@@ -0,0 +1,1902 @@
+2005-03-25  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * Makefile.in:                           OS X patches from Steffen
+       * itcl/generic/itcl_cmds.c (initScript):
+       * itk/generic/itk_cmds.c (initScript):
+
+2005-03-18  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/Makefile.in, itk/Makefile.in (AR): use @AR@
+       * tclconfig/tcl.m4, itcl/configure, itk/configure: update to TEA 3.2
+
+2005-02-14  Jean-Claude Wippler  <jcw@equi4.com>
+
+       * configure.in, tclconfig/tcl.m4: update to TEA 3.2
+       * configure, itcl/configure, itk/configure: regen with autoconf 2.59
+
+2005-02-11  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/generic/itcl_methods.c (Itcl_GetMemberCode): fixed c99 var
+       decl from previous patch.
+
+2005-02-10  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/generic/itclInt.h:      [Bug 1115085] (dejong) Fix crash
+       * itcl/generic/itcl_bicmds.c:  with TclInitCompiledLocals reliance
+       * itcl/generic/itcl_methods.c: on bytecode ptr type
+
+2005-01-24  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/configure, itk/configure: update to TEA 3.1 r1.54, removes
+       * configure, tclconfig/tcl.m4:   DBGX, updates default opt levels
+
+2004-12-11  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itc_class.c: instansiation of an object must return
+       an FQN.
+
+2004-11-23  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itcl_cmds.c:  Fix for [Bug 1047544]  Forward loading
+       * itcl/generic/itcl_util.c:  from an 8.4 build loading into in 8.5
+       is not possible at this time.
+
+2004-11-11  David Gravereaux <davygrvy@pobox.com>
+
+       * itk/Makefile.in: Possible fix for 1049579, but untested.
+
+2004-09-21  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itcl_utils.c: Error code internal flag abuse
+       fixed. From Don Porter. [Bug 1032210]
+
+       * makefile.vc: Some VC7 support.
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc: Had to include the win directory to Tcl's
+       includes since Tcl has had an order change recently.
+
+2004-09-19  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/doc/*.n: Tree name for commands changed from "[Incr Tcl]"
+       to "[Incr Tcl] Commands".  Started to add exported API docs under
+       the new "[Incr Tcl] Library Procedures" tree.
+
+       * itcl/doc/RegisterC.3 (new): docs for Itcl_RegisterC and
+       Itcl_RegisterObjC.  More to be added over time.
+
+2004-09-07  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/configure, itk/configure, tclconfig/tcl.m4: updated TEA m4
+       to support evc4 Win/CE builds
+
+2004-08-31  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/doc/body.n
+       * itcl/doc/class.n:
+       * itcl/doc/configbody.n::
+       * itcl/doc/delete.n:
+       * itcl/doc/ensemble.n:
+       * itcl/doc/find.n:
+       * itcl/doc/is.n:
+       * itcl/doc/local.n:  Updated code examples to use the fully
+       qualified Itcl command names.  A few references to the itcl
+       namespace command are still there and need to be changed at
+       some point.
+
+       * itk/doc/Archetype.n:
+       * itk/doc/Toplevel.n:
+       * itk/doc/usual.n:
+       * itk/doc/Widget.n: Ditto as above.
+
+2004-08-17  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * */Makefile.in (install-doc): sed in man.macros on doc install
+       [Bug 631378] (rmax)
+
+       * */Makefile.in (VPATH): move $(srcdir)/unix to front (unused) to
+       get around bug in autoconf that strips $(srcdir) from first
+       element when building in the source directory.
+
+       * itk/configure:    remove extraneous --with-itcl AC macro
+       * itk/configure.in: TEA_PATH_CONFIG handles this for us
+
+       * itcl/itclConfig.sh.in:            must be absolute path to
+       * itcl/configure.in (itcl_SRC_DIR): configure in the srcdir.
+       * itcl/configure:                   [Bug 582951]
+
+2004-08-10  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * README, TODO: version, info updates
+
+       * Makefile.in, configure, configure.in: Update to TEA 3.1
+       * tcl.m4 (removed):              cleanup build system to only
+       * config/config.guess (removed): provide the parts that are
+       * config/config.sub (removed):   necessary to itcl and itk.
+       * config/install-sh (removed):   Update to 3.3.0 as version
+       * tclconfig/install-sh (added):  throughout.
+       * tclconfig/tcl.m4 (added):
+       * itcl/generic/itcl.h:
+       * itcl/Makefile.in, itcl/aclocal.m4, itcl/configure:
+       * itcl/configure.in, itcl/itclConfig.sh.in, itcl/pkgIndex.tcl.in:
+       * itk/Makefile.in, itk/aclocal.m4, itk/configure, itk/configure.in:
+       * itk/itkConfig.sh.in, itk/pkgIndex.tcl.in, itk/generic/itk.h:
+
+       * itcl/mac/MW_ItclHeader.pch (removed)       Removed Mac Classic
+       * itcl/mac/itclMacApplication.r (removed)    sources.  There were
+       * itcl/mac/itclMacLibrary.r (removed)        no longer maintained,
+       * itcl/mac/itclMacResource.r (removed)       and Tcl has dropped
+       * itcl/mac/itclMacTclCode.r (removed)        ongoing Mac Classic
+       * itcl/mac/itclStaticApplication.r (removed) support as well (in
+       * itcl/mac/pkgIndex.tcl (removed)            favor of OS X).
+       * itk/mac/MW_ItkHeader.pch (removed)
+       * itk/mac/itkMacApplication.r (removed)
+       * itk/mac/itkMacLibrary.r (removed)
+       * itk/mac/itkMacResource.r (removed)
+       * itk/mac/itkMacTclCode.r (removed)
+       * itk/mac/itkStaticApplication.r (removed)
+       * itk/mac/pkgIndex.tcl (removed)
+       * itk/mac/tclIndex (removed)
+
+2004-04-29  davygrvy
+
+       * itcl/tests/import.test: fixed [subst] problem.
+
+       * itcl/win/makefile.vc:
+       * itcl/win/nmakehlp.c:
+       * itk/win/makefile.vc:
+       * itk/win/nmakehlp.c:
+       * rules.vc: brain dump
+
+       * itcl/Makefile.in: test target now calling tcltest correctly
+
+2004-02-13  davygrvy
+       * itcl/tests/all:
+       * itcl/tests/defs (deleted): This serves no purpose today with
+       tcltest being so powerful.
+
+       * itcl/tests/import.test: more load precision with
+       ::tcltest::loadTestedCommands in sub interps.
+
+       * itcl/tests/mkindex.itcl:
+       * itcl/tests/mkindex.test:
+       * itcl/tests/tclIndex: reference to itcl_class removed from
+       mkindex.test so 1.3 can now pass.
+
+2004-02-12  davygrvy
+       * itcl/win/makefile.vc:
+       * itcl/win/rc/itcl.rc: rc file work
+
+       * itcl/tests/all.tcl:
+       * itcl/tests/import.test:
+       * itcl/tests/mkindex.test: some cleanup.
+
+       * itcl/generic/itclInt.h: commentary
+
+       * itcl/win/makefile.vc: now runs the test suite, OMG!
+
+       * itcl/tests/all.tcl:
+       * itcl/tests/basic.test:
+       * itcl/tests/body.test:
+       * itcl/tests/chain.test:
+       * itcl/tests/delete.test:
+       * itcl/tests/ensemble.test:
+       * itcl/tests/import.test:
+       * itcl/tests/info.test:
+       * itcl/tests/inherit.test:
+       * itcl/tests/interp.test:
+       * itcl/tests/local.test:
+       * itcl/tests/methods.test:
+       * itcl/tests/mkindex.test:
+       * itcl/tests/namespace.test:
+       * itcl/tests/protection.test:
+       * itcl/tests/scope.test: Modified test suite to use -loadfile and
+       ::tcltest:: loadTestedCommands in each test file.
+
+2003-12-24  davygrvy
+       * itcl/generic/itcl.h:
+       * itcl/generic/itcl_ensemble.c:
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_migrate.c:
+       * itcl/generic/itcl_util.c:
+       * itcl/win/makefile.vc: Changed deprecated 'panic' to 'Tcl_Panic'.
+
+       * itcl/generic/itclStubLib.c:
+       * itk/generic/itkStubLib.c:
+       * itk/win/makefile.vc: Small 'const' issue with Tcl_PkgRequireEx
+       under 8.1.0
+
+2003-12-23  davygrvy
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc:
+               8.0 build needs a different output name for the binaries.
+
+       * itcl/win/nmakehlp.c:
+       * itk/win/nmakehlp.c:
+       * rules.vc: sync'd to Tcl.
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclStubLib.c:
+       * itk/generic/itk.h:
+       * itk/generic/itkStubLib.c: Some It*_InitStubs adjustments for CONST.
+
+       * itcl/win/makefile.vc: temp help merge script should be deleted
+       after use.
+
+       * tools/genStubs.tcl: we need this.
+
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc: install target bugs fixed
+
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc:
+       * pkg.vc: Uses new features of nmakehlp to get the version strings
+       from header files without the use of hardcoded values.
+
+       * itk/generic/itk_archetype.c:
+       * itk/generic/itk_cmds.c:
+       * itk/win/makefile.vc: changes to support building against 8.0.5
+
+       * itcl/doc/itclsh.1:
+       * itcl/mac/tclMacAppInit.c:
+       * itk/doc/itkwish.1:
+       * itk/mac/tkMacAppInit.c: custom shell no longer exists
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/win/makefile.vc:
+       * itcl/win/rc/itcl.rc:
+       * itk/generic/itk.h:
+       * itk/generic/itkDecls.h:
+       * itk/win/makefile.vc:
+       * makefile.vc: winhelp targets fixed and Stubs table issues resolved.
+
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc: some pkgIndex.tcl generation work.
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itcl_bicmds.c:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_ensemble.c:
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_objects.c:
+       * itcl/generic/itcl_util.c:
+       * itcl/win/makefile.vc:
+       * itk/generic/itk_cmds.c:
+       * itk/win/makefile.vc: Now builds against Tcl 8.0!  Unbeleivable,
+       but true :) Tcl bug #803489 now suppressed with grotesque macros
+       in itclInt.h
+
+       * itcl/win/makefile.vc:
+       * itcl/win/rc/itcl.rc:
+       * itk/win/rc/itk.rc:
+       * itk/win/rc/itk.rc: some resource bugs fixed
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclInt.h: moved some backward compat macros to
+       itclInt.h
+
+       * itcl/win/nmakehlp.c:
+       * itk/win/nmakehlp.c: prevent static buffer overflow (Doh!)
+
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itcl_cmds.c:
+               changes to support Itk building against 8.0.5
+
+2003-12-22  davygrvy
+       * itcl/generic/itcl.h:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_objects.c:
+       * itcl/generic/itcl_util.c:
+       * itk/generic/itk_archetype.c:
+       Now builds with 8.3 regarding CONST84 trims on some Tcl API calls.
+
+       * itcl/generic/itcl_cmds.c:
+       * itk/generic/itk_cmds.c:
+       Because the Tcl_Namespace APIs in Tcl have moved to the public
+       space in 8.5, the stub slots have shifted.  This now causes Itcl
+       when built against 8.5 to core when loaded into 8.4.  What genius
+       you developers!  The absolute first rule with Stubs is not to EVER
+       move the slots, but now you did.  Previously, one could build Itcl
+       against 8.4 and load into any core 8.1+.  Now we can't do this.
+       Gee, thank you all for the support...
+
+       Now, what we compile against is the lowest we can load
+       into.. Sorry!  send heated complaints to tcl-core@lists.sf.net
+
+2003-12-17  davygrvy
+       * itcl/generic/itcl.h:
+       Use fancy STRINGIFY macros for version string.
+
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_objects.c:
+       Needed to fix usage of Itcl_DecodeScopedCommand as rCmdPtr always
+       needs to be freed.
+
+       * itcl/generic/itcl_cmd.c (Itcl_FindClassesCmd) : Memory leaking
+       Tcl_Obj plugged.  [Bug 738189]
+
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itcl_util.c:
+       Itcl_DecodeScopedCommand now fixed.
+
+       * itcl/generic/itcl.decls:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_ensemble.c:
+       * itcl/generic/itcl_linkage.c:
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_objects.c:
+       * itcl/generic/itcl_util.c:
+       full brain dump.  All CONST issues fixed except for
+       Itcl_DecodeScopedCommand.  Will address this next.
+
+2003-04-04  andreas_kupries
+       * itcl/configure:
+       * itk/configure:
+       * tcl.m4:
+       * itcl/configure.in:
+       * itk/configure.in:
+       * tclconfig/tcl.m4: Updated to newest tcl.m4, regenerated configure's.
+
+2003-01-28  davygrvy
+       * itcl/configure:
+       * itk/configure:
+       * itk/configure.in:
+       Make sure threading is always on for compiling.
+
+2002-10-16  andreas_kupries
+       * itcl/configure:
+       * itk/configure:
+       * tcl.m4: tcl.m4 typo correction, Regen'd. aix fix
+
+2002-10-15  andreas_kupries
+       * itcl/configure:
+       * itk/configure:
+       * tcl.m4: Regen'd configure for new tcl.m4.
+
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in:
+       Changed to propagate an initial CFLAGS value
+       to the final definition. A TEA condition (SHARED_BUILD == 1)
+       squashed it, causing it the build system to loose the
+       +DAportable we specify for the AS PA-RISC2.2 build host. This is
+       a problem for _all_ TEA and TEA 2 based configure files.
+
+2002-10-15  hobbs
+       * itcl/configure:    move the CFLAGS definition into
+       * itcl/configure.in: TEA_ENABLE_SHARED and make it pick up the env
+       * itk/configure:     CFLAGS at configure time.
+       * itk/configure.in:
+       * tcl.m4:
+
+2002-09-29  davygrvy
+       * itcl/win/makefile.vc:
+       needed `if !exist` logic for the non-8.4 case.
+
+       * itcl/win/makefile.vc:
+       Use virtual base address rule from the master file contained in
+       the Tcl source.
+
+       * itcl/library/itcl.tcl:
+       Reference to [itcl_class] removed.
+
+2002-08-12  andreas_kupries
+       * itcl/generic/itcl_class.c (ItclDestroyClassNamesp): Applied itcl
+       patch 593112 provided by Reinhard Max
+       <rmax@users.sourceforge.net>. This fixes the segfault in itcl bug
+       577719, reported by Simon White <s_a_white@users.sourceforge.net>.
+
+2002-08-11  davygrvy
+       * itcl/generic/itcl_class.c (Itcl_ClassVarResolver,
+       Itcl_ClassCompiledVarResolver):
+       * itcl/generic/itcl_object.c (Itcl_ScopedVarResolver,
+       ItclTraceThisVar):
+       * itcl/generic/itcl_parse.c (Itcl_ParseVarResolver):
+       * itcl/generic/itclInt.decls:
+       Signiture changes to match 8.4b2 CONST'ification of the
+       Tcl_ResolveVarProc typedef. Stubs slot positions nor sizes
+       have changed -- just the sigs.
+
+       * itk/win/makefile.vc:
+       more install target fixes
+
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itclStubInit.c:  Re-gen from modified genStubs.tcl
+       for the special TCL_EXTERN macro changes that Itcl has.
+
+       * itk/generic/itk.h: speling error.
+
+       * README.vc.txt: This no longer is needed.
+
+       * itcl/generic/itcl.h: Borland TCL_EXTERN support revistited and
+       refreshed.
+
+       * itcl/win/makefile.vc:
+       * itcl/Makefile.in: Removed itcl_obsolete.c from the build
+       instructions.
+
+       * itcl/generic/itcl_obsolete.c (deleted):
+       * itcl/generic/itcl_cmds.c:  Removed old [itcl_class] command
+       and old backward support that came with it.
+
+       * itk/generic/itk.h:
+       * itk/generic/itcl.h: Borland TCL_EXTERN support revistited and
+       refreshed.
+
+       * itk/generic/itkDecls.h:
+       * itk/generic/itkStubInit.c: regenerated for newer Borland TCL_EXTERN
+       support refreshing.
+
+       * itk/generic/itk_option.c (Itk_TraceClassDestroy):
+       Signiture change to match 8.4b2 CONST'ification.
+
+       * itk/generic/itk_archetype.c: CONST`ification updates.
+
+       * itk/win/makefile.vc: genstubs target fixed.
+
+       * itcl/doc/itcl_class.n:
+       * itcl/doc/itcl_info.n: old docs for old commands removed, removed.
+
+       * itk/win/makefile.vc: install target fixed
+
+2002-07-17  hobbs
+
+       * itcl/itclConfig.sh.in: dupped vars to have both itcl_* and
+       ITCL_* to support apps that used old-style itclConfig.sh.
+
+2002-06-13  davygrvy
+       * itk/library/Toplevel.itk (destructor):
+       * itk/library/Widget.itk (destructor): Remove the
+       hull component after possibly destroying the hull.
+       Destroy any component that still exists after
+       destroying the hull since it must have been
+       created outside the hull.
+       * itk/tests/toplevel.test:
+       * itk/tests/widget.test: Test that a component
+       outside the hull is destroyed when the mega-widget
+       is destroyed. Also check for case where one external
+       widget contains another.
+       [Patch 515010]
+
+2002-05-14  davygrvy
+       * itk/generic/itk_archetype.c:
+       * itk/library/itk.tcl:
+
+2002-05-14  Mo DeJong  <mdejong@users.sourceforge.net>
+
+       * itk/generic/itk_archetype.c (ArchComponent, Itk_ArchCompDeleteCmd,
+       Itk_CreateArchComponent, Itk_DelArchComponent): Save a copy
+       of the window path name in the ArchComponent struct and use
+       it in the Itk_ArchCompDeleteCmd method. The old code was
+       invoking Tk_PathName(tkwin) on a Tk_Window which lead to
+       a memory access on memory that has already been free'd
+       when the widget was destroyed.
+       * itk/library/itk.tcl (itk::remove_destroy_hook): Don't attempt
+       to remove the widget binding if the widget has already been
+       destroyed.
+
+2002-05-02  davygrvy
+       * itcl/configure:
+       * itk/configure:
+       re'gened with autoconf 2.13-4
+
+2002-04-25  davygrvy
+       * itcl/win/makefile.vc:
+       install bug set pkgIndex.tcl to load itcl33.dll.dll.  corrected.
+
+       * itcl/doc/is.n:
+       Changed "last update" to be 3.3 instead 3.2
+
+       * itcl/generic/itcl_cmds.c:
+       Patch from Brett Schwarz for not exporting itcl::is [Patch
+       548757]
+
+       * itcl/doc/is.n:
+       small format fix.
+
+2002-04-20  davygrvy
+       * config.vc:
+       * itcl/win/.cvsignore:
+       * itcl/win/makefile.vc:
+       * itcl/win/nmakehlp.c:
+       * itcl/win/toaster.bmp:
+       * makefile.vc:
+       * rules.vc:
+       makefile.vc changes.
+
+       * pkg.vc:
+       missed this file..
+
+       * itcl/configure.in:
+       * itcl/generic/itcl.h:
+       With a new command, we need to bump up the version to 3.3.0
+
+       * itcl/generic/itcl_objects.c:
+       I missed a CONST for ItclTraceThisVar()
+
+       * itcl/doc/is.n:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itclStubInit.c:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/tests/basic.test:
+       Added the itcl::is command from Brett Schwarz.
+       Untested by me, but looks great.
+       [Patch 546343 546344 546345 546346]
+
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_objects.c:
+       * itk/generic/itk_option.c:
+       minor changes for CONST'ification project.
+
+       * itk/win/.cvsignore:
+       * itk/win/makefile.vc:
+       * itk/win/nmakehlp.c:
+       * itk/win/toaster.bmp:
+       makefile.vc changes to match the core.
+
+       * itk/configure.in:
+       missed this file, too
+
+2002-04-11  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/configure:
+       * itk/configure:
+       * tcl.m4: Enabled COFF as well as CV style debug info with
+       --enable-symbols to allow Dr. Watson users to see function info.
+       More info on debugging levels can be obtained at:
+       http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp
+
+2002-04-03  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * */configure: regend
+       * configure.in: removed prefix default calls
+       * itcl/configure.in:
+       * itk/configure.in:
+       * tcl.m4: updated of TEA base
+
+       * itcl/tests/mkindex.test: corrected to work tests are run from a
+       different build dir
+
+       * itcl/Makefile.in: 
+       * itk/Makefile.in: updated to use DESTDIR for install everywhere
+       and added shell and gdb targets
+
+2002-04-01  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/Makefile.in (install-lib-binaries): 
+       * itk/Makefile.in (install-lib-binaries): ensure that dynamic
+       library is installed executable
+
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in: redid generation of itclConfig.sh (making it
+       work on Windows broke Unix).  Retested so that it is happy on
+       Windows and Unix (calls ${CYGPATH} only when necessary).
+
+2002-03-29  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * */configure: regenerated
+       * tcl.m4: updated from sample changes
+
+2002-03-28  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * configure:
+       * configure.in:
+       * tcl.m4:
+       * itcl/Makefile.in:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itcl/itclConfig.sh.in:
+       * itcl/pkgIndex.tcl.in:
+       * itcl/generic/itclStubLib.c:
+       * itcl/tests/all.tcl:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/pkgIndex.tcl.in:
+       * itk/tests/all.tcl:
+       * config/installFile.tcl (removed):
+       * config/mkinstalldirs (removed): Massive overhaul (and
+       simplification) of the build framework to adapt to TEA 2002
+       specs.  Dynamic libraries now install in the pkglibdir (before it
+       was libdir), itclConfig.sh is properly generated and itk uses it.
+       Stubs libraries are now correctly generated and used.  You can now
+       build and test itcl/itk against built but not installed Tcl/Tk.
+
+2002-03-27  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * configure:
+       * tcl.m4: corrected pointer to ldAix to use Tcl version and add
+       -lc for AIX builds
+
+       * itcl/configure: 
+       * itcl/configure.in: 
+       * itk/configure: 
+       * itk/configure.in: corrected to use SHLIB_LD_LIBS instead of
+       TCL_SHLIB_LD_LIBS.
+
+2002-03-02  Andreas Kupries <andreas_kupries@users.sourceforge.net>
+
+       * itcl/Makefile.in:
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itcl_bicmds.c:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_ensemble.c:
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_objects.c:
+       * itcl/generic/itcl_obsolete.c:
+       * itcl/generic/itcl_parse.c:
+       * itcl/generic/itcl_util.c:
+       * itk/Makefile.in:
+       * itk/generic/itk.decls:
+       * itk/generic/itk_archetype.c:
+       * itk/generic/itk_option.c: Applied SF patch #511035 (provided by
+         Don Porter <dgp@users.sourceforge.net>) to remove warnings
+         related to TIP 27.
+
+2002-01-16  Andreas Kupries <andreas_kupries@users.sourceforge.net>
+
+       * tcl.m4: Fix from patch #501979 applied.
+
+       * itcl/configure:
+       * itk/configure: Regenerated.
+
+2002-01-10  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itcl_cmds.c (Itcl_FindObjectsCmd, Itcl_FindClassesCmd):
+       optimized use of Tcl_Objs to remove the creation of new ones that ended
+       just being set to the interp's result.  Let it use the result obj
+       instead.  Changed a few Tcl_GetStringFromObj() calls to Tcl_GetString()
+       when a length int* isn't used.
+
+       * itcl/generic/itcl.h: fix from patch #501979 applied.
+
+2001-11-24  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclIntDecls.h:
+       * itk/generic/itk.h:
+       * itk/generic/itkDecls.h:
+       * itk/generic/itk.decls: Changed redefining the macro EXTERN to
+       making a new macro called TCL_EXTERN to get this Borland problem
+       squashed without breaking all headers included after itcl.h that
+       use the EXTERN macro.
+
+2001-11-05  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/tests/ensemble.test: fixed 1.5 to work with 8.4 updated
+       warning messages
+
+2001-10-29  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * configure:
+       * itcl/configure:
+       * itk/configure: regen'ed
+       * tcl.m4: changed MSSDK cygpath check to use pipe instead of
+       subshell to only occur at the right point.
+
+2001-10-25  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * configure:
+       * tcl.m4:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in: added Win64 build support.
+
+       * itcl/generic/itcl_methods.c (Itcl_GetMemberFuncUsage): corrected
+       casting of CONST char * to prevent compile warnings.
+
+       * itcl/generic/itcl_ensemble.c (CreateEnsemble, AddEnsemblePart):
+       made the <8.4 Tcl header version changes easier in the code.
+
+2001-10-24  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * itcl/generic/itcl_cmds.c (Itcl_FindObjectsCmd): fixed potential
+       crash where cmdName was never initialized
+
+2001-09-06  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itclIntDecls.h:
+       * itk/generic/itk.h:
+       * itk/generic/itkDecls.h:  EXTERN macro changed to support TIP#60
+       in draft form.  [Incr Tcl] will be the "successful implementation"
+       part of the TIP.
+
+2001-09-06  David Gravereaux <davygrvy@pobox.com>
+
+       * itcl/generic/itcl_util.c: Threading patch from "Haneef Mohammed"
+       <haneef@mindspringx.com>.
+       [Patch: 445670]
+
+       -=[ Incr Tcl/Tk 3.2.1 tagged as done. ]=-
+
+2001-06-22  David Gravereaux <davygrvy@pobox.com>
+
+       * tcl.m4: Added support for MacOS X [#435256]
+
+       * itk/win/makefile.vc: fixed a bad macro use in the genstubs target.
+
+       * itk/generic/itk_cmds.c: Added Itk_SafeInit().
+
+       * itk/generic/itk.decls:
+       * itk/generic/itkDecls.h:
+       * itk/generic/itkStubInit.c: Needed to add Itk_SafeInit() to the
+       Stubs table.  Regen'd Stubs table.
+
+2001-05-28  Andreas Kupries <andreas_kupries@users.sourceforge.net>
+
+       * itcl/Makefile.in:
+       * itk/Makefile.in:
+       * iwidgets/Makefile.in: Fixed installation of manpages, added
+         invocations of "basename" to create the correct paths into the
+         installation directories. Fixes [#427118].
+
+2001-05-25  davygrvy
+       * ChangeLog (new):
+       Auto-generated this from the output of `cvs log`.  This will be the
+       day-to-day reference of per-commits.  CHANGES will now be the digest
+       of the data in here.  Just like how Tcl does it.  Information from
+       iwidgets was not used.
+
+       * itk/generic/itk.h:
+       * itk/generic/itkStubLib.c:
+       * itk/generic/itk_cmds.c: added CONST to return type for
+       Itk_InitStubs() to match what Kevin Kenny is doing to Tcl.  Along
+       with a little lint cleaning regarding Stubs.
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclStubLib.c:
+       added CONST to return type for Itcl_InitStubs() to match what
+       Kevin Kenny is doing to Tcl
+
+2001-05-24  davygrvy
+       * README.vc.txt:
+       instructions how to use makefile.vc to build the package
+
+       * itcl/configure:
+       * itcl/configure.in:
+       * itcl/itclConfig.sh.in:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/itkConfig.sh.in:
+       Bug #427113
+
+2001-05-23  davygrvy
+       * itcl/win/makefile.vc:
+       added missing quotes around include paths.
+
+       * .cvsignore:
+       * configure:
+       * configure.in:
+       changed configure.in to the new iwidgets subdir.  Removed the older
+       references to iwidgets3.0.0 and iwidgets2.2.0
+
+       * configure:
+       this could be useful.
+
+       * itcl/.cvsignore:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/.cvsignore:
+       * itk/configure:
+       * itk/configure.in:
+       Updated patch level to 3.2.1 in prep for a release.
+
+       * itcl/win/makefile.vc:
+       * itcl/win/rc/itcl.rc:
+       yet another rc problem repaired
+
+       * itcl/win/makefile.vc:
+       rc problem repaired
+
+2001-05-22  davygrvy
+       * itcl/generic/itcl_objects.c:
+       * itcl/tests/interp.test:
+       patch #426205, self deleting class caused core dump.
+
+       * itk/generic/itk_archetype.c:
+       * itk/generic/itk_cmds.c:
+       Fix for Tcl_GetCommandName() now returning a CONST char *
+       from the changes Kevin Kenny is doing to the HEAD tcl code.
+       This hasn't been tested with older header files, yet.
+
+       * config.vc:
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc:
+       * itk/win/rc/itk.rc:
+       * makefile.vc:
+       makefile.vc actually works again.
+
+       * itk/win/rc/cursor00.cur:
+       * itk/win/rc/cursor02.cur:
+       * itk/win/rc/cursor04.cur:
+       * itk/win/rc/cursor06.cur:
+       * itk/win/rc/cursor08.cur:
+       * itk/win/rc/cursor0a.cur:
+       * itk/win/rc/cursor0c.cur:
+       * itk/win/rc/cursor0e.cur:
+       * itk/win/rc/cursor10.cur:
+       * itk/win/rc/cursor12.cur:
+       * itk/win/rc/cursor14.cur:
+       * itk/win/rc/cursor16.cur:
+       * itk/win/rc/cursor18.cur:
+       * itk/win/rc/cursor1a.cur:
+       * itk/win/rc/cursor1c.cur:
+       * itk/win/rc/cursor1e.cur:
+       * itk/win/rc/cursor20.cur:
+       * itk/win/rc/cursor22.cur:
+       * itk/win/rc/cursor24.cur:
+       * itk/win/rc/cursor26.cur:
+       * itk/win/rc/cursor28.cur:
+       * itk/win/rc/cursor2a.cur:
+       * itk/win/rc/cursor2c.cur:
+       * itk/win/rc/cursor2e.cur:
+       * itk/win/rc/cursor30.cur:
+       * itk/win/rc/cursor32.cur:
+       * itk/win/rc/cursor34.cur:
+       * itk/win/rc/cursor36.cur:
+       * itk/win/rc/cursor38.cur:
+       * itk/win/rc/cursor3a.cur:
+       * itk/win/rc/cursor3c.cur:
+       * itk/win/rc/cursor3e.cur:
+       * itk/win/rc/cursor40.cur:
+       * itk/win/rc/cursor42.cur:
+       * itk/win/rc/cursor44.cur:
+       * itk/win/rc/cursor46.cur:
+       * itk/win/rc/cursor48.cur:
+       * itk/win/rc/cursor4a.cur:
+       * itk/win/rc/cursor4c.cur:
+       * itk/win/rc/cursor4e.cur:
+       * itk/win/rc/cursor50.cur:
+       * itk/win/rc/cursor52.cur:
+       * itk/win/rc/cursor54.cur:
+       * itk/win/rc/cursor56.cur:
+       * itk/win/rc/cursor58.cur:
+       * itk/win/rc/cursor5a.cur:
+       * itk/win/rc/cursor5c.cur:
+       * itk/win/rc/cursor5e.cur:
+       * itk/win/rc/cursor60.cur:
+       * itk/win/rc/cursor62.cur:
+       * itk/win/rc/cursor64.cur:
+       * itk/win/rc/cursor66.cur:
+       * itk/win/rc/cursor68.cur:
+       * itk/win/rc/cursor6a.cur:
+       * itk/win/rc/cursor6c.cur:
+       * itk/win/rc/cursor6e.cur:
+       * itk/win/rc/cursor70.cur:
+       * itk/win/rc/cursor72.cur:
+       * itk/win/rc/cursor74.cur:
+       * itk/win/rc/cursor76.cur:
+       * itk/win/rc/cursor78.cur:
+       * itk/win/rc/cursor7a.cur:
+       * itk/win/rc/cursor7c.cur:
+       * itk/win/rc/cursor7e.cur:
+       * itk/win/rc/cursor80.cur:
+       * itk/win/rc/cursor82.cur:
+       * itk/win/rc/cursor84.cur:
+       * itk/win/rc/cursor86.cur:
+       * itk/win/rc/cursor88.cur:
+       * itk/win/rc/cursor8a.cur:
+       * itk/win/rc/cursor8c.cur:
+       * itk/win/rc/cursor8e.cur:
+       * itk/win/rc/cursor90.cur:
+       * itk/win/rc/cursor92.cur:
+       * itk/win/rc/cursor94.cur:
+       * itk/win/rc/cursor96.cur:
+       * itk/win/rc/cursor98.cur:
+       * itk/win/rc/itkwish.rc:
+       * itk/win/winMain.c:
+       Removing of old cruft.  itkwishXX.exe is no longer needed as
+       itkXX.dll is a pure extension and loads in a vanilla wish just
+       fine.
+
+       * itcl/win/pkgIndex.tcl:
+       * itk/win/pkgIndex.tcl:
+       we'll auto gen these from the makefile
+
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc:
+       fixed include paths to make sure paths to itcl.h and itk.h in the
+       source tree are mentioned first to avoid a possible bug during
+       building.
+
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in:
+       patch #426203
+
+       * itk/win/makefile.vc:
+       Mostly working.  Not fully tested, but lots closer.
+
+       * itk/win/makefile.vc:
+       more closer, but not yet perfect.
+
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_methods.c:
+       Fix for Tcl_GetCommandName() now returning a CONST char *
+       from the changes Kevein Kenny is doing to the HEAD tcl code.
+       This hasn't been tested with older header files, yet.
+
+       * itk/generic/itk_cmds.c:
+       Removed old reference to external ItkStubs structure.
+       Old cruft left from before Itk_InitStubs existed.
+
+       * itcl/win/itcl.rc:
+       * itcl/win/rc/itcl.rc:
+       moving the resource script
+
+       * itcl/win/rc/itcl.rc:
+       subtle changes.
+
+       * itcl/win/itclsh.rc:
+       * itcl/win/tclAppInit.c:
+       Removing of old cruft.  itclshXX.exe is no longer needed as
+       itclXX.dll is a pure extension and loads in a vanilla shell just
+       fine.
+
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_util.c:
+       removed #include "tclCompile.h"!  It wasn't needed.  Those source
+       files made no reference to anything in it.
+
+       * itk/win/makefile.vc:
+       closer to perfection.
+
+       * itk/win/rc/itk.rc:
+       This is now the resource script for the dll.
+
+       * itcl/generic/itcl_methods.c:
+       whoops.. doh!
+
+       * itk/win/dllEntryPoint.c:
+       Stubs bug logic fix.  Same as itcl/win/dllEntryPoint.c.  This help
+       build a debug version of itcl/itk from the standard tclstubXX.lib
+       by removing the link requirement to msvcrt.lib which should never
+       have been there.
+
+       * itcl/win/makefile.vc:
+       adapted for new location of itcl.rc
+
+       * itk/win/rc/itk.rc:
+       subtle changes to infere the correct filename and support more
+       complete versioning info.
+
+       * itcl/generic/itcl.h:
+       * itk/generic/itk.h:
+       changed RESOURCE_INCLUDED to RC_INVOKED. The windows resource
+       compiler to preset to define this already.
+
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itcl_class.c:
+       Fix for Itcl_ClassCmdResolver() not being of type
+       Tcl_ResolveCmdProc with the CONST type added to param 2 in the
+       lastest headers.  I haven't tested this with an older tcl.h yet.
+       Hopefully, this won't get messy.
+
+       * itcl/win/makefile.vc:
+       small $(RCDIR) change.
+
+       * itcl/generic/itcl_bicmds.c:
+       patch #426207, contextNs ptr can be NULL in Itcl_BiInfoClassCmd
+
+2001-05-18  andreas_kupries
+       * itcl/generic/itcl_class.c:
+       [Fix 227811] Check for any command with the given name, not only
+       objects.
+
+2001-05-17  andreas_kupries
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_cmds.c: Fixed bug 227804.
+
+2001-05-11  Andreas Kupries  <a.kupries@westend.com>
+
+       * itk/generic/itk_archetype.c: Fixed bug 227876.
+
+       * itcl/generic/itcl_objects.c: Fixed bug 227824 (and several
+       duplicates).
+
+       * itk/generic/itk_archetype.c: Fixed bug 227814
+
+2001-04-25  davygrvy
+       * pkg.vc: moved the info about the iwidget version for makefile.vc
+
+2001-04-18  davygrvy
+       * itcl/win/dllEntryPoint.c:
+       whoops...  removed C++ style comment from this .c file :)
+
+2001-04-14  davygrvy
+
+       * itcl/library/itcl.tcl: Patch ID #227860
+
+       * rules.vc: added an rcs keyword
+
+       * .cvsignore: just testing loginfo mailing...
+
+       * .cvsignore: only making a change to see the history file get an
+       entry...
+
+2001-04-12  davygrvy
+       * itcl/win/makefile.vc: progress is happening
+
+2001-04-08  davygrvy
+       * itcl/win/.cvsignore:
+       * itk/win/.cvsignore:
+       no need to have CVS bother itself with the build directories
+
+       * itcl/win/makefile.vc:
+       a large rewrite
+
+       * makefile.vc:
+       todays work progress.  I'm not done yet.
+
+       * itcl/generic/itcl_ensemble.c:
+       * itcl/generic/itcl_util.c:
+       Added mutex locking around the ItclPreservedList global hash table.  This
+       appears to be the only work needed to support multithreading.
+
+       * config.vc:
+       * pkg.vc:
+       * rules.vc:
+       new build files for VC++ compiles
+
+       * .cvsignore:
+       ignore MSVC++ project artifacts
+
+2001-04-07  davygrvy
+       * itcl/win/dllEntryPoint.c:
+       a small windows specific fix against Tcl's Stubs library.
+
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itclStubLib.c:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_ensemble.c:
+         Tcl's internal header, tclInt.h, in 8.4a2 got a small change in
+         the Command structure that needed 2 changes in Itcl to resolve.
+         1) #if/#else/#endif blocks added in itcl_class.c and
+         itc_ensemble.c allowing Itcl to compile. 2) added a global
+         variable called itclCompatFlags that's sets a flag in
+         Itcl_Init() that will modify the logic around access to
+         cmdPtr->flags/deleted.  This way, any core compile will yeild a
+         fully forward/backward compatible binary (correct logic set at
+         runtime).
+
+2000-12-21  smithc
+       * itk/win/makefile.vc: Patch #102914.
+
+2000-12-12  smithc
+       * itcl/generic/itcl_ensemble.c: Patch #102774
+
+       * itcl/generic/itcl_class.c: Patch #100274
+
+2000-09-23  davidg
+       * CHANGES: added a note about the 3.2 release
+
+       * itcl/generic/itcl.h:
+         Itcl_InitStub prototype in itcl/generic/itcl.h was getting name
+         mangled by c++ compilers.  Fixed with an 'extern "C"'
+         appropriately applied.
+
+2000-08-18  davidg
+       * itcl/generic/itcl_cmds.c:
+       Tcl_InitStubs was using the TCL_VERSION macro set by the
+       tcl.h header.  Changed it to be "8.1" instead as it
+       doesn't matter unless Itcl needs special/new features of
+       the core it's header is from.  But it doesn't..  so hard
+       code it for an 8.1 minimum.
+
+2000-08-07  welch
+       * itcl/Makefile.in:
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclStubLib.c:
+       Final iteration, really, on getting Itcl_StubInit
+       correctly set up.
+
+       * itk/generic/itk_cmds.c:
+       Removed redundant definitions of itclStubsPtr and
+       itclIntStubsPtr.
+
+       * itcl/Makefile.in:
+       Added Itcl_InitStubs to the main Itcl library as well as
+       the stubs library for those applications (like Itk) that
+       call Itcl_InitStub but are linked against the main
+       library.
+
+2000-08-04  davidg
+       * itcl/generic/itcl.decls:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itclStubInit.c:
+       * itk/generic/itk.decls:
+       * itk/generic/itkDecls.h:
+       * itk/generic/itkStubInit.c:
+       * itk/generic/itkStubLib.c:
+       added missing RCS strings
+
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclStubLib.c:
+       * itk/generic/itk.h:
+       * itk/generic/itkStubLib.c:
+       yanked ugly linkage cruft from the StubLib functions.  It's
+       always static.
+
+2000-08-02  davidg
+       * itk/generic/itk_cmds.c:
+       simplified how Itcl Stubs are set
+
+       * itcl/generic/itcl.h:
+       * itk/generic/itk.h:
+       added missing Itcl_InitStubs and Itk_InitStubs declarations.
+
+2000-08-02  welch
+       * itk/generic/itkStubLib.c:
+       Fixed this new function
+
+       * itcl/Makefile.in:
+       * itk/Makefile.in:
+       Changed this to use installFiles.tcl instead of install-sh
+
+       * itcl/generic/itclStubLib.c:
+       Fix for new Itcl_InitStubs.c
+
+       * config/installFile.tcl:
+       Added a Tcl version of install-sh that avoids copying a
+       file if the target has the same size and date stamp as the
+       source file already.  This helps parallel builds on
+       different platforms avoid changing files out from one
+       another.
+
+2000-07-29  welch
+       * itcl/configure:
+       * itk/configure: Ran autoconf
+
+       * tcl.m4: Fixed this with respect to recent changes in windows def
+       of TCL_SRC_DIR
+
+2000-07-23  wart
+       * itcl/Makefile.in:
+       * itk/Makefile.in: Use INSTALL_PROGRAM instead of INSTALL_DATA to
+       install libraries so they get execute permission on HPUX
+
+2000-07-14  welch
+       * itcl/configure:
+       * itk/configure: Updated configure
+
+       * config/install-sh: Nuked debug echo statement
+
+2000-07-12  welch
+       * config/install-sh: Added -f to MV command
+
+       * CHANGES:
+       * Makefile.in: Added some feedback to the top-level makefile loops
+
+       * itcl/configure.in:
+       * itk/Makefile.in:
+       * itk/configure.in: Disable stubs in the case of static builds.
+
+2000-07-07  csmith
+       * itcl/tests/info.test: patch submitted by David Cuthbert, 7/7/00
+
+       * itcl/generic/itcl_bicmds.c:
+       patch submitted by David Cuthbert, 7/7/00 to fix segfault caused by the
+       following code:
+       
+           itcl::class X { }
+           namespace eval X { info class }
+
+2000-07-06  mmc
+       * Makefile.in:
+       * README:
+       Touched up README for itcl3.2 release.  Fixed master Makefile to
+       avoid testing iwidgets2.2.0, which is an older release provided
+       only for backward-compatibility.  Bug fixes and improvements are
+       made and tested in the newer iwidgets3.0.0 release.
+
+       * CHANGES:
+       * itcl/generic/itcl.h:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_objects.c:
+       * itcl/tests/all:
+       * itcl/tests/all.tcl:
+       * itcl/tests/basic.test:
+       * itcl/tests/defs:
+       * itcl/tests/inherit.test:
+       * itcl/tests/methods.test:
+       * itcl/tests/namespace.test:
+       * itcl/unix/Makefile.in:
+       * itcl/unix/configure.in:
+       * itcl/unix/itclConfig.sh.in:
+       * itcl/unix/pkgIndex.tcl.in:
+       * itcl/unix/test.tcl:
+       * itk/Makefile.in:
+       * itk/generic/itk_archetype.c:
+       * itk/library/itk.tcl:
+       * itk/tests/all:
+       * itk/tests/all.tcl:
+       * itk/tests/defs:
+       * itk/tests/widget.test:
+       * itk/unix/Makefile.in:
+       * itk/unix/configure.in:
+       * itk/unix/itkConfig.sh:
+       * itk/unix/itkConfig.sh.in:
+       * itk/unix/pkgIndex.tcl.in:
+       
+       6/26/00 (bug fix)
+         Fixed Itcl_ClassVarResolver so that the formal
+         parameters in a method/proc take precedence over class
+         data members.
+       
+       6/30/00 (bug fix)
+         Fixed all itcl/itk/iwidgets3.0.0 tests to run cleanly
+         with the new tcltest package.
+       
+       7/1/00 (bug fix)
+         Fixed "itk_component delete" so that the composite
+         option list is cleaned up whenever a component is
+         deleted.  For example, suppose a component is the sole
+         contributor of -font.  When that component is removed
+         via "itk_component delete", the -font option goes away
+         as well.  Also fixed the handling of the itk-delete-*
+         binding for the component.  When the component is
+         removed, the binding tag is also removed by
+         itk::remove_destroy_hook.
+       
+       7/5/00 (bug fix)
+         Fixed the check done during object creation to avoid
+         clobbering existing commands.  Previously, itcl would
+         look for any command-- in the local *and* global
+         namespace--that might be clobbered.  Now, it looks for
+         commands only in the local namespace, since those are
+         the only ones that could truly be clobbered.
+       
+       7/5/00 (cleanup)
+         Removed obsolete Makefile/configure files in the various
+         "unix" directories.  Makefiles and configure files now
+         reside one level above, in the standard TEA place.
+
+2000-06-22  wart
+       * itcl/Makefile.in:
+       Added itclDecls.h to list of header files to install.
+
+2000-06-22  welch
+       * itk/Makefile.in:
+       Installing stub table tkDecls.h
+
+       * itcl/Makefile.in:
+       Installing all header files, not just public ones.
+
+2000-06-16  matt
+       * itcl/generic/itcl_util.c:
+       Moved #ifndef NDEBUG inside Itcl_Assert routine otherwise
+       it may not get inclued BUT it is specified in the Stubs
+       Table.....
+
+2000-06-06  wart
+       * itk/tests/all.tcl:
+       Added missing file for running test suite.
+
+2000-06-01  wart
+       * itcl/Makefile.in:
+       * itcl/tests/basic.test:
+       * itcl/tests/body.test:
+       * itcl/tests/chain.test:
+       * itcl/tests/delete.test:
+       * itcl/tests/ensemble.test:
+       * itcl/tests/import.test:
+       * itcl/tests/info.test:
+       * itcl/tests/inherit.test:
+       * itcl/tests/interp.test:
+       * itcl/tests/local.test:
+       * itcl/tests/methods.test:
+       * itcl/tests/mkindex.test:
+       * itcl/tests/namespace.test:
+       * itcl/tests/protection.test:
+       * itcl/tests/scope.test:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/tests/interp.test:
+       * itk/tests/option.test:
+       * itk/tests/privacy.test:
+       * itk/tests/public.test:
+       * itk/tests/toplevel.test:
+       * itk/tests/widget.test:
+       Tests modified to work with TEA Makefile.
+
+2000-04-19  mmc
+       * CHANGES:
+       * itcl/Makefile.in:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itcl/doc/find.n:
+       * itcl/generic/itcl.h:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/tests/basic.test:
+       * itcl/tests/body.test:
+       * itcl/tests/chain.test:
+       * itcl/tests/defs:
+       * itcl/tests/delete.test:
+       * itcl/tests/ensemble.test:
+       * itcl/tests/info.test:
+       * itcl/tests/inherit.test:
+       * itcl/tests/local.test:
+       * itcl/tests/methods.test:
+       * itcl/tests/mkindex.itcl:
+       * itcl/tests/namespace.test:
+       * itcl/tests/protection.test:
+       * itcl/tests/scope.test:
+       * itcl/tests/tclIndex:
+       * itcl/unix/configure.in:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/tests/defs:
+       * itk/tests/option.test:
+       * itk/tests/widget.test:
+       * license.terms:
+       - fixed itcl::find to find classes/objects in *all* namespaces
+       - fixed tests to run cleanly
+
+2000-03-28  csmith
+       * itcl/generic/itcl_cmds.c:
+       Patch for Ticket 4111, submitted by David Cuthbert:
+       
+       *** itcl3.1.0/itcl/generic/itcl_cmds.c.orig     Tue Feb  1 16:37:53 2000
+       --- itcl3.1.0/itcl/generic/itcl_cmds.c.new      Tue Feb  1
+       16:38:06 2000
+       ***************
+       *** 94,100 ****
+         static char safeInitScript[] =
+         "proc ::itcl::local {class name args} {\n\
+       !     set ptr [uplevel eval [list $class $name] $args]\n\
+             uplevel [list set itcl-local-$ptr $ptr]\n\
+             set cmd [uplevel namespace which -command $ptr]\n\
+             uplevel [list trace variable itcl-local-$ptr u \"::itcl::delete object $cmd; list\"]\n\
+
+       --- 94,100 ----
+         static char safeInitScript[] =
+         "proc ::itcl::local {class name args} {\n\
+       !     set ptr [uplevel [list $class $name] $args]\n\
+             uplevel [list set itcl-local-$ptr $ptr]\n\
+             set cmd [uplevel namespace which -command $ptr]\n\
+             uplevel [list trace variable itcl-local-$ptr u \"::itcl::delete object $cmd; list\"]\n\
+
+       * itcl/library/itcl.tcl:
+       Patch for ticket 4111, submitted by David Cuthbert:
+       
+       *** itcl3.1.0/itcl/library/itcl.tcl.orig        Tue Feb  1 16:38:24 2000
+       --- itcl3.1.0/itcl/library/itcl.tcl.new Tue Feb  1 16:38:30 2000
+       ***************
+       *** 27,33 ****
+         #  alive until a procedure exits.
+         # ----------------------------------------------------------------------
+         proc ::itcl::local {class name args} {
+       !     set ptr [uplevel eval [list $class $name] $args]
+             uplevel [list set itcl-local-$ptr $ptr]
+             set cmd [uplevel namespace which -command $ptr]
+             uplevel [list trace variable itcl-local-$ptr u \
+       
+       --- 27,33 ----
+         #  alive until a procedure exits.
+         # ----------------------------------------------------------------------
+         proc ::itcl::local {class name args} {
+       !     set ptr [uplevel [list $class $name] $args]
+             uplevel [list set itcl-local-$ptr $ptr]
+             set cmd [uplevel namespace which -command $ptr]
+             uplevel [list trace variable itcl-local-$ptr u \
+
+2000-03-20  wart
+       * itk/configure:
+       * itk/configure.in:
+       Fixed typo in variable name
+
+2000-03-17  wart
+       * itcl/Makefile.in:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       Added TCL_EXTRA_CFLAGS to compile line to fix build problems on Irix
+
+2000-02-04  wart
+       * itk/configure:
+       * itk/configure.in:
+       Fixed typo that was causing builds on CYGWIN_NT platforms not to pick up
+       the Tcl stub library (TCL_STUB_LIB_SPEC was not being substituted in the
+       Makefile)
+
+2000-01-28  wart
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in:
+       Fixed a few more places where the configure wasn't checking for cygwin on
+       Windows 95/98
+
+2000-01-24  wart
+       * itcl/configure:
+       * itk/configure:
+       Regenerated configure scripts to pick up changes to tcl.m4
+
+       * itcl/configure:
+       * itk/configure:
+       Regenerated configure scripts to pick up recent changes to tcl.m4
+
+       * tcl.m4:
+       * tcl.m4:
+       Updated to reflect recent TEA changes
+
+2000-01-18  wart
+       * tcl.m4:
+       Updated to reflect recent TEA changes
+
+2000-01-03  csmith
+       * itcl/unix/Makefile.in:
+       Patch submitted by Mo Dejong needed so Itcl will link to the Tcl libs
+       when Tcl is compiled with debugging on.
+
+       * itcl/generic/itcl_parse.c:
+       Patch by Mo Dejong to fix a Windows NT/95 crashing problem where you can
+       build with debugging on, load the Itcl package, and press the X in the
+       upper right corner.  Note that I'm unable to test this on Windows and
+       that this patch introduces a compiler warning.
+
+       * itcl/generic/itcl_parse.c:
+       Duuuuhhhh....
+       
+       This is the patch from Mo Dejong regarding the Windows NT/95 crashing
+       problem.  My previous checkin of itcl_parse.c did not include all of
+       the patch - got in a hurry.  Disregard the compiler warning mentioned
+       in my previous checkin.
+
+       * itcl/tests/defs:
+       Patch submitted by Mo Dejong: needed to add "-force" option to the
+       namespace import command so fix a bug with 'make test'.
+
+1999-11-24  wart
+       * itcl/configure:
+       * itk/configure:
+       regenerated configure scripts to pick up tcl.m4 changes
+
+       * itcl/configure:
+       * itk/configure:
+       * tcl.m4:
+       tcl.m4:  Updated to reflect recent TEA changes
+       
+       */configure:  Regnereated with new tcl.m4
+       
+       iwidgets2.2.0/Makefile.in:  Don't copy nonexistent files
+
+       * tcl.m4:
+       Updated to reflect recent TEA changes
+
+1999-09-21  wart
+       * itk/Makefile.in:
+       Itk now installs appropriate library files.
+
+1999-09-20  wart
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       pkgIndex on Windows now looks in the correct directory for the
+       .dll files.
+
+1999-09-17  wart
+       * tcl.m4:
+       Updated to reflect recent changes
+
+1999-09-15  wart
+       * itcl/configure:
+       * itcl/configure.in:
+       * itcl/pkgIndex.tcl.in:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/pkgIndex.tcl.in:
+       Better pkgIndex.tcl files that should now work on solaris.
+
+1999-09-14  wart
+       * itcl/Makefile.in:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itcl/mkIndex.tcl.in:
+       * itcl/pkgIndex.tcl.in:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/mkIndex.tcl.in:
+       * itk/pkgIndex.tcl.in:
+       Fixed installation of pkgIndex.tcl file.  We have to install a pre-made
+       pkgIndex.tcl file since pkg_mkIndex can't seem to make a usable one.
+
+1999-09-10  wart
+       * itk/Makefile.in:
+       Fixed bug when calling mkIndex.tcl for itk
+       
+       reduced amount of output from "make install" in iwidgets
+
+       * itcl/Makefile.in:
+       * itk/Makefile.in:
+       Removed Makefiles rules to regenerate the configure scripts.  This was
+       causing problems when building on Windows and Unix simultaneoulsy.
+
+1999-09-09  wart
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in:
+       configure scripts now look for tclsh82d.exe executable when searching
+       for valid tcl interpreter.
+
+       * Makefile.in:
+       Added pkgIndex files for Iwidgets
+       
+       Top level Makefile should no longer loop endlessly if the configure went bad.
+
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/configure:
+       * itk/configure.in:
+       * tcl.m4:
+       Look for tclsh82d.exe before tclsh82.exe.
+       
+       configure scripts for itcl and itk now use the tcl.m4 macro SC_PROG_TCLSH.
+
+1999-09-07  wart
+       * itcl/Makefile.in:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itk/Makefile.in:
+       * itk/configure:
+       * itk/configure.in:
+       configure now searches for tclsh82 shell in exec-prefix, then prefix, then
+       relative to tclConfig.sh, then in the users path.
+
+1999-09-04  wart
+       * configure.in:
+       * itcl/Makefile.in:
+       * itcl/aclocal.m4:
+       * itcl/configure:
+       * itcl/configure.in:
+       * itcl/mkIndex.tcl.in:
+       * itk/Makefile.in:
+       * itk/aclocal.m4:
+       * itk/configure:
+       * itk/configure.in:
+       * itk/mkIndex.tcl.in:
+       * tcl.m4:
+       TEA changes.  Itcl now uses the same Makefiles and configure scripts for
+       both Windows and Unix.
+       
+       Note that static shells are not yet done in this TEA implementation.
+
+       * itcl/Makefile.in:
+       * itk/Makefile.in:
+       Temporarily removed pkg_mkIndex step from Makefile since it causes a
+       crash on Windows.
+
+1999-08-21  matt
+       * itcl/unix/Makefile.in:
+       Fixed mismatch between configure script and makefile for stub
+       enabled builds
+
+       * itk/unix/Makefile.in:
+       Fixed mismatch between conifgure script and Makefile for stub
+       enabled builds.
+
+1999-06-28  hershey
+       * itk/unix/configure.in:
+       * itk/unix/itkConfig.sh:
+       remove version number from comments
+
+1999-06-26  wart
+       * itcl/mac/itclMacLibrary.r:
+       * itcl/mac/pkgIndex.tcl:
+       * itcl/unix/configure.in:
+       * itk/mac/itkMacLibrary.r:
+       * itk/mac/pkgIndex.tcl:
+       * itk/unix/configure.in:
+       * itk/win/pkgIndex.tcl:
+       Version numbers changed from 3.0.1 to 3.1.0
+
+1999-05-25  redman
+       * itcl/generic/itcl.h:
+       * itcl/win/makefile.vc:
+       * itk/win/makefile.vc:
+       * itk/win/winMain.c:
+       * makefile.vc:
+       Fixed the use of Tcl & Tk stubs on Windows.
+       
+       Now the extra shells (itclsh31.exe and itkwish31.exe) are being
+       created and run properly.
+
+       * itcl/generic/itcl_cmds.c:
+       * itcl/unix/Makefile.in:
+       * itcl/unix/configure.in:
+       * itcl/unix/itclConfig.sh.in:
+       * itk/generic/itk_cmds.c:
+       * itk/unix/Makefile.in:
+       * itk/unix/configure.in:
+       * itk/unix/itkConfig.sh:
+       * itk/unix/itkConfig.sh.in:
+       Fix the makefile and configure files, etc., for Unix
+       in order to compile with Tcl/Tk 8.1 with stubs.
+       
+       Builds itclsh and itkwish properly.
+
+1999-05-24  redman
+       * itcl/generic/itcl.decls:
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclDecls.h:
+       * itcl/generic/itclInt.decls:
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itclIntDecls.h:
+       * itcl/generic/itclStubInit.c:
+       * itcl/generic/itclStubLib.c:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_ensemble.c:
+       * itcl/tests/defs:
+       * itcl/tests/tclIndex:
+       * itcl/win/itcl.rc:
+       * itcl/win/makefile.vc:
+       * itcl/win/pkgIndex.tcl:
+       * itk/generic/itk.decls:
+       * itk/generic/itk.h:
+       * itk/generic/itkDecls.h:
+       * itk/generic/itkStubInit.c:
+       * itk/generic/itkStubLib.c:
+       * itk/generic/itk_cmds.c:
+       * itk/win/makefile.vc:
+       * itk/win/rc/itk.rc:
+       * makefile.vc:
+       Applied patches from David Gravereaux to update Itcl and Itk to
+       use Tcl/Tk 8.1 stubs and provide it's own stubs interface, on
+       Windows only.
+       
+       Changes have not been made to support I18N (if needed) or MT-safety.
+       
+       Version number has been changed to 3.1.0 (from 3.0.1) by
+       David to coincide with the shift to Tcl/Tk 8.1.
+       
+       Building of itclsh31.exe and iwish31.exe have been disabled
+       until someone else makes them work properly.  Test suites
+       have been modified to work with tclsh81.exe instead.
+
+1999-02-05  stanton
+       * itk/unix/itkConfig.sh:
+       updated version to itcl3.0.1
+
+1999-01-15  rjohnson
+       * itcl/tests/mkindex.itcl:
+       
+       Fixed typo in tcl file.
+
+1998-10-29  stanton
+       * itcl/doc/itcl_info.n:
+       Cleaned up some out of date references to 2.2 syntax.
+
+1998-09-14  stanton
+       * itk/win/rc/cursor00.cur:
+       * itk/win/rc/cursor02.cur:
+       * itk/win/rc/cursor04.cur:
+       * itk/win/rc/cursor06.cur:
+       * itk/win/rc/cursor08.cur:
+       * itk/win/rc/cursor0a.cur:
+       * itk/win/rc/cursor0c.cur:
+       * itk/win/rc/cursor0e.cur:
+       * itk/win/rc/cursor10.cur:
+       * itk/win/rc/cursor12.cur:
+       * itk/win/rc/cursor14.cur:
+       * itk/win/rc/cursor16.cur:
+       * itk/win/rc/cursor18.cur:
+       * itk/win/rc/cursor1a.cur:
+       * itk/win/rc/cursor1c.cur:
+       * itk/win/rc/cursor1e.cur:
+       * itk/win/rc/cursor20.cur:
+       * itk/win/rc/cursor22.cur:
+       * itk/win/rc/cursor24.cur:
+       * itk/win/rc/cursor26.cur:
+       * itk/win/rc/cursor28.cur:
+       * itk/win/rc/cursor2a.cur:
+       * itk/win/rc/cursor2c.cur:
+       * itk/win/rc/cursor2e.cur:
+       * itk/win/rc/cursor30.cur:
+       * itk/win/rc/cursor32.cur:
+       * itk/win/rc/cursor34.cur:
+       * itk/win/rc/cursor36.cur:
+       * itk/win/rc/cursor38.cur:
+       * itk/win/rc/cursor3a.cur:
+       * itk/win/rc/cursor3c.cur:
+       * itk/win/rc/cursor3e.cur:
+       * itk/win/rc/cursor40.cur:
+       * itk/win/rc/cursor42.cur:
+       * itk/win/rc/cursor44.cur:
+       * itk/win/rc/cursor46.cur:
+       * itk/win/rc/cursor48.cur:
+       * itk/win/rc/cursor4a.cur:
+       * itk/win/rc/cursor4c.cur:
+       * itk/win/rc/cursor4e.cur:
+       * itk/win/rc/cursor50.cur:
+       * itk/win/rc/cursor52.cur:
+       * itk/win/rc/cursor54.cur:
+       * itk/win/rc/cursor56.cur:
+       * itk/win/rc/cursor58.cur:
+       * itk/win/rc/cursor5a.cur:
+       * itk/win/rc/cursor5c.cur:
+       * itk/win/rc/cursor5e.cur:
+       * itk/win/rc/cursor60.cur:
+       * itk/win/rc/cursor62.cur:
+       * itk/win/rc/cursor64.cur:
+       * itk/win/rc/cursor66.cur:
+       * itk/win/rc/cursor68.cur:
+       * itk/win/rc/cursor6a.cur:
+       * itk/win/rc/cursor6c.cur:
+       * itk/win/rc/cursor6e.cur:
+       * itk/win/rc/cursor70.cur:
+       * itk/win/rc/cursor72.cur:
+       * itk/win/rc/cursor74.cur:
+       * itk/win/rc/cursor76.cur:
+       * itk/win/rc/cursor78.cur:
+       * itk/win/rc/cursor7a.cur:
+       * itk/win/rc/cursor7c.cur:
+       * itk/win/rc/cursor7e.cur:
+       * itk/win/rc/cursor80.cur:
+       * itk/win/rc/cursor82.cur:
+       * itk/win/rc/cursor84.cur:
+       * itk/win/rc/cursor86.cur:
+       * itk/win/rc/cursor88.cur:
+       * itk/win/rc/cursor8a.cur:
+       * itk/win/rc/cursor8c.cur:
+       * itk/win/rc/cursor8e.cur:
+       * itk/win/rc/cursor90.cur:
+       * itk/win/rc/cursor92.cur:
+       * itk/win/rc/cursor94.cur:
+       * itk/win/rc/cursor96.cur:
+       * itk/win/rc/cursor98.cur:
+       * itk/win/rc/itk.ico:
+       Fixed binary files
+
+1998-08-23  stanton
+       * itcl/doc/scope.n:
+       fixed section
+
+1998-08-20  welch
+       * itcl/generic/itcl.h:
+       Patchlevel 3.0.1
+
+1998-08-18  welch
+       * itk/win/pkgIndex.tcl:
+       Fixed loading .dll
+
+       * itcl/win/pkgIndex.tcl:
+       fixed loading .dll
+
+1998-08-18  suresh
+
+       * itk/generic/itk_cmds.c: Removed pedantic check for existance of
+       "::itk" namespace.  Changed code to conditionally create the
+       "::itk" namespace based on whether it already exists or not.
+       These changes were necessary to facilitate the wrapper dictating
+       where the [incr Tk] libraries are stored in a wrapped application
+       via the variable '::itk::library".
+
+1998-08-12  welch
+       * itk/win/makefile.bc:
+       * itk/win/makefile.vc:
+       Fixes for tkConsole
+
+1998-08-11  welch
+       * CHANGES:
+       * README:
+       * itcl/doc/class.n:
+       * itcl/doc/scope.n:
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclInt.h:
+       * itcl/generic/itcl_bicmds.c:
+       * itcl/generic/itcl_class.c:
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_methods.c:
+       * itcl/generic/itcl_objects.c:
+       * itcl/library/itcl.tcl:
+       * itcl/mac/itclMacApplication.r:
+       * itcl/mac/itclMacLibrary.r:
+       * itcl/mac/itclMacResource.r:
+       * itcl/mac/pkgIndex.tcl:
+       * itcl/mac/tclMacAppInit.c:
+       * itcl/tests/info.test:
+       * itcl/unix/Makefile.in:
+       * itcl/unix/configure.in:
+       * itcl/unix/tclAppInit.c:
+       * itcl/win/itcl.rc:
+       * itcl/win/itclsh.rc:
+       * itcl/win/makefile.vc:
+       * itcl/win/pkgIndex.tcl:
+       * itcl/win/tclAppInit.c:
+       * itk/doc/Toplevel.n:
+       * itk/generic/itk.h:
+       * itk/generic/itk_cmds.c:
+       * itk/mac/MW_ItkHeader.pch:
+       * itk/mac/itkMacApplication.r:
+       * itk/mac/itkMacLibrary.r:
+       * itk/mac/itkMacResource.r:
+       * itk/mac/pkgIndex.tcl:
+       * itk/mac/tclIndex:
+       * itk/mac/tkMacAppInit.c:
+       * itk/unix/Makefile.in:
+       * itk/unix/configure.in:
+       * itk/unix/tkAppInit.c:
+       * itk/win/makefile.vc:
+       * itk/win/pkgIndex.tcl:
+       * itk/win/rc/itk.rc:
+       * itk/win/rc/itkwish.rc:
+       * itk/win/winMain.c:
+       * makefile.vc:
+       3.0 final from Michael
+
+1998-08-07  stanton
+       * itcl/generic/itcl_methods.c:
+       changed to reflect new CompiledLocal structure
+       changed to reflect changes in resolver api
+       changed to use TclInitCompiledLocals interface
+
+       * itcl/generic/itclInt.h:
+       changed to reflect new resolver api
+
+       * itcl/generic/itcl_bicmds.c:
+       * itcl/generic/itcl_ensemble.c:
+       changed to reflect new CompiledLocal structure
+
+       * itcl/generic/itcl_class.c:
+       changed to reflect changes in resolver api
+
+       * itcl/doc/scope.n: fixed section name
+
+       * itcl/generic/itcl_cmds.c:
+       * itcl/generic/itcl_util.c:
+       * itk/doc/Toplevel.n: lint
+
+1998-08-04  escoffon
+       * itcl/generic/itcl.h:
+       * itcl/generic/itclInt.h:
+       * itk/generic/itk.h: EXPORT is now TCL_STORAGE_CLASS
+
+1998-07-29  escoffon
+       * itcl/generic/itcl.h:
+       added setting of EXPORT to DLLEXPORT if we are building the
+       itcl lib.
+
+       * itk/generic/itk.h:
+       - dropped the EXPORT macro, it is now part of EXTERN
+       - added setting of EXPORT to DLLEXPORT if we are building the itk lib.
+
+       * itcl/generic/itclInt.h:
+       - added setting of EXPORT to DLLEXPORT if we are building the itcl lib.
+       - use EXTERN instead of extern for Itcl_Assert
+
+1998-07-28  stanton
+       * itcl/generic/itcl_cmds.c:
+       * itk/generic/itk_cmds.c: changed search order
+
diff --git a/itcl/itk/INCOMPATIBLE b/itcl/itk/INCOMPATIBLE
new file mode 100644 (file)
index 0000000..b0e2bd1
--- /dev/null
@@ -0,0 +1,102 @@
+
+As much as possible, I've tried to make itcl3.0 backward-compatible
+with earlier releases.  The class definition syntax has not changed
+at all from itcl2.2, and the old itcl1.x syntax is still supported.
+But you'll notice changes related to namespaces.  John Ousterhout
+adopted a slightly different namespace model for Tcl8.  The syntax
+of the "namespace" command is different, as well as the semantics
+for command/variable lookups and imports.  Also, John Ousterhout
+failed to adopt ensembles into the Tcl core, so itcl can't add
+functions like "info objects" and "info classes" into the usual "info"
+command.  These functions have been moved to a new "itcl::find" command.
+
+The [incr Widgets] package has changed quite a bit.  There are many
+new widgets, and some of the existing widgets were streamlined--some
+of the widget options were removed to improve performance.  For details,
+see the "CHANGES" file in the iwidgets3.0.0 directory.  Because there
+are a lot of changes, this distribution contains the iwidgets2.2.0
+package, which is backward-compatible with the existing [incr Widgets].
+
+Following is a quick summary of changes, to serve as a porting guide.
+
+
+----------------------------------|-------------------------------------
+ You have code like this...       | change to this...
+----------------------------------|-------------------------------------
+ namespace foo {...}              | namespace eval foo {...}
+                                  |
+ delete namespace foo             | namespace delete foo
+                                  |
+ info which -namespace $name      | if {![string match ::* $name]} {
+                                  |     set name [namespace current]::$name
+                                  | }
+                                  |
+ info context                     | namespace current
+                                  |
+ info objects ...                 | itcl::find objects ...
+                                  |
+ info classes ...                 | itcl::find classes ...
+                                  |
+ In itcl2.2, commands/classes     | In Tcl8.0, all commands/classes that
+ could be found in any namespace  | are not in the global namespace must
+ in a hierarchy.  So within a     | be qualified.  For example, the
+ namespace like "iwidgets" you    | "iwidgets" namespace has a bunch of
+ could use simple names like:     | classes within it.  You must always
+                                  | refer to these classes with qualified
+                                  | names, like this:
+                                  |
+ Labeledwidget::alignlabels ...   | iwidgets::Labeledwidget::alignlabels ...
+ Pane #auto                       | iwidgets::Pane #auto
+                                  |
+                                  |
+ In itcl2.2, the "global"         | In Tcl8.0, the "variable" command is
+ command was used to access       | used to access variables in a namespace:
+ variables in a namespace:        |
+                                  |
+   namespace foo {                | namespace eval foo {
+       variable x 0               |     variable x 0
+       proc example {} {          |     proc example {} {
+           global x               |         variable x
+           return $x              |         return $x
+       }                          |     }
+   }                              | }
+                                  |
+                                  |
+ public itk_component add...      | itk_component add ...
+ protected itk_component add...   | itk_component add -protected ...
+ private itk_component add...     | itk_component add -private ...
+                                  |
+                                  |
+
+ OTHER DIFFERENCES
+------------------------------------------------------------------------
+- You can now use instance variables (along with the usual common
+  variables) with the "scope" command.  Thus, you're no longer forced
+  to use the trick with a common array like:  [scope modes($this)]
+
+- All widget/mega-widget access commands (e.g., ".foo.bar") are
+  installed in the global namespace.  Therefore, they can be accessed
+  from any namespace context.
+
+- The [incr Widgets] package used to be loaded by default.  You must
+  now use the "package require" command to load it explicitly:
+
+    package require Iwidgets              <-- loads the lastest (iwidgets3.0.0)
+    package require -exact Iwidgets 2.2   <-- loads the older release
+
+- Command/variable names are now reported with fully-qualified names
+  in "info" inquiries and in error messages.
+
+- No public/protected/private declarations outside of class definitions
+
+- The "scope" command used to be more or less the same as the "code"
+  command.  In itcl3.x, "scope" is only for variables, and if a variable
+  is not recognized, you'll get an error.
+
+- The "code" command used to return a value like "@scope ...".  It now
+  returns "namespace inscope ...", to be compatible with Tcl8.
+
+- The prototypes for Itcl_RegisterC and Itcl_FindC have changed.  You
+  can now include ClientData when you register C functions.  Also, there
+  is a new Itcl_RegisterObjC function for (objc,objv)-style command
+  handlers.
diff --git a/itcl/itk/README b/itcl/itk/README
new file mode 100644 (file)
index 0000000..fee26d2
--- /dev/null
@@ -0,0 +1,311 @@
+------------------------------------------------------------------------
+         [incr Tcl] - version 3.3 for Tcl/Tk 8.0.3 and beyond
+------------------------------------------------------------------------
+  This is a bug-fix release in the itcl3.x series.
+
+  As much as possible, I've tried to make itcl3.x backward-compatible
+  with earlier releases.  The class definition syntax has not changed
+  at all from itcl2.2, and the old itcl1.x syntax is still supported.
+  But you'll notice changes related to the new namespace mechanism in
+  Tcl 8.0.  For information on incompatibilities and porting to itcl3.x,
+  read the INCOMPATIBLE file in this directory, or check out the itcl
+  web site:
+
+      http://incrtcl.sourceforge.net/
+      http://www.tcltk.com/itcl/
+
+  Many people through the years have helped me with [incr Tcl]
+  development, and I thank them for their contributions.  Please
+  read the acknowledgements section below.
+
+  Send comments or suggestions to the [incr Tcl] mailing list
+  (itcl@scriptics.com) or directly to me (mmc@cadence.com).
+  If you want to subscribe to the mailing list, send a message
+  with the subject "subscribe" to "itcl-request@tcltk.com".
+
+========================================================================
+        Copyright (c) 1993-1998   Lucent Technologies, Inc.
+        Copyright (c) 1998-2000   Cadence Design Systems, Inc.
+========================================================================
+
+ OVERVIEW
+------------------------------------------------------------------------
+ - What is [incr Tcl]?
+ - Getting started
+ - Installation
+ - Integrating [incr Tcl] with other extensions
+ - Acknowledgements
+------------------------------------------------------------------------
+
+
+ What is [incr Tcl]?
+------------------------------------------------------------------------
+ [incr Tcl] is an object-oriented extension of the Tcl language.  It
+ was created to support more structured programming in Tcl.  Tcl scripts
+ that grow beyond a few thousand lines become extremely difficult to
+ maintain.  This is because the building blocks of vanilla Tcl are
+ procedures and global variables, and all of these building blocks
+ must reside in a single global namespace.  There is no support for
+ protection or encapsulation.
+
+ [incr Tcl] introduces the notion of objects.  Each object is a bag
+ of data with a set of procedures or "methods" that are used to
+ manipulate it.  Objects are organized into "classes" with identical
+ characteristics, and classes can inherit functionality from one
+ another.  This object-oriented paradigm adds another level of
+ organization on top of the basic variable/procedure elements, and
+ the resulting code is easier to understand and maintain.
+
+ Among other things, [incr Tcl] can be used to create new widgets that
+ look and work like the usual Tk widgets, but are written entirely at
+ the Tcl language level (C code is optional).  These "mega-widgets"
+ can be created using [incr Tk], a set of base classes which provide
+ the core mega-widget functionality.  [incr Widgets] is a set of
+ high-level mega-widgets built using [incr Tk].  It has more than
+ 50 widget classes, and can be used right out of the box to create:
+
+   - fileselectiondialog
+   - tabnotebook
+   - panedwindow
+   - scrolledhtml
+   - combobox
+   - optionmenu
+   - scrolledlistbox
+   - scrolledframe
+   - messagedialog
+   - and many others...
+ Classes and/or related procedures can also be encapsulated in their
+ own "namespace".  A namespace is a collection of commands, variables,
+ classes and other namespaces that is set apart from the usual global
+ scope.  Elements within a namespace can be "private" or "protected",
+ so that access to them is restricted.  An "import" command allows all
+ of the elements from one namespace to be integrated into another.
+
+ Extension writers will immediately see the benefit of namespaces.
+ With vanilla Tcl, each extension must add its commands and variables
+ at the global scope.  Extension writers are encouraged to add a unique
+ prefix to all of the names in their package, to avoid naming collisions.
+ Extensions can now sit in their own namespace of commands and variables,
+ and sensitive elements can be protected from accidental access.  For
+ example, the current release of [incr Tcl] has a namespace "itcl"
+ for object-oriented support, a namespace "itk" for mega-widget
+ support, and a namespace "iwidgets" for the [incr Widgets] package.
+ Each of these namespaces has its own collection of commands and
+ variables.  Developers can then pick and choose among the extensions,
+ and integrate the parts that they need for their application by
+ importing various namespaces at the global scope.
+
+
+ Getting started
+------------------------------------------------------------------------
+ If you're just getting started with [incr Tcl], check out these
+ useful resources:
+
+   - FREE TUTORIAL on our web site:  http://www.tcltk.com/itcl/
+
+   - BOOK:  "[incr Tcl/Tk] from the Ground Up," by Chad Smith
+            (ISBN 0-07-212106-8)
+
+   - BOOK:  "Tcl/Tk Tools," edited by Mark Harrison
+            (ISBN 1-56592-218-2)
+
+ Also, run the "catalog" demo to get an overview of the [incr Widgets]
+ package.  On Windows and Macintosh systems, this is installed as one
+ of the executables.  On Unix systems, this is installed in the
+ "lib/itcl/iwidgets3.0.0/demos" library directory.
+
+ The file "iwidgets3.0.0/doc/iwidgets.ps" contains a tutorial
+ introduction to the [incr Widgets] package.  The mega-widget classes
+ in [incr Widgets] show off most of the functionality in this release.
+ You can use them as a pattern to create your own widget classes.
+
+ If you're a seasoned itcl professional, check the CHANGES file for a
+ summary of recent enhancements.  Consult the man pages for detailed
+ information on particular commands.
+
+ Check out our web site for the latest news:
+
+      http://incrtcl.sourceforge.net/
+
+ Installation on Unix Systems
+------------------------------------------------------------------------
+  1)  Obtain this distribution from an archive site like this:
+
+        http://incrtcl.sourceforge.net/
+        http://sourceforge.net/project/showfiles.php?group_id=13244
+
+  2)  Uncompress and untar the distribution:
+
+        gunzip itcl<version>.tar.gz
+        tar xvf itcl<version>.tar
+
+  3)  Run the configuration script:
+
+        cd itcl<version>
+        ./configure
+
+      or, for systems that don't recognize "#!" in shell scripts:
+
+        cd itcl<version>
+        /bin/sh ./configure
+
+      The "configure" script finds the appropriate compiler flags and
+      generates new Makefiles from template files (Makefile.in).
+
+      By default, the configuration script will set things up so
+      that everything is installed in "/usr/local".  You can change
+      this by specifying a different "prefix" in the "configure" command:
+
+        ./configure --prefix=/your/install/path
+
+      If your Tcl installation is sitting somewhere other than right
+      next to this package, you may have to tell configure where to
+      find it:
+
+        ./configure --with-tcl=/usr/local/tcl/lib
+
+      If you want to debug, you can add this option as well:
+
+        ./configure --enable-symbols
+
+  4)  Build the libraries and the executables.  From the toplevel
+      directory type:
+
+        make all
+
+  5)  Install the libraries, executables, man pages and script files.
+      From the toplevel directory type:
+
+        make install
+
+  6)  Use the final product:
+
+        $ tclsh
+        % package require Itcl
+        % itcl::class Foo { method testing {} { return "testing!" } }
+
+      If you don't like the itcl:: prefix, you can import the itcl
+      commands into the global namespace:
+
+        % namespace import -force itcl::*
+        % class Foo { ... }
+
+      Note that you'll find the same behavior with [incr Widgets]:
+
+        $ wish
+        % package require Iwidgets
+        % iwidgets::optionmenu .om
+        % namespace import -force iwidgets::*
+        % optionmenu .om
+
+
+ Installation on Windows
+------------------------------------------------------------------------
+ Follow the usual TEA instructions for building under Windows.
+ Requires Cygwin and Visual C++ 6.0.
+
+
+ Installation on Macintosh Systems
+------------------------------------------------------------------------
+ Many thanks to Jim Ingham for putting up Macintosh binaries for
+ various releases.  Check out http://www.tcltk.com/itcl for downloads.
+
+
+ Integrating [incr Tcl] with other extensions
+------------------------------------------------------------------------
+ [incr Tcl] is now a pure extension to Tcl/Tk.  Therefore, if you
+ build the Tcl/Tk core and this package with the "--enable-shared"
+ option, you can load [incr Tcl] into a vanilla tclsh, as follows:
+
+     package require Itcl
+
+ Similarly, you can load [incr Tcl] along with the [incr Tk] mega-widget
+ facility into a vanilla wish, as follows:
+
+     package require Itk
+
+ You can load [incr Tcl], [incr Tk], and the [incr Widgets] package
+ like this:
+
+     package require Iwidgets
+
+ If you require the earlier release of [incr Widgets] for some reason,
+ you can specify the version number:
+
+     package require Iwidgets 2.2
+
+ Other packages should plug-and-play in the same fashion.
+
+ >> NOTE:  If you have any trouble with dynamic loading on UNIX
+ >>        systems, you may need to set your LD_LIBRARY_PATH environment
+ >>        variable to include the "lib" directory for your Tcl/Tk
+ >>        installation.  For example:
+ >>
+ >>        LD_LIBRARY_PATH="/usr/local/tcl/lib:$LD_LIBRARY_PATH"
+ >>        export LD_LIBRARY_PATH
+
+
+ Acknowledgements
+------------------------------------------------------------------------
+ Thanks to Chad Smith for writing an excellent, comprehensive
+ book "[incr Tcl/Tk] from the Ground Up," for many helpful bug
+ reports, and for nudging me along to fix things.
+
+ Thanks to Matt Newman for providing the Tcl-only "tcl++" package
+ that helped so many people move forward while waiting for the
+ itcl3.0 release.
+
+ Thanks to John Ousterhout and the Scriptics team for bundling this
+ package with their TclPro product.  It's gratifying to see [incr Tcl]
+ accepted as a mainstream product.
+
+ Thanks to Mark Ulferts, Sue Yockey, John Sigler, Bill Scott, Alfredo
+ Jahn, Bret Schuhmacher, Tako Schotanus and Kris Raney for building
+ the [incr Widgets] package.  With a sketchy overview and a crappy
+ prototype of [incr Tk], they managed to build a nice set of mega-widgets.
+ Their initial designs helped me smooth out the rough spots in [incr Tk].
+ Thanks especially to Mark Ulferts for keeping things up over the past
+ few years, and for streamlining the package for itcl3.0.
+
+ Thanks to Jan Nijtmans, Karel Zuiderveld, and Vince Darley for helping
+ to keep up with Tcl/Tk releases, and for supporting the "plus" and
+ "dash" patches under [incr Tcl].
+
+ Thanks to Forest Rouse and ICEM CFD Engineering for integrating
+ [incr Tcl] into their Tcl/Tk compiler.  This is a large undertaking,
+ and they have done an excellent job.
+
+ Thanks to Alfredo Jahn and Bret Schuhmacher at WebNet for helping
+ to create the [incr Tcl] web site, and for maintaining the
+ [incr Tcl] mailing list for many years.
+
+ Thanks to extension writers like Mark Diekhans (tclX) and Ioi Lam (Tix)
+ for making their packages compatible with [incr Tcl].
+
+ Thanks to George Howlett for teaching me how namespaces should really
+ work.  He has been a constant source of inspiration, and has kept
+ a careful watch against many bad ideas.  Jim Ingham fleshed out the
+ notion of explicit scoping, added many nice features to [incr Tk],
+ and has helped tremendously with porting.  Lee Bernhard worked on
+ distributed systems with Iclient/Iserver, and also helped with porting.
+ Bill Scott, with a steady stream of bug reports, helped me understand
+ the questions that a typical user might have.  He forced me to reinvent
+ the paradigm on more than one occasion.
+
+ Thanks to all of the alpha-testers that helped me polish this release.
+
+ Thanks to Mark Harrison for his enthusiasm and support.  Due in
+ large part to his evangelism, I have been able to make [incr Tcl]
+ development a mainstream activity.
+
+ And many thanks to my wife Maria and my children Maxwell and Katie
+ for putting up with all of this.
+
+--Michael
+. . . . . . . . . . . . . . . . .                  ---_-----------
+                                . . . . . . . . . | c a d e n c e |
+      Michael McLennan          .                  ---------------
+      mmc@cadence.com           .      Cadence Design Systems, Inc.
+      phone: 610-398-6348       .      7535 Windsor Dr. Suite A-200
+        fax: 610-530-7985       .      Allentown, PA  18195
diff --git a/itcl/itk/TODO b/itcl/itk/TODO
new file mode 100644 (file)
index 0000000..8183f73
--- /dev/null
@@ -0,0 +1,89 @@
+=======================================================================
+ Following is a list of notes describing things which might be
+ fixed or changed in a future release of [incr Tcl]
+=======================================================================
+
+Handle this case more elegantly:
+
+class Foo {
+    constructor {args} {
+        _init
+    }
+    proc _init {} {
+        puts "once!"
+        proc _init {} {}
+    }
+}
+Foo #auto
+Foo #auto
+
+
+itcl "wish" list
+------------------------------------------------------------------
+- add virtual inheritance
+- add "border" type to canvas widget
+- add "validate" and "valid" commands for type validation
+- add "unknownvar" and provide access to object data members: "obj.var"
+- check namespace [info class] {...} as a replacement for "virtual"
+- fix "auto_load_all" problem in Tcl-DP
+  (Their implementation uses "info commands" to verify that a command
+  has been successfully autoloaded, but absolute command names like
+  "::iwidgets::fileselectiondialog" don't show up.)
+- fix "auto_load" mechanism to be extensible like "unknown"
+- fix Itcl_RegisterC() to support ClientData
+- core dump with "cmdtrace" (tclX thing?)
+
+- ideas from Nelson Macy:
+  - add "delegate" keyword for inheritance via composition?
+  - add "forward" keyword for implementing error handlers
+  - add "get" code to public variables for "cget" access
+
+- equivalent of constructor/destructor for classes
+- protected/private recognized for constructor/destructor
+- add something like Tk_CreateWidgetCommand() for widget developers
+
+
+itcl documentation cleanup
+------------------------------------------------------------------
+- add "Finance: Trading Systems" to commercial uses of Itcl (Deshaw)
+- update doc:  "config" code also gets invoked on startup for itk widgets
+- update doc:  add to FAQ:  class with common array interacts with Tk widget
+
+itcl "to do" list
+------------------------------------------------------------------
+
+- write "auto_load_all" proc for Tcl-DP
+
+- bad errorInfo:
+  > More specifically, the constructor for the class did the following:
+  >
+  >         set hull [info namespace tail $this]
+  >         ::frame $hull
+  >
+  > One of the class variables had a configuration script:
+  >
+  >     public variable textvariable "" {
+  >         if { $textvariable != "" } {
+  >             regsub "\\(.*\\)" $textvariable "" global
+  >             global ::$global
+  >             trace variable $textvariable w "$hull adjust"
+  >         }
+  >     }
+
+- add "@body" in as many places as possible to support Tcl compiler
+
+- check out itcl with Tix:
+     lappend auto_path $env(TIX_LIBRARY)
+     source "$env(IWIDGETS_LIBRARY)/init.iwidgets"
+
+     iwidgets::Dialog ._Arcattributes -title "Code: Arc Annotations"
+     -modality application
+
+     set attrframe [._Arcattributes childsite]
+
+     tixScrolledHList $attrframe.ports
+     [$attrframe.ports subwidget hlist] configure -selectmode browse
+
+     pack $attrframe.ports -expand yes -fill both -padx 10 -pady 10
+
+     ._Arcattributes activate