home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
yacl-012.zip
/
readme.txt
< prev
next >
Wrap
Text File
|
1995-04-10
|
8KB
|
225 lines
README.TXT for YACL
Version 1.2
Apr 10, 1995
This is YACL (Yet Another Class Library). It is a general-purpose
programming library designed with the idea of identifying and
implementing useful object abstractions that frequently occur in
application development, so that development effort can be cut down
significantly. The abstractions are designed to be
application-domain-specific rather than platform-specific. This makes
it possible for YACL to be ported to multiple platforms with little
effort, and any application that is coded to use YACL's classes will be
runnable on any of the supported platforms with merely a recompilation.
YACL is part of an ongoing project to create a completely portable
program development environment.
YACL consists of three kinds of classes: base classes (consisting of
primitive data types and container classes), i/o classes (for data
storage and retrieval) and GUI classes using a variation of the
Model-View-Controller paradigm. The base and i/o classes of YACL have
been designed to support the most efficient algorithms possible, and to
impose as few storage constraints as possible. All classes (base, i/o
and GUI) have been tested for memory and resource leaks.
CONCEPTUAL FEATURES:
- Template-based containers for code sharing
- Easy inter-object communication via notification (used
extensively in the GUI framework -- see below)
- Support for storage and retrieval of objects in binary form
- Support for very large sequences, sets and maps (with up to about
89 million entries), even under MS-Windows, thus circumventing
the 64K segment size limitation
FUNCTIONAL FEATURES:
Base library:
- primitive data types: string, date, time of day, byte array,
byte string
- container classes (template-based): sequence (in lieu of
lists), set, bitset, map, tree; as noted above, the sequence,
set and map can have size up to about 89 million, even under
MS-Windows.
- utility classes: string splitter, tree walker
- memory leak checker class, and support for checking for leaks
and memory corruption errors
File I/O library:
- SlottedFile for managing files with fixed-length records (well
suited for tables in relational databases); manages upto 800
million records with at most five I/O operations per record
- ByteStringStore for managing files with variable-length
records (whose lengths can even grow and shrink dynamically)
-- suited, for example, for maintaining secondary indices or
other "binary large object" data
B-trees:
- In-memory and disk-based B-trees supported, both sharing the
same B-tree algorithm code
- Can be used in conjunction with the above file I/O library for
B-trees with variable-length keys
GUI library:
- Portable abstractions for building graphic user interfaces,
based on the model-view-controller paradigm
- Leverages platform's native API. Class implementations use the
platform's native API, so that applications will have the
native look and feel.
- GUI objects well integrated with base library, to enhance the
overall power and reusability of classes
- GUI objects: menus, dialogs, buttons, listboxes, button
groups, and the like
- Graphic resource objects: cursors, fonts, pens, colors and
brushes
- Graphic objects: bitmaps, ellipses, rectangles, arcs and pie
wedges
- Supports printing under OS/2 and MS Windows
- Provides for easy composition of basic objects, as well as
high reusability
- Includes many demo programs
CURRENT STATUS (As of February 23, 1995):
The YACL classes now provide equivalent functionality under all three
platforms: MS/Windows, OS/2 PM and Unix with X/Motif. Here is a summary
of the platforms and compilers it has been tested under.
Platform Compiler
--------- --------
MS/Windows Borland C++ 3.1 and later
OS/2 Warp EMX (GNU) C++
Borland C++ 1.5
Linux GNU C++ 2.6.0
SunOS 4.1 GNU C++ 2.6.3
DEC Ultrix GNU C++ 2.6.0
NCR SysV GNU C++ 2.6.0
The implementations do not use any compiler-specific features, and so it
should be easy to build the library using other compilers. The base
classes will not compile under versions of GNU C++ earlier than 2.6.0
due to bugs in the compiler. The base classes do not (yet) compile
under Watcom C++, due to a bug in the 10.0a compiler. Watcom is aware
of this fact, and the bug will likely be fixed in the next release of
their compiler.
YACL cannot be compiled with any compiler that does not support
templates.
Under Microsoft Windows, YACL's classes have been tested for memory and
resource leaks using Bounds Checker for Windows.
DOCUMENTATION:
A tutorial and reference manual for YACL will appear as a book published
by Addison-Wesley in the fall of 1995. If you are interested in
looking at sample chapters from a preliminary draft of the book, please
obtain sample chapters by anonymous ftp from the host aw.com, in the
directory aw.computer.science/YACL. All comments, criticisms and
reports of bugs or other errors will be gratefully accepted by the
author at the address below.
RESTRICTIONS AND LIMITATIONS:
Resource-based dialogs and custom cursors are supported only under
MS/Windows.
Combo boxes and the PrintJob class are only supported under MS/Windows
and OS/2.
I am still working on creating shared library (DLL) versions of the
library.
FUTURE WORK:
Work on removing the above limitations and adding new features to the
base and GUI classes is under way.
RELATED PROJECTS:
A GUI layout designer (with functionality similar to Borland's Resource
Workshop) and a graphic editor are currently under development.
An awk script is available for translating MS-Windows resource files
into a form usable by YACL. Direct support for dialogs loaded from
Windows resource files is also available; this is, however, a
non-portable feature.
AUTHOR:
M. A. Sridhar
Department of Computer Science
University of South Carolina
Columbia, SC 29208
USA
e-mail: sridhar@cs.scarolina.edu
Phone: (803) 777-2427
Fax: (803) 777-3767
N. Bhowmik, currently with Object Design Inc., coded
the initial version of the GUI classes of YACL.
COPYRIGHT:
This software is Copyright (C) M. A. Sridhar, 1994 and 1995. You are
free to copy, modify and distribute this software as you see fit, and to
use it for any purpose, provided this copyright notice and the following
disclaimer are included without modification in all copies and
modifications.
DISCLAIMER:
The author makes no warranties, either expressed or implied, with
respect to this software, its quality, performance, merchantability, or
fitness for any particular purpose. This software is distributed AS IS.
The user of this software assumes all risks as to its quality and
performance. In no event shall the author be liable for any direct,
indirect or consequential damages, even if the author has been advised
as to the possibility of such damages.
AVAILABILITY:
YACL is available for anonymous ftp from ftp.cs.scarolina.edu
(129.252.131.11), in the directory /pub/yacl. Please send your comments,
suggestions and bug reports to the author at the above address.