Newsgroups: comp.lang.c++,comp.os.os2.programmer.misc,comp.os.linux.announce
From: sridhar@usceast.cs.scarolina.edu (M. A. Sridhar)
Subject: [YACL update] New multi-platform C++ class lib: call for testers
Message-ID: <ann-21411.769906771@cs.cornell.edu>
Date: Wed, 25 May 1994 22:59:48 GMT
Approved: linux-announce@tc.cornell.edu (Matt Welsh)

If you are interested in a class library that

     -  provides high-level abstractions for general-purpose
        programming
     
     -  is very portable

     -  is  available for free

I invite you to check out YACL, a new class library now available.
Attached is the README file for YACL.

The development of YACL is well under way, though not complete. The
version available should be considered a beta version; after the bugs
are shaken out (if any :-), I will post a final version on the net.

--------------------------- CUT HERE -------------------------------




This  is YACL (Yet  Another  Class Library).   It  is  designed to be  a
general-purpose  programming library  that   can be  ported  to multiple
platforms with  little  effort, and  such  that 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.


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 using Bounds Checker for Windows.

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

    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 described above, 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:

  YACL has been tested under Microsoft Windows  using Borland C++ 3.1.
The base classes have also been  tested with Borland  C++ for OS/2 and
with GNU C++ 2.5.8 under Linux. A preliminary port  of the GUI classes
to the  X/Motif  environment has  been  quite successful, although  it
needs to be re-worked before being made generally available.

Documentation  is  somewhat sketchy  at the moment;  a detailed document
with examples  is in the  works. A first crack at  a reference manual is
included in the distribution.

An early version of the base classes has  been compiled and tested under
AT&T cfront 3.0.


FUTURE WORK:

The GUI objects are being ported to the  X/Motif environment. At a later
date,  YACL will be available under OS/2 PM and 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  Software  Emancipation, coded
         the initial version of the GUI classes of YACL.



COPYRIGHT:

This software is Copyright (C) M. A. Sridhar, 1994. You are free to copy
and distribute this   software  as you  see  fit,  and  to  use  it  for
non-commercial  purposes,  provided   this   copyright  notice  and  the
following disclaimer are included with all copies.


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

--
Mail submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu
Be sure to include Keywords: and a short description of your software.
