$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
			 ken@bitsko.slc.ut.us

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