Class-EHierarchy
view release on metacpan or search on metacpan
lib/Class/EHierarchy.pm view on Meta::CPAN
package Class::EHierarchy;
use 5.008003;
use strict;
use warnings;
use vars qw($VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS);
use base qw(Exporter);
use Carp;
use Scalar::Util qw(weaken);
($VERSION) = ( q$Revision: 2.01 $ =~ /(\d+(?:\.(\d+))+)/sm );
# Ordinal indexes for the @objects element records
use constant CEH_OREF => 0;
use constant CEH_PID => 1;
use constant CEH_PKG => 2;
use constant CEH_CLASSES => 3;
use constant CEH_CREF => 4;
lib/Class/EHierarchy.pm view on Meta::CPAN
my $obj = CORE::shift;
my $id = @recoveredIDs ? CORE::shift @recoveredIDs : $#objects + 1;
$$obj = $id;
$objects[$id] = [];
$objects[$id][CEH_CREF] = [];
$objects[$id][CEH_CLASSES] = [];
$objects[$id][CEH_OREF] = $obj;
$objects[$id][CEH_PKG] = ref $obj;
weaken( $objects[$$obj][CEH_OREF] );
$id = '0 but true' if $id == 0;
# Build object class list
{
no strict 'refs';
my ( $isaref, $tclass, $nclass, @classes, $n, $l );
my $class = ref $obj;
( run in 0.336 second using v1.01-cache-2.11-cpan-65fba6d93b7 )