ACA ToolKit Structure and Functionality


The entire ACA ToolKit can be organized into:
  • Libraries of functions and objects written in C and C++,
  • X-resources for page and widget layout information, as well as multiple language support,
  • Hyper-text explain files for the ToolKit,
  • A rich collection of Images and Icons for the display,
  • Knowledge Base of rules and descriptors for feeding the expert-system engine.


The ACA ToolKit Libraries, written in C and C++, is a rich collection of library functions, utility programs, and classes, designed to support the efficient building of interactive information and decision support systems in the domain of environmental planning and management. Each library, which may be a collection of classes and functions, and has a well-defined scope address specific areas of functionality:

library     func cla UI  description
-------     ---- --- --  -----------

libacautil    43  -  N  general utility functions, error 
                        handling, platform-specific functions,
                        license management.

libgisdb      89  -  N  GIS map handling and data management

libxatk      210  3  Y  X-based user interface, interface 
                        resources management

libxgis      136  -  Y  X-based map drawing functions

libxgispage   26  -  Y  X-based GIS interface page

lib3d         93  -  Y  X-based 3D  interface page

libxps       226  -  Y  X-based embedded expert-system

libxts        66  -  Y  time-series data handling and display
libCCets      -  30  Y  object data base including time-series 
                        display and analysis

libCCtk       -  13  N  Container classes, application 
                        configuration, text-parsing and text 
                        data handling classes

libCCxtk      -  11  Y  X-based interface classes, 
                        encompassing basic display functionality 
                        and framework

libCCps       -   4  Y  Postscript class library
TOTAL        889 61

Dependency layers

The libraries can be broadly classified as user-interface dependent and user-interface independent libraries. User-interface dependent libraries are typically based on X/Xlib. Libraries independent of the user interface would consist of data processing utilities like text parsing, application configuration, GIS data management, algorithms, container classes. The main reason for this classification is to make it easier to create data pre-processing utilities which don't depend on the user- interface, and pave the way for a future implementation on a medium other than X-windows.

Most of the current libraries, for historical reasons, are a collection of C-based functions and C++ classes. The current effort is to wrap the C-based functions around C++ classes, which would make it easier and faster to develop applications by creating a higher level of abstraction.

The libraries are identified on basis of dependency layers. The libraries at the lowest layer 0 are "stand-alone", and do not depend on any other ACA library. The dependency is constrained as follows:

  • A user-interface independent library may not depend on a user-interface dependent library.
  • A library at any level may depend on libraries at the lower layer only. There cannot be lateral dependency. This is important even for linking, since linkers on a few platforms are dependent on the order.
  • Further constraints are imposed by the scope definition of each library. e.g. libxatk cannot depend on libgisdb because the scope of libxatk is to provide X-tools independent of the maps/gis. It is within the scope of libxgis to have any maps/gis-based functions.

Layer 3:                                lib3d  libxgispage   
                                          |    /
                                          |   /
                                          |  /
                                          | /
Layer 2:        libxts    libxps      libxgis   
                    \      |         /   |
                     \     |        /    |
                      \__  |     __/     |
Layer 1:                 libxatk     libgisdb
                       /    |          /
                      /     |         /
                     /      |        /
                    /       |       /
Layer 0:     libCCtk       libacautil

  Name:  libacautil
  Language:   ANSI-C only (No C++)
  Depends on:   not dependent on any other ACA library
  Scope:   contains functions which are general-purpose utilities.
  This is the only library which may contain unavoidable
  platform-dependent functions/code. However this
  must be well documented and localized to a known set of files.
  This library contains the licensing code
  No user-interface functions are present here
  This library is not dependent on any other ACA library

© Copyright 1995-2019 by:   ESS   Environmental Software and Services GmbH AUSTRIA | print page