home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / readme.txt < prev    next >
Text File  |  1995-04-10  |  8KB  |  225 lines

  1.  
  2.  
  3.         
  4.                            README.TXT for YACL
  5.                               Version 1.2
  6.                               Apr 10, 1995
  7.                  
  8. This  is  YACL  (Yet Another Class   Library).  It  is a general-purpose
  9. programming   library designed   with  the   idea  of  identifying   and
  10. implementing  useful  object  abstractions  that  frequently   occur  in
  11. application  development, so  that  development effort can   be cut down
  12. significantly.      The   abstractions       are   designed   to      be
  13. application-domain-specific rather   than platform-specific.  This makes
  14. it possible  for  YACL to be ported  to  multiple platforms  with little
  15. effort, and any application that is coded to use  YACL's classes will be
  16. runnable on any of the  supported platforms with merely a recompilation.
  17. YACL is part  of  an ongoing project   to create a   completely portable
  18. program development environment.
  19.  
  20.  
  21. YACL consists  of three  kinds of classes:  base classes  (consisting of
  22. primitive data   types  and container classes),  i/o   classes (for data
  23. storage  and  retrieval)  and  GUI   classes  using a   variation of the
  24. Model-View-Controller paradigm.  The base  and i/o classes of  YACL have
  25. been designed to support the most efficient  algorithms possible, and to
  26. impose  as few storage  constraints as possible.  All classes (base, i/o
  27. and GUI) have been tested for memory and resource leaks.
  28.  
  29. CONCEPTUAL FEATURES:
  30.  
  31.     -  Template-based containers for code sharing
  32.     
  33.     -  Easy     inter-object    communication via   notification   (used
  34.        extensively in the GUI framework -- see below)
  35.  
  36.     -  Support for storage and retrieval of objects in binary form
  37.  
  38.     -  Support for very large sequences, sets and maps (with up to about
  39.        89 million  entries),  even under  MS-Windows, thus circumventing
  40.        the 64K segment size limitation
  41.        
  42.  
  43. FUNCTIONAL FEATURES:
  44.  
  45.     Base library:
  46.     
  47.        - primitive data  types: string, date, time of day,  byte array,
  48.          byte string
  49.  
  50.        - container   classes  (template-based):  sequence   (in lieu of
  51.          lists), set, bitset, map, tree; as  noted above, the sequence,
  52.          set and map can have size up to about 89 million, even under
  53.          MS-Windows.
  54.  
  55.        - utility classes: string splitter, tree walker
  56.  
  57.        - memory leak checker class, and  support for checking for leaks
  58.          and memory corruption errors
  59.        
  60.     File I/O library:
  61.     
  62.        - SlottedFile for managing files with fixed-length records (well
  63.          suited  for tables in relational  databases); manages upto 800
  64.          million records with at most five I/O operations per record
  65.          
  66.        - ByteStringStore for    managing  files  with   variable-length
  67.          records (whose lengths can  even grow and  shrink dynamically)
  68.          --  suited, for example, for  maintaining secondary indices or
  69.          other "binary large object" data
  70.          
  71.  
  72.     B-trees:
  73.     
  74.        - In-memory  and disk-based B-trees  supported, both sharing the
  75.          same B-tree algorithm code
  76.          
  77.        - Can be used in conjunction with the above file I/O library for
  78.          B-trees with variable-length keys
  79.  
  80.     GUI library:
  81.     
  82.        - Portable  abstractions for  building graphic user  interfaces,
  83.          based on the model-view-controller paradigm
  84.  
  85.        - Leverages platform's native API. Class implementations use the
  86.          platform's  native  API,  so  that applications  will have the
  87.          native look and feel.
  88.          
  89.        - GUI objects well integrated with base  library, to enhance the
  90.          overall power and reusability of classes
  91.          
  92.        - GUI   objects:  menus,  dialogs,  buttons,  listboxes,  button
  93.          groups, and the like
  94.  
  95.        - Graphic resource  objects:  cursors, fonts,  pens,  colors and
  96.          brushes
  97.  
  98.        - Graphic  objects: bitmaps, ellipses,  rectangles, arcs and pie
  99.          wedges
  100.  
  101.        - Supports printing under OS/2 and MS Windows
  102.        
  103.        - Provides  for easy  composition  of basic objects,  as well as
  104.          high reusability
  105.  
  106.        - Includes many demo programs
  107.        
  108.  
  109. CURRENT STATUS (As of February 23, 1995):
  110.  
  111. The YACL classes now provide  equivalent  functionality under all  three
  112. platforms: MS/Windows, OS/2 PM and Unix with X/Motif.  Here is a summary
  113. of the platforms and compilers it has been tested under.
  114.  
  115.      Platform                Compiler
  116.      ---------               --------
  117.      
  118.      MS/Windows              Borland C++ 3.1 and later
  119.      
  120.      OS/2 Warp               EMX (GNU) C++
  121.                              Borland C++ 1.5
  122.  
  123.      Linux                   GNU C++ 2.6.0
  124.      SunOS 4.1               GNU C++ 2.6.3
  125.      DEC Ultrix              GNU C++ 2.6.0
  126.      NCR SysV                GNU C++ 2.6.0
  127.      
  128.  
  129. The implementations do not use any compiler-specific features, and so it
  130. should be easy to build   the library using   other compilers. The  base
  131. classes will not  compile under versions  of GNU C++  earlier than 2.6.0
  132. due to  bugs in the  compiler.  The  base  classes do  not (yet) compile
  133. under Watcom C++, due to a  bug in the 10.0a  compiler.  Watcom is aware
  134. of this fact, and  the bug will  likely be fixed in  the next release of
  135. their compiler.
  136.  
  137. YACL cannot   be  compiled  with  any  compiler  that  does not  support
  138. templates.
  139.  
  140. Under Microsoft Windows, YACL's classes have  been tested for memory and
  141. resource leaks using Bounds Checker for Windows.
  142.  
  143.  
  144. DOCUMENTATION:
  145.  
  146. A tutorial and reference manual for YACL will appear as a book published
  147. by  Addison-Wesley  in the  fall   of  1995.  If you  are  interested in
  148. looking at sample chapters from a preliminary draft  of the book, please
  149. obtain  sample chapters by  anonymous ftp  from the host  aw.com, in the
  150. directory   aw.computer.science/YACL.    All   comments,  criticisms and
  151. reports of  bugs or  other errors will  be   gratefully accepted by  the
  152. author at the address below.
  153.  
  154.  
  155. RESTRICTIONS AND LIMITATIONS:
  156.  
  157. Resource-based   dialogs and custom cursors    are supported only  under
  158. MS/Windows.
  159.  
  160. Combo boxes and the  PrintJob class are  only supported under MS/Windows
  161. and OS/2.
  162.  
  163. I  am still working  on  creating shared library  (DLL)  versions of the
  164. library.
  165.  
  166.  
  167. FUTURE WORK:
  168.  
  169. Work on removing the  above limitations and adding  new features to  the
  170. base and GUI classes is under way.
  171.  
  172. RELATED PROJECTS:
  173.  
  174. A GUI layout designer  (with functionality similar to Borland's Resource
  175. Workshop) and a graphic editor are currently under development.
  176.  
  177. An awk  script  is available  for translating MS-Windows  resource files
  178. into  a form usable   by YACL. Direct  support for  dialogs  loaded from
  179. Windows  resource  files  is   also  available;  this is,  however,    a
  180. non-portable feature.
  181.  
  182.  
  183. AUTHOR:
  184.          M. A. Sridhar
  185.          Department of Computer Science
  186.          University of South Carolina
  187.          Columbia, SC 29208
  188.          USA
  189.          e-mail: sridhar@cs.scarolina.edu
  190.          Phone:  (803) 777-2427
  191.          Fax:    (803) 777-3767
  192.  
  193.          N. Bhowmik, currently  with Object Design Inc., coded
  194.          the initial version of the GUI classes of YACL.
  195.  
  196.  
  197.  
  198. COPYRIGHT:
  199.  
  200. This software is Copyright  (C) M.  A.  Sridhar, 1994 and 1995.  You are
  201. free to copy, modify and distribute this software as you see fit, and to
  202. use it for any purpose, provided this copyright notice and the following
  203. disclaimer are   included  without  modification    in all  copies   and
  204. modifications.
  205.  
  206.  
  207. DISCLAIMER:
  208.  
  209. The author  makes no  warranties,   either expressed or   implied,  with
  210. respect to this software,  its quality, performance, merchantability, or
  211. fitness for any particular purpose.  This software is distributed AS IS.
  212. The  user of this  software  assumes all  risks   as to its quality  and
  213. performance. In no  event shall  the author be   liable for any  direct,
  214. indirect or consequential  damages, even if  the author has been advised
  215. as to the possibility of such damages.
  216.  
  217.  
  218.  
  219. AVAILABILITY:
  220.  
  221. YACL   is   available for    anonymous  ftp   from  ftp.cs.scarolina.edu
  222. (129.252.131.11), in the directory /pub/yacl. Please send your comments,
  223. suggestions and bug reports to the author at the above address.
  224.  
  225.