## -*-Text-*-
# ###################################################################
# EvoX - evolution in complex systems
#
# FILE: "changes"
# created: 15/4/96 {9:03:24 pm}
# last update: 24/7/96 {4:23:06 pm}
# Author: Vince Darley
# E-mail:
# mail: Division of Applied Sciences, Harvard University
# Oxford Street, Cambridge MA 02138, USA
# www:
#
# ###################################################################
##
To Do:
File-name onfiguration options don't deal with command completion.
So if I do:
object configure -Input_file ~/data/filen
it won't complete.
Recent Changes:
--released version 1.1--
24/7/96 Some minor changes to remove a couple of warnings, and fix
compilation of some obscure argument templates.
23/7/96 Information configuration option command completion implemented.
Simplified a bunch of code as a result. Fixed so configuration
options get archived if desired.
22/7/96 The argument parsing class has a few new methods to peek
ahead on the argument list and check if an argument is of
type 'int', 'float' or 'string'. This can be useful if
your commands need some sort of decision process in the
way in which they parse their arguments.
20/7/96 Cpptcl now loads a 'cpptcl.tcl' library file by default.
This is partly useful, and partly to show you how to use
a new feature of the tcl_stream class which can locate
your library files for you (if you use Itcl --- if you don't,
just set the compiler flag 'NO_ITCL' and the new code will
vanish).
20/7/96 Quite major changes. Moved the metaobject functionality from
Cpptclextra into Cpptcl. Now the creation of any C++ object
is best handled through the metaobject. It can keep track of
your hierarchy, answer questions about it, and create objects
of specified types very easily. Backwards compatibible in
almost all respects.
Archival of object creation (if desired), and status/error
messages are handled by a split-off 'recordkeeper' object,
rather than by the metaobject as before.
Made the Cpptcl API more explicit.
8/7/96 Removed defunct method 'operator ||' from class tcl_args
--released version 1.03--
5/7/96 Added a new procedure 'Cpptcl_PkgInit' which you can use
to simplify your init procedure. See the Cpptclextra init
for an example.
5/7/96 Added more comments to the demo, and put it on-line
5/7/96 Put in decent error messages for setting of options with
values which aren't in range. So you now get:
% cpptclControl configure -Status_alert_level 11
read partial cmd 'cpptclControl configure -Status_alert_level'
but failed to convert next argument '11'to the range: [-1,10];
syntax should be 'cpptclControl configure -Status_alert_level value'
%
5/7/96 Fixed 'obj configure -Input_file "Name with spaces"' so it
works (good on MacOS where we can have filenames with spaces)
29/6/96 Added demo, and fixed some stuff in configure/makefile
--released version 1.02--
28/6/96 Changed name of file 'cpptclextra_objects' to 'cpptclextra_init'
for consistency.
27/6/96 Now check for limits on observables whose limits are declared
(e.g. cpptclControl:Status_alert_level = -2 gives an error)
The error messages for these are currently rather poor.
26/6/96 Added a utility procedure 'documentObject' which extracts
help text on a cpptcl object's commands. e.g.
% documentObject cpptcl
cpptcl author : name and e-mail address for bug reports
cpptcl complete : complete a command on a Cpptcl object
cpptcl isCpptcl : is this a Cpptcl object
cpptcl maxCompletion : return maximum length common prefix for last completion
cpptcl origCommand : return length of command which was completed
cpptcl rename : changes the Tcl command name of the object
cpptcl webPage : web page for online documentation
In doing so, fixed a few cosmetic bugs in the C++ code.
25/6/96 Neatened a few things so some lists which are returned are sorted
alphabetically (e.g. 'Toaster configure')
25/6/96 Object configuration options are checked after construction,
so you can do 'Toaster t -size 5 -color Green -output t.txt'
to construct and configure an object. This works for contained
observables and files (input or output).
If configuration fails, the object is still constructed, but
an error message will be signalled. Configure options are parsed
in a left-to-right fashion, terminating on an error.
25/6/96 Added checking for sub-object commands so you can now do:
cpptclControl:Status_alert_level = 0
or
cpptclControl Status_alert_level = 0
i.e. if a sub-object exists with the given name, it is sent
the command. Potential problems are that a sub-object could
over-ride the parent's command in this way. Also I currently
do not add sub-object names to the 'arg' error message so
'cpptclControl ' will not list the sub-objects as possible
commands (easy to change but perhaps not desired). Feedback
is most welcome!
The basic purpose of this is so that ultimately 'cpptclControl:St..'
does not exist at the top level; i.e. my objects will become like
namespaces. I need to look into the details of this a bit more.
--released version 1.0--
21/6/96 Added command completion to the 'cpptcl' package, and made it
a real Tcl package. Major improvement! Separated 'cpptcl' from
the rest of the evox system.
21/6/96 Many minor changes including partial re-integration of the old
Tcl/Tk interface. Now some of it works with Itcl2.1/Itk/...
24/5/96 Now use DOC++ for automatic documentation generation. See my web
pages for the results. A bit more documentation is required, but
this tool makes it all a lot easier.
12/5/96 Significant changes to the info_source_XXX hierarchy, although
no changes are visible to user-code. I did this to allow a bit
more flexibility in declaring sources, so that C++-Tcl interfaces
can be generated automatically in the future.
30/4/96 A few simplifications to 'tcl_args' allowing the direct reading
of more classes from the argument list. Itemised variables now
read and write with their names (they are like 'enum' in C). For
backwards compatibility they will read from numbers too.
23/4/96 Various more C++-incompatible changes which make for a much simpler
procedure for construction and manipulation of objects from the
Tcl interface, and allow your C++ code to have far fewer checks
in it.
19/4/96 Added function 'Cpptclextra_Init' which loads in just the
two libraries 'Cpptclextra' and 'Cpptcl', creating a new
object 'cpptclControl' in the process.
19/4/96 Improved the parsing system immensely. It now works whether
or not excepting handling is supported. The only disadvantage
if you don't use exception handling is that objects constructed
unnecessarily (after an error has been thrown) may not be
destroyed, thus wasting memory. However, such situations need
not arise with careful coding. C++/Tcl interfaces are now
trivially self-documenting! Tested using gcc2.7.2 and CW8.
Totally backwards-incompatible (at the C++ level; old scripts will
still work), but thankfully so!
16/4/96 Beginnings of a better system for parsing tcl commands. It's
much more typical of C++, and makes for simpler user coding.
The only drawback is that it requires exceptions (v. v. simple
ones, but exception nonetheless). I'll retain backwards
compatibility until g++ supports my new code.
========
History:
Various releases from 1994 to early 1996 to individuals for research purposes.