Introduction
------------

Firstly, thankyou for taking the time to download the Object Tcl extension and
we hope you find it useful. We welcome any comments you may have and can be
contacted at "otcl@x.co.uk".

We would like to take this opportunity to draw your attention to the Object Tcl
license in file "LICENSE.TXT". This license is also duplicated in all of the
source files.

The Object Tcl home page resides at:

	http://www.x.co.uk/ObjectTcl

Makefile
--------

The Makefile is pretty simple at the moment and will probably be replaced
by autconf files for the next release.

The Makefile shouldn't require too much modification for your circumstances.

The following targets are available from the Makefile:

libotcl.a:	This is the Object Tcl library that implements the
		Tcl extension package. It is built from all of the source
		files prefixed with "Otcl".

tclsh:		This is a version of the Tcl shell that includes the Object
		Tcl extension.

tsh:		This is similar to the tclsh target except it also has the
		C++ A class built in, available from A.{H,C}, and the C++
		classes from Test.{H,C}.

cdl:		This is the CDL processor and it is built from all of the
		source files prefixed with "Cdl".

Test Script
-----------

The directory "tests" contains the test script "tscript" and the expected
results "tscript.expected".

The script "tscript" is a Tcl script that performs a sanity check upon the
tsh executable.

To execute the test, type "./tscipt >& tscript.recent" from within the tests
subdirectory.

Compare the results recorded in "test.recent" with "test.expected" using diff.
The only differences should be that some error messages print out object
references (pointers) that change for each run and some possible output stream
interleaving from the C++ classes. 

Docs
----

The Overview, Language reference and Binding reference web pages are duplicated in the
docs subdirectory in HTML, TEXT and PostScript.

Alternatively, use our web server for the documents.

Example
-------

Example code can be found in the example subdirectory.

Issues
------

There is a general issue with the Object Tcl system regarding the scoping of
C++ classes, objects and Tcl interpreters.  Obviously C++ classes and objects
have process scope but Object Tcl objects have only interpreter scope.
At the moment, the Object Tcl system will not work correctly with a multiple
interpreter application.

Related to the above problem is an issue regarding which interpreter to use
for evaluating method bodies when the method call originated, via dynamic
binding, from C++. The C++ code doesn't understand Tcl and isn't passing around
Tcl interp structures for use in evaluation. The current solution to this 
forces the one interpreter restriction on an applications.

Known Bugs
----------

o	Test 3.1. 
	Array attributes, class and instance, have not been implemented yet.
	Looking at 
		attribute att1() {{key value} {key value}}
        as an initializer.

o	Test 22.1
	$this is available in a constructor but cannot be used during 
	the construction of an object to invoke another method upon the object.

o	Test 18.3
	Looks like you can define a destructor body twice.

o	The transient commands inside otclInterface and otclImplementation
	don't stack up the previous versions of a command with the same name.
	Any commands called constructor, method, classMethod, destructor,
	attribute and classAttribute will be blown away by the first class
	description.	

o	Test 2.{33,35}
	Error message is a little misleading.

o	Test 17.{5,6,7}
	Error message doesn't provide enough information.

Bug Reporting
-------------

Please contact us via e-mail @ otcl@x.co.uk with any bugs you find.

Next Release
------------

o	Autoconf installation

o	All of the above bugs fixed

o	Addressing the mutli interpreter issues

o	Increased code coverage by test script

o	CDL Additions. In, Out, Inout flags on arguments, similar
	to CORBA IDL.

o	...

Future
------

o	Run Time Type Information

o	Autoloading

o	Debugging support	

o	...
