Date: December 2, 1992
From: Jamshid Afshar ([email protected])
Subject: JCOOL 0.1 -- A free C++ class library using templates
This is the README file for JCOOL 0.1. This file and the JCOOL
library are available by anonymous ftp at cs.utexas.edu in the
directory pub/COOL as the files 'jcool01.txt' and 'jcool01.zip'.
JCOOL is a modified version of GECOOL 2.1 (also available at
cs.utexas.edu in pub/COOL/GECOOL2.1.tar.Z). GECOOL 2.1 is a reworking
and enhancement of Texas Instrument's "C++ Object Oriented Library"
(at csc.ti.com in ~ftp/pub/COOL.tar.Z) by some programmers at General
Electric. See the file 'coolhist' for more information about the
history of COOL and its spinoffs.
JCOOL's main difference from COOL and GECOOL is that it uses real C++
templates instead of a similar syntax that is preprocessed by a
special 'cpp' distributed with COOL and GECOOL. Of course, this
means JCOOL can only be compiled with a compiler implementing
templates. I named the library JCOOL so as not to confuse it with
other current or future versions and spinoffs of COOL. Hopefully any
further work will be merged to create a freely available and usable,
portable general C++ class library. JCOOL includes the classes
AVL_Tree, Association, Bignum, Binary_Tree, Bit_Set, Complex,
Date_Time, Envelope, Gen_String, Handle, Hash_Table, Iterator, List,
M_Vector, Matrix, N_Tree, Pair, Quaternion, Queue, Random, Range,
Rational, Regexp, Set, Shared, Stack, String, Timer, Value, Vector.
Most of these are class templates. So far JCOOL has only been
compiled under Borland C++ 3.1.
C++ is a powerful tool but its major benefits cannot be achieved, nor
can a new user be productive, without a good data structures
library. While I hope JCOOL eventually leads to something any C++
user can confidently start with or incorporate into their existing
code, this version of JCOOL is 0.1 to reinforce the fact that it is
far from being fully tested or stable. Some of the tests and
examples fail either because of bugs in the code or the compiler.
This library is provided without warranties of any kind.
My main goal in releasing it now is to improve the overall quality of
C++ compilers, especially with respect to templates. I found (and
reported) numerous BC++ bugs in the process of building JCOOL. Please
try to compile it on any C++ compiler claiming to support templates
and (loudly) report the bugs that will inevitably pop up. While I do
have a long "todo" list of bug fixes and enhancements, and I do want
to be kept abreast of any work, I will probably not have time to do
much work on JCOOL in the near future. I am also somewhat worn out
after fighting BC++ 3.1 over the past several months (though I'm sure
Borland loves me :-). I will be eager to enhance JCOOL once a new,
more bug-free version of BC++ is released. Please don't let this
disclaimer keep you from sending comments or suggestions. I'm always
interested in bug reports, fixes, or suggestions on improving this
package. Please also consider letting others know about bugs or
ports by posting to comp.lang.c++.
Get JCOOL01.ZIP from cs.utexas.edu in pub/COOL. It will unzip into:
tests/ - test programs, makefile for tests
examples/ - example programs, makefile for examples
readme - *this file
todo - bugs, plans
changes - changes, including GECOOL changes from COOL
makefile - Borland C++ 3.1 makefile to create cool.lib
coolhist - a COOL history report courtesy of Mary J. Fontana
renlong.sh - renames all files to their original UNIX names
renshort.sh - renames all files to DOS (8.3) names
The makefile assumes you have BC++ 3.1 installed in c:\borlandc. The
large memory model is used. Please read 'todo' and 'changes' before
using JCOOL as they mention bugs I've encountered. After modifing
'makefile' if necessary, do the following to install into your
D:\FREELIBS directory and compile your program MYPROG.CPP.
D:\FREELIBS>unzip -d jcool01 => creates COOL directory
D:\FREELIBS\COOL>make => creates COOL.LIB
D:\FREELIBS\COOL\TESTS>make runall.out => creates test*.exe and runs them
D:\FREELIBS\COOL\EXAMPLES>make runall.out => creates ex*.exe and runs them
-ml -vi- -w -w-sig -w-amp
myprog.cpp d:\freelibs\cool\cool.lib => creates myprog.exe
See the TESTS and EXAMPLES directories for sample code and see the
header files themselves for class documentation. You should include
JCOOL headers by specifying the 'cool' path (eg, #include
libraries containing the same file names. Use the full,
case-sensitive file name so that your code is portable to less
restrictive file systems. You should #include the .C file of
template classes in one of your modules (see the BC++ docs for more
information about template instantiation).
Thanks to the following for all their work on the design and
implementation of COOL and GECOOL, and for making their work freely
Mary J. Fontana ([email protected])
Van-Duc Nguyen ([email protected])
A general thanks to the USENET community, especially comp.lang.c/c++,
for being a wealth of information and ideas.
Finally, a special thanks to my s.o. Walter for putting up with my
all-nighters at the office working on this and other C++ projects.
Btw, if you are in the Austin area and looking for an expert C++
programmer with 3 years work experience under DOS/MS-Windows and the
ability to quickly learn other environments, please contact me for a
// Copyright (C) 1991 Texas Instruments Incorporated.
// Permission is granted to any individual or institution to use, copy, modify,
// and distribute this software, provided that this complete copyright and
// permission notice is maintained, intact, in all copies and supporting
// Texas Instruments Incorporated provides this software "as is" without
// express or implied warranty.
Email: [email protected] or [email protected]
USMail: 401 E. 4th Street #403, Austin, TX 78701
USPhone: (512) 474-7455