-*- text -*-

//=======================================================================
// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
//
// This file is part of the Generic Graph Component Library
//
// You should have received a copy of the License Agreement for the
// Generic Graph Component Library along with the software;  see the
// file LICENSE.  If not, contact Office of Research, University of Notre
// Dame, Notre Dame, IN  46556.
//
// Permission to modify the code and to distribute modified code is
// granted, provided the text of this NOTICE is retained, a notice that
// the code was modified is included with the above COPYRIGHT NOTICE and
// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE
// file is distributed with the modified code.
//
// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
// By way of example, but not limitation, Licensor MAKES NO
// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY
// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS
// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS
// OR OTHER RIGHTS.
//=======================================================================

---------------------------------------------------------------

              The Generic Graph Component Library
                     Version 2.0.1

I. Introduction
===============

The Generic Graph Component Library is a collection of graph
algorithms and data structures, created in the generic programming
style of the Standard Template Library (STL).  As with the STL, at the
heart of GGCL are "concepts" (or interface definitions). The GGCL
concepts have been carefully defined to make integration with existing
codes and libraries easier. The concepts have also been defined so that
GGCL will work well with STL algorithms and data structures, as well
as the C++ builtin types such as arrays. In short, the GGCL concepts
are defined for reuse!

The concrete data structures and algorithms in GGCL that implement
these concepts were designed for very high performance (the
multiple-minimum degree algorithm matches the performance of the best
Fortran code).  The abstraction layers use static polymorphism (no
virtual functions) to gain flexibility and reuse without incurring a
performance penalty.

GGCL provides a wide range of graph data-structures, including many
variations on the traditional adjacency-list structures, as well as
facilities to help in the construction of custom graph structures.

The GGCL algorithms consist of some basic graph algorithm patterns,
such as breadth and depth first search, as well as a number of the
standard algorithms such as Dijsksta's shortest paths, Kruskal's
minimum spanning tree, and connected components.  We have implemented
some sparse matrix ordering algorithm (RCM and MMD). The number of
algorithms in GGCL is continually growing, and we invite you to also
share any algorithms that could be used by the rest of the community.
(send us a URL and we'll put a link to your page!)

We have enjoyed construction the Generic Graph Component Library,
and hope that you enjoy its use!

II. Compilers
=============

The Generic Component  Library has been tested (and passed)
with the following compilers and architectures:

Solaris
-------
KAI C++ 3.4x
g++ 2.95.x

Linux
-----
KAI C++ 3.4x
g++ 2.95.x

Windows NT/98
-------------
Visual C++ 6.0

The GGCL will NOT compile yet with the following compilers, and the
degree of difficulty of the port has been noted.

Compiler               Difficulty of porting GGCL
--------------         --------------------------
Intel C++ 4.0          Easy (perhaps already there)
Solaris C++ 5.0        Impossible
Metrowerks CW Pro 5.0  Easy

Compilers that are not mentioned above have not yet be investigated.


III. Usr Manual
===========================

The user manaul resides in the /docs directory and we provide it in
html/ps/pdf/rtf formats. You can also view the documentation at our
web site:

www.lsc.nd.edu/research/ggcl

There are a number of examples in the /examples directory. They are a
good place to start.


IV. Installation Procedure
==========================

See the file INSTALL in this directory.


V. Contact Information
=======================

The Generic Graph Component Library is available at the main distribution site:

    http://www.lsc.nd.edu/research/ggcl

This distribution includes:

    - Source code for the GGCL (header files /ggcl)
    - Source code for matrix ordering in GGCL 
      and SGI STL hash_set and hash_map for KAI's compiler(/contrib)
    - Some example code (/examples)
    - Testing suites    (/test)
    - User manual (/docs)
    - Boost libraries (/boost)

Bug reports should be sent to ggcl@lsc.nd.edu.

Questions, comments, suggestions, and requests for additional
information should also be directed to ggcl@lsc.nd.edu.

Send mail to majordomo@lsc.nd.edu and include a body of:

     subscribe ggcl-announce

