TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: All
from: Clemens Anhuth
date: 1995-12-20 19:57:00
subject: YACL - Portable Class Lib

README.TXT for YACL
                              Version 1.4
                           November 17th, 1995


What's new in this version:

    *  WIN32 support has been added so YACL can be used under Windows NT
       and Windows 95

    *  Microsoft Visual C++ 2.1 (under Windows NT/ Windows 95) and IBM
       Visual Age C++ (under OS/2)  are now supported

    *  Better support for bitmaps

    *  Support for bitmap buttons (both push buttons and toggle buttons)

    *  Several new GUI classes: NumberEditor, DateEditor, PasswordEditor,
       BitmapButton, ShadowRectangle, ShadowedLine

    *  New demo programs for bitmap buttons, editors, border displays

    *  Combo boxes supported under Motif (This uses the ComboBox widget
       written by Harald Albrecht, and its use is subject to the GNU GPL)

    *  Several bugs fixed under all platforms


See the file changlog.txt for details about the new stuff.



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 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. 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 17th, 1995):

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++ 3.1 and later
                             Watcom C++ 10.0a

     MS Windows NT           Borland C++ 4.0
                             Watcom C++ 10.0a
                             Microsoft Visual C++ 2.1

     OS/2 2.1                Borland C++ 1.5

     OS/2 Warp               EMX (GNU) C++
                             Borland C++ 1.5
                             Watcom C++ 10.0a
                             IBM Visual Age C++ 3.0

     Linux                   GNU C++ 2.6.3

     SunOS 4.1               GNU C++ 2.6.3

     Solaris 2.3             GNU C++ 2.6.3

     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.  Also, YACL doesn't yet  compile under GNU C++  2.7, primarily
because GCC 2.7 crashes with an internal compiler error when compiling YACL.

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.131.11), 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{at}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.



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 just  about 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
file changlog.txt for details on the added functionality.



FUTURE WORK:

Here is a brief list of items that still need work (there are probably lots
more):

    -  Shared library (DLL) support on platforms that provide for shared
       libraries

    -  Support for other compilers, e.g., SGI's Delta C++





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 under  Windows and Windows NT;  this is, however, a
non-portable feature.






AUTHOR:                       M. A. Sridhar

    Snail mail:                       E-mail: sridhar{at}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{at}class.de) provided several bug fixes and
    enhancements under MS Windows and Motif.

    Tony T. Ton (t.t.ton{at}massey.ac.nz) helped out with bug fixes and
    enhancements under OS/2.

    Tom Satter (tsatter{at}purecode.com) contributed the fixes and makefiles
    for IBM Visual Age C++ 3.0 under OS/2.

    Rajesh Chandran (chandran{at}cs.sc.edu) showed how to make YACL
    applications compatible with editres under X windows.



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



## 2:240/5033.11 & clemens.anhuth{at}xpand.de ##

--- CrossPoint v3.0 R
* Origin: (2:240/5033.11)
SEEN-BY: 270/101 620/243 711/401 409 410 413 430 808 809 934 955 712/407 515
SEEN-BY: 712/517 628 713/888 800/1 7877/2809
@PATH: 240/5033 5002 5500 24/24 396/1 270/101 712/515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.