[95] in linux-announce channel archive
YACL Version 1.0 available
daemon@ATHENA.MIT.EDU (Lars Wirzenius)
Thu Jan 19 14:24:07 1995
Date: Thu, 19 Jan 1995 18:53:31 +0200
From: Lars Wirzenius <wirzeniu@cc.helsinki.fi>
To: linux-activists@niksula.hut.fi, linux-announce@vger.rutgers.edu
X-Mn-Key: announce
From: sridhar@usceast.cs.scarolina.edu (M. A. Sridhar)
Newsgroups: comp.lang.c++,comp.os.ms-windows.programmer.tools,comp.os.os2.programmer.oop,comp.os.linux.announce,comp.windows.misc,comp.windows.x.motif
Subject: YACL Version 1.0 available
Organization: University of South Carolina - Columbia - Computer Science
Keywords: Multi-platform class library, GUI
Approved: linux-announce@tc.cornell.edu (Lars Wirzenius)
Followup-to: comp.os.linux.development.apps,comp.lang.c++,comp.os.ms-windows.programmer.tools,comp.os.os2.programmer.oop,comp.windows.misc,comp.windows.x.motif
Version 1.0 of YACL is now available for anonymous ftp. Look for the
file yacl-010.zip (or yacl-010.tar.Z if you don't have unzip) in the
directory pub/sridhar on the site ftp.cs.scarolina.edu.
YACL now supports identical functionality between Microsoft Windows
and X/Motif. There have been many bug fixes and enhancements; most are
documented in the file changlog.
Attached is a readme file describing YACL. I will be very grateful for
all bug reports, criticisms and suggestions for improvement.
Sridhar
-----------------------------------------------------------------------
        
                           README.TXT for 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 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
       64 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 2^26  (about 64 million), even
         under MS-Windows.
       - utility classes: string splitter, tree walker
       - memory leak checker     class and support  functionality   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
       - GUI objects well integrated with base  library, to enhance the
         overall power and reusability of classes
         
       - Supports menus,  dialogs,  buttons, listboxes,  button groups,
         cursors, fonts, pens, colors and elementary drawing
       - Provides  for easy  composition  of basic objects,  as well as
         high reusability
CURRENT STATUS:
Here is a summary of current status in tabular form:
                MS/Windows       Unix (Linux and Ultrix)     OS/2 2.1
              Borland C++ 3.1      GNU C++ 2.6.0           Borland C++ 1.0   
                                                                             
Base classes       X                    X                       X            
I/O classes        X                    X                       X            
GUI classes        X                    X                       
All of YACL's  classes have been   tested under Microsoft Windows  using
Borland C++ 3.1, and under GNU C++ 2.6.0 on a Linux machine and on a Sun
Sparc running SunOS 4.1.
The base classes have  also been tested with  Borland C++ for OS/2. (The
base classes will not compile under  earlier versions of  GNU C++ 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;  this will likely be fixed  in  the next release  of
that compiler.
YACL cannot   be  compiled  with  any  compiler  that  does not  support
templates.
DOCUMENTATION:
A tutorial and reference manual for YACL will appear as a book published
by Addison-Wesley   in the summer 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 pub/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.
FUTURE WORK:
The graphic objects  are being ported to  the X/Motif environment;  this
port is  almost complete,  and a  version   will be available   within a
month. At a later date, YACL will be  available under OS/2 PM and (maybe
possibly) the Apple Mac.
RELATED PROJECTS:
A GUI layout designer  (with functionality similar to Borland's Resource
Workshop) is 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@usceast.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), as the  file /pub/sridhar/yacl-010.zip. Please  send
your comments, suggestions and bug reports to the  author at the above
address.
-- 
M. A. Sridhar                  | 
Department of Computer Science | sridhar@usceast.cs.scarolina.edu (Internet)
University of South Carolina   | (803) 777-2427 (Ma Bell)      
Columbia, SC 29208             | (803) 777-3767 (Fax)
--
Send submissions for comp.os.linux.announce to: linux-announce@news.ornl.gov
PLEASE remember Keywords: and a short description of the software.