$Id: README,v 1.1.1.1 1997/10/18 16:20:01 ken Exp $


                           Class::Visitor

                 Vistor and Iterator extensions to
                the Class::Template Perl module for
                  use with container hierarchies.


                            Ken MacLeod
                        [email protected]

INTRODUCTION

   Class::Visitor extends the Class::Template Perl module with
   implementations of the Visitor and Iterator design patterns for
   multi-level container hierarchies.

   See the file Changes for user-visible changes.  See ChangeLog for
   detailed change descriptions.

   Newer versions of this module can be found at
   <ftp://ftp.uu.net/vendor/bitsko/gdo/>.

   Copyright (C) 1997 Ken MacLeod
   Class::Visitor is free software; you can redistribute it and/or
   modify it under the same terms as Perl itself.

OVERVIEW

   Class::Visitor defines object classes using ``templates''.
   Templates define the members of the class and what data type they
   contain (scalar, array, or hash).  Class::Template creates the
   accessor methods for the members of the class, Class::Visitor
   extends those methods with methods for ``visiting'' and iterating
   over multiple levels of objects.

   Iteration methods include `next', `parent', `root', returning the
   delegate, or comparing equivalency of iterators.

   Visitor methods include `accept' and `children_accept'.  Calling
   `accept' on an object immediatly calls back to the visiting class
   with a `visit_TYPE' method where TYPE is the type of this object.

   Additional methods are defined for `push' and `pop' on class
   members and an `as_string' method that returns the concatenation
   of scalars contained in a class member.

   See the man pages for Class::Visitor(3), Class::Iter(3), and
   Class::Template(3) for details.

   Visitors and Iterators are explained thoroughly in ``Design
   Patterns: Elements of Reusable Object-Oriented Software'' by
   Gamma, Helm, Johnson, and Vlissides, published by Addison-Wesley
   (ISBN 0-201-63361-2).

<http://st-www.cs.uiuc.edu/users/patterns/patterns.html>

   For an example of Class::Visitor in action, see the Perl module
   SGML::SPGrove.

<ftp://ftp.uu.net/vendor/bitsko/gdo/>
<http://www.perl.com/CPAN/modules/by-module/SGML/>

INSTALLATION

   Class::Visitor requires Perl 5 and Class::Template from the
   Class-Eroot package.

<http://www.perl.com>
<http://www.perl.com/CPAN/modules/by-module/Class/Class-Eroot-19960603.tar.gz>

   Installation of Class::Template must be done by hand.

   Class::Visitor installs as a standard Perl module:

       perl Makefile.PL
       make
       make test
       make install

   Class::Visitor includes an RedHat Package Manager (RPM) spec for
   creating binary packages.  This spec is known to work with
   PkgMaker for creating ``binary'' tars and Solaris packages.

<ftp://ftp.uu.net/vendor/bitsko/pkgmaker/>

   Prepackaged ``binaries'' for Class::Template and Class::Visitor
   are available at the source distribution site:

<ftp://ftp.uu.net/vendor/bitsko/gdo/binaries/>
<ftp://ftp.uu.net/vendor/bitsko/sgml-toolbox/binaries/>