Hi,

here's the part of code ($VERSION = "0.9901") from
the Schema.pm Module which i just downloaded from
theoryx5.uwinnipeg.ca/CPAN/data/perl-ldap/.

---------- [snipp] ------------------------

  while (@oc) {
    my $oc = shift @oc;

    $done{lc $oc}++ and next;

    my $elem = $self->objectclass( $oc ) or next;
    my $res  = $elem->{$must_or_may} or next;
    @res{ @$res } = ();         # Add in, getting uniqueness
    my $sup = $elem->{sup} or next;
    push @oc, @$sup;
  }

  my %unique = map { ($_,$_) } $self->attribute(keys %res);
  values %unique;
}

---------- [snipp] ------------------------

The loop iterates over all the super objectClasses for an object
(at least thats what i suggest it's supposed to do).

If an objectClass does NOT contain eihter a must or may entry
the super class is simply ignored 

my $res  = $elem->{$must_or_may} or next;

while the must or may of the super class are taken into account
if they are already in the objectClass just inspected.

eg.

class A: 
  must: a, b
  may:  c, d

class B: 
  super of class A
  must:
  may: e, f

than may(B)  returns (c,d,e,f)
     must(B) returns ()

Cheers,

Matthias Helmling

-- 
Matthias Helmling                  System Administration
LION bioscience AG,                Waldhofer Str. 98, D-69123 Heidelberg

Reply via email to