			Object Tcl 1.0
			----------------

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/devt/ObjectTcl/

Building 
--------

The distribution comes with an auto configuration file called "configure" that
will generate a Makefile specific for your environment. Within the
distribution top level directory type "./configure".

The Makefile generates is suitable for use with tc7.3/tk3.6 and tcl7.4/tk4.0.

The resulting Makefile has the following targets:

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".

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

owish:		This is a version of the Tk shell that includes th Object
		Tcl extension.

otcltest:	This is similar to the otclsh target except it also has the
		C++ test classes built in.

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

test:		This target executes the test script "tscript found in the
		"tests" subdirectory.

install:	Install Object Tcl libraries and public header files.

clean:		Remove all of the derived object and binary files.

distclean:	Cleans the Object Tcl distribution completely including
		Makefile and auto configuration cache files.

Environment
-----------

Object Tcl makes use of a Tcl initialisation file, ./library/otcl.tcl. This
is found by the environment variable OTCL_LIBRARY that should point at the
directory containing the otcl.tcl file.

Platform Problems
-----------------

	On SCO ODT3.0 using the C++ language system, the compiler
	flag "-dbx" must be used (CXXFLAGS in the Makefile) to stop
	a multiple declaration problem.

	On SunOS 4.x place a -D_SUNOS4 on the CXXFLAGS var in the Makefile

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

The directory "tests" contains the test script "tscript".

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

To execute the test, type "make test" from within the top level Object Tcl
directory or cd to the tests directory and type "../otcltest tscript".

The test script automatically compares the actually results aginst the expected
results and reports any differences. If all tests pass then no exceptions
will be reported.

Win32 Port
----------

Object Tcl has been ported to Win32. Checkout the Win32 subdirectory for
more information.

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.

Examples
--------

Example code can be found in the "examples" subdirectory.

A simple example exists in examples/Simple and a more complicated
example of Object Tcl-DP is given in examples/TicTacToe.

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 application.

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

o	You can attempt to otclDelete <class> and it core dumps. Not
	investigated yet but I assume you can otclDelete <anything other than
	an object> and it will core.

Bug & Suggestion Reporting
--------------------------

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

Future
------

The following list outlines the areas we are considering for future
releases (not in any order).

o	Addressing mutli-interpreter issues.

o	CDL Additions for
	-in, -out and -inout arguments + C++ reference types.

o	Run Time Type Information.

o	Autoloading of class on first use.

o	Debugging support.

o	Polymorphic methods based on Object arguments, exported from C++
	possibly a way of typing arguments in Tcl.

o	Polymorphic methods based on number of arguments/
	
o	Exporting standard C and C++ functions using CDL.

o	Support for enum and #defines from C/C++.

o	Operator exporting from C++.
	New "operator" command in CDL.

o	Void * as a CDL type.

o	Variable arguments passed between C++ and Otcl.
	Could be done with an "argcargv" CDL type command
	that actually transforms to two variables.

o	Support for exporting abstract C++ classes to Otcl along
	with Otcl understanding and enforcing the concept of abstract
	classes from C++ an in Otcl.

o	Protected methods
