[2138] in comp.os.os2.announce archive
PROGRAMMING: YACL version 1.6 available (portable C++ Classlib)
daemon@ATHENA.MIT.EDU (M. A. Sridhar)
Thu Nov 28 18:58:30 1996
To: os2ann.DISCUSS@bloom-picayune.MIT.EDU
Date: 28 Nov 1996 21:46:36 GMT
From: sridhar@cs.sc.edu (M. A. Sridhar)
Reply-To: sridhar@cs.sc.edu (M. A. Sridhar)
Reply-to: sridhar@cs.sc.edu (M. A. Sridhar)
---------------------------------------------------------------------
YACL version 1.6 is now available. The readme file is attached.
Sridhar
README.TXT for YACL
Version 1.6
November 11th, 1996
See the files doc/news.txt and doc/changlog.txt for details about the
extensions of the current version over previous versions.
About YACL:
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 yields two major benefits:
- The programming task becomes easier, since the application developer
has high-level objects available.
- Portability is a natural spinoff: 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. YACL's base and I/O classes 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' segmented architecture
- 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 up to 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. So GUI applications 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, 3-d graphics with raised and recessed lines and
rectangles
- Supports printing under OS/2, MS Windows and Windows NT
- Provides for easy composition of basic objects, as well as
high reusability
- Includes many demo programs
CURRENT STATUS (As of November 11th, 1996):
The YACL base classes provide equivalent functionality under DOS, Microsoft
Windows, Microsoft Windows NT, OS/2 versions 2.1 and Warp and several
flavors of Unix. The GUI classes provide equivalent functionality under
four platforms: MS Windows, Windows NT, OS/2 PM and Unix with X/Motif. Here
is a summary of the platforms and compilers it has been tested under. (The
YACL package includes makefiles for all the platforms and compilers listed
below.)
Platform Compiler
--------- --------
MS Windows Borland C++ 4.0 and later
Watcom C++ 10.0a
MS Windows NT Borland C++ 4.0 and later
Watcom C++ 10.0a
Microsoft Visual C++ 2.1
OS/2 2.1 Borland C++ 1.5
OS/2 Warp EMX (GNU) C++ 2.6.3 and later
Borland C++ 1.5
Watcom C++ 10.0a
IBM Visual Age C++ 3.0
Linux GNU C++ 2.6.3 and later
SunOS 4.1 GNU C++ 2.6.3 and later
Solaris 2.3 Centerline C++ version 4.0
GNU C++ 2.6.3 and later
SGI Irix 5.3 SGI Delta C++
GNU C++ 2.6.3 and later
DEC Ultrix GNU C++ 2.6.3
NCR SysV GNU C++ 2.6.3
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.1 due to bugs in
the 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.
AVAILABILITY:
YACL is available via:
World-wide web: http://www.cs.sc.edu/~sridhar/yacl.html
Anonymous ftp: From ftp.cs.sc.edu (129.252.130.4), in the
directory /pub/yacl. Log in as anonymous, with
your e-mail address as password.
There is also a YACL mailing list. To be included in it, please send e-mail
to yacl-list@cs.sc.edu with the message "subscribe yacl-list address" where
address is your e-mail address.
Please send your comments, suggestions and bug reports to the author at the
address below.
HOW TO USE:
Look in the directory doc for compiler- and platform-specific
documentation. Also look in the file shiplist.txt for the names of
files that document the use of YACL with various compilers.
DOCUMENTATION:
A tutorial and reference manual for YACL, titled "Building portable C++
applications with YACL," is now available from Addison-Wesley Publishing
Company (ISBN 0-201-83276-3). This book describes everything needed to use
YACL effectively. All comments, criticisms and reports of bugs or other
errors in both the software and the book will be gratefully accepted by the
author at the address below.
Note that the book describes YACL version 1.3, which was released in July
1995. Functionality added subsequently is not described in the book; see the
files doc/changlog.txt and doc/news.txt for details.
COPYRIGHT:
This software is Copyright (C) M. A. Sridhar, 1996. 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 of the source
code. (If you do not distribute this source code or modifications thereof,
you need not include this copyright or disclaimer.)
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.
AUTHOR: M. A. Sridhar
Snail mail: E-mail: sridhar@cs.sc.edu
Department of Computer Science WWW: http://www.cs.sc.edu/~sridhar
University of South Carolina Phone: (803) 777-2427
Columbia, SC 29208 Fax: (803) 777-3767
USA
CONTRIBUTORS:
N. Bhowmik, currently with Object Design Inc., coded the initial
version of the GUI classes of YACL.
Ram Sampath implemented several aspects of Motif functionality.
Holger Pfaff (holger.pfaff@class.de) provided several bug fixes and
enhancements under MS Windows and Motif.
Tony T. Ton (t.t.ton@massey.ac.nz) helped out with bug fixes and
enhancements under OS/2.
Tom Satter (tsatter@purecode.com) contributed the fixes and makefiles
for IBM Visual Age C++ 3.0 under OS/2.
Rajesh Chandran (chandran@cs.sc.edu) showed how to make YACL
applications compatible with editres under X windows.
Jody Hagins (gamecox@magicnet.net) contributed makefiles for Centerline
C++ under Sun Solaris.
RELATED PROJECTS:
Bitmap viewer: (Author: Tony Ton)
The directory apps/bmpview includes a bitmap viewer for displaying
Windows bitmaps.
Dialog editor: (Author: M. A. Sridhar)
Included in the distribution, in the directory apps/dlged, is a
simple dialog editor that outputs YACL ViewDescriptor arrays. This
array description is platform-independent.
Conversion from Windows RC files:
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 under Windows and Windows
NT; this is, however, a non-portable feature.
Macintosh port:
Ken Crismon (kcrismon@sybase.com) is working on porting YACL to the
Macintosh environment.
Other contributions:
The directory contrib is the beginnings of contributed software by
various people. At present, it contains two directories:
- contrib/accel contains derived classes for supporting
accelerator keys, contributed by Ludovic Brenta
(brenta@gprhp.insa-lyon.fr).
- contrib/reich contains numerous utility classes contributed by
Jorg-Peter Reich.
Networking classes:
Frank O'Dwyer (fod@brd.ie) has written networking classes using
YACL. Check out http://www.iol.ie/~fod/ffc.html.
-------------------------- END OF README.TXT -----------------------------
M. A. Sridhar | sridhar@usceast.cs.sc.edu (Internet)
Department of Computer Science | http://www.cs.sc.edu/~sridhar/
University of South Carolina | (803) 777-3767 (Fax)
Columbia, SC 29208 | (803) 777-2427 (Ma Bell)
=====================================================================
-- To submit to c.o.os2.announce: POST (or email os2_ann_req@bix.com)
-- For comments to the moderator: email lfirrantello@bix.com.
- for posting guidelines see: http://www.bix.com/pub/os2ann/pindex.htm