6. make set/isolate and acc/route mutually exclusive (and issue appropriate
[spider.git] / perl / Route / User.pm
index 4e3e59cf7f7ccae64502c5a566653ba7750318a1..bcd98a00ed3e591c86a995ad3f8c8be1abebd794 100644 (file)
@@ -13,25 +13,33 @@ use Route;
 
 use strict;
 
-use vars qw(%list %valid @ISA $max);
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0;
+$main::build += $VERSION;
+$main::branch += $BRANCH;
+
+use vars qw(%list %valid @ISA $max $filterdef);
 @ISA = qw(Route);
 
 %valid = (
                  parent => '0,Parent Calls,parray',
 );
 
+$filterdef = $Route::filterdef;
 %list = ();
 $max = 0;
 
 sub count
 {
-       my $n = scalar %list;
+       my $n = scalar(keys %list);
        $max = $n if $n > $max;
        return $n;
 }
 
 sub max
 {
+       count();
        return $max;
 }
 
@@ -51,21 +59,30 @@ sub new
        return $self;
 }
 
+sub get_all
+{
+       return values %list;
+}
+
 sub del
 {
        my $self = shift;
        my $pref = shift;
-       my $ref = $self->delparent($pref->{call});
-       return () if @$ref;
-       delete $list{$self->{call}};
-       return ($ref);
+       $self->delparent($pref);
+       unless (@{$self->{parent}}) {
+               delete $list{$self->{call}};
+               return $self;
+       }
+       return undef;
 }
 
 sub get
 {
        my $call = shift;
        $call = shift if ref $call;
-       return $list{uc $call};
+       my $ref = $list{uc $call};
+       dbg("Failed to get User $call" ) if !$ref && isdbg('routerr');
+       return $ref;
 }
 
 sub addparent