Provided by: libclass-gomor-perl_1.03-3_all bug

NAME

       Class::Gomor::Array - class and object builder, array version

SYNPOSIS

          # Create a base class in BaseClass.pm
          package My::BaseClass;

          require Class::Gomor::Array;
          our @ISA = qw(Class::Gomor::Array);

          our @AS = qw(attribute1 attribute2);
          our @AA = qw(attribute3 attribute4);
          our @AO = qw(other);

          # You should initialize yourself array attributes
          sub new { shift->SUPER::new(attribute3 => [], attribute4 => [], @_) }

          # Create indices and accessors
          My::BaseClass->cgBuildIndices;
          My::BaseClass->cgBuildAccessorsScalar(\@AS);
          My::BaseClass->cgBuildAccessorsArray(\@AA);

          sub other {
             my $self = shift;
             @_ ? $self->[$self->cgGetIndice('other')] = [ split(/\n/, shift) ]
                : @{$self->[$self->cgGetIndice('other')]};
          }

          1;

          # Create a subclass in SubClass.pm
          package My::SubClass;

          require My::BaseClass;
          our @ISA = qw(My::BaseClass);

          our @AS = qw(subclassAttribute);

          My::SubClass->cgBuildIndices;
          My::SubClass->cgBuildAccessorsScalar(\@AS);

          sub new {
             shift->SUPER::new(
                attribute1 => 'val1',
                attribute2 => 'val2',
                attribute3 => [ 'val3', ],
                attribute4 => [ 'val4', ],
                other      => [ 'none', ],
                subclassAttribute => 'subVal',
             );
          }

          1;

          # A program using those classes

          my $new = My::SubClass->new;

          my $val1     = $new->attribute1;
          my @values3  = $new->attribute3;
          my @otherOld = $new->other;

          $new->other("str1\nstr2\nstr3");
          my @otherNew = $new->other;
          print "@otherNew\n";

          $new->attribute2('newValue');
          $new->attribute4([ 'newVal1', 'newVal2', ]);

DESCRIPTION

       This class is a subclass from Class::Gomor. It implements objects as array references, and inherits
       methods from Class::Gomor.

GLOBAL VARIABLES

       See Class::Gomor.

METHODS

       new (hash)
           Object  constructor.  This  is where user passed attributes (hash argument) are checked against valid
           attributes (gathered by cgGetAttributes method). Valid attributes are those that exists  (doh!),  and
           have  not  an  undef value. The default is to check this, you can avoid it by setting $NoCheck global
           variable (see perldoc Class::Gomor).

       cgBuildIndices
           You MUST call this method one time at the beginning of your classes, and all subclasses (even if  you
           do  not  add  new attributes). It will build the matching between object attributes and their indices
           inside the array object. Global variables will be created in your class, with the  following  format:
           $__attributeName.

       cgBuildAccessorsScalar (array ref)
       cgBuildAccessorsArray (array ref)
           See Class::Gomor.

       cgGetIndice (scalar)
           Returns  the  array  indice  of  specified  attribute  passed  as a parameter. You can use it in your
           programs to  avoid  calling  directly  the  global  variable  giving  indice  information  concerning
           requesting  object,  thus  avoiding  using  `no strict 'vars';'. This method is usually used when you
           build your own accessors (those using attributes defined in @AO).

       cgClone [ (scalar) ]
           You can clone one of your objects by calling this method. An optional parameter may be used to create
           multiple clones. Cloning will occure only on the  first  level  attributes,  that  is,  if  you  have
           attributes containing other objects, they will not be cloned.

       cgFullClone [ (scalar) ]
           This  method  is the same as cgClone, but will clone all attributes recursively, but only if they are
           subclassed from Class::Gomor. So, objects created with  other  modules  than  Class::Gomor::Array  or
           Class::Gomor::Hash will not be cloned.

           Another  thing to note, there is no catch for cycling references (when you link two objects with each
           others). You have been warned.

       cgDumper
           Will return a string as with Data::Dumper Dumper method.  This  is  useful  for  debugging  purposes,
           because an arrayref object does not include attributes names.

SEE ALSO

       Class::Gomor

AUTHOR

       Patrice <GomoR> Auffret

COPYRIGHT AND LICENSE

       Copyright (c) 2004-2015, Patrice <GomoR> Auffret

       You may distribute this module under the terms of the Artistic license.  See LICENSE.Artistic file in the
       source distribution archive.

perl v5.36.0                                       2022-10-13                           Class::Gomor::Array(3pm)