On Tue, 21 Jan 2003, _brian_d_foy wrote:

> should this be in Class::* ?

You should have an updated e-mail in your box by now, I caught that snafu.

> how does this relate to the various modules in Class::, like
>
>    Class::Classless
>    Class::Object
>    Class::Generate
>    Class::Base
>    Class::Fields
>    Class::Accessor
>    Class::Structured

Class::Classless:  As I read the pod, doesn't provide more than a
psuedo-constructor (clone) that can have arbitrary data and methods attached.
Mine turns all described properties and flags into virtual methods, and allows
you to specify write-only, read-only, read-write accessors as part of the
property description.  Furthermore, it has a rudimentary event system by which
flag modifications/accesses can trigger code execution.

Class::Object:  This module doesn't appear to provide any functionality
different from Class::Classless, so see my remarks above.

Class::Generate:  This is the closest to what I'm trying to accomplish.
I'm not doing dynamic (sub)class generation, and so, we're syntactically very
different.  You can simulate an event-driven system with the 'pre' and 'post'
member specifications.  I tried to make it cleaner by having events tied
directly to a user-defined state flag register, to encourage less code
entanglement (i.e., making operations more atomic, without having to call
specific methods, etc.).  In addition, I've added facilities for tracking
parent<->child relationships (parent, as in container) for orderly destruction
of objects.

Class::Base:  Again, not that different from Class::Classless or
Class::Object.

Class::Fields:  A class extension, not a framework in itself.  Still doesn't
provide much in the way of auto-accessors beyond what the above classes do.

Class::Accessor:  Again, not that different from Class::Generate, but much
more limited in scope.

Class::Structured:  Focused on class data structure, doesn't address extended
functionality described above.

> that sounds like Class::Accessor

See above.

> doesn't Perl already do this?

No, it doesn't.  One problem I've had is with Curses programming, where I want
to make sure I've called delwin on all applicable derived/subwindows before
the parent window goes out of scope and auto-destroys itself in the object's
DESTROY handler.  It gets more complicated when you want a referential trail
to follow that can be tracked both ways, from parent to child and child to
parent (think grand* both ways as well).

        --Arthur Corliss
          Bolverk's Lair -- http://arthur.corlissfamily.org/
          Digital Mages -- http://www.digitalmages.com/
          "Live Free or Die, the Only Way to Live" -- NH State Motto

Reply via email to