1package Data::Dump::FilterContext;
2
3sub new {
4    my($class, $obj, $oclass, $type, $ref, $pclass, $pidx, $idx) = @_;
5    return bless {
6	object => $obj,
7	class => $ref && $oclass,
8	reftype => $type,
9	is_ref => $ref,
10	pclass => $pclass,
11	pidx => $pidx,
12	idx => $idx,
13    }, $class;
14}
15
16sub object_ref {
17    my $self = shift;
18    return $self->{object};
19}
20
21sub class {
22    my $self = shift;
23    return $self->{class} || "";
24}
25
26*is_blessed = \&class;
27
28sub reftype {
29    my $self = shift;
30    return $self->{reftype};
31}
32
33sub is_scalar {
34    my $self = shift;
35    return $self->{reftype} eq "SCALAR";
36}
37
38sub is_array {
39    my $self = shift;
40    return $self->{reftype} eq "ARRAY";
41}
42
43sub is_hash {
44    my $self = shift;
45    return $self->{reftype} eq "HASH";
46}
47
48sub is_code {
49    my $self = shift;
50    return $self->{reftype} eq "CODE";
51}
52
53sub is_ref {
54    my $self = shift;
55    return $self->{is_ref};
56}
57
58sub container_class {
59    my $self = shift;
60    return $self->{pclass} || "";
61}
62
63sub container_self {
64    my $self = shift;
65    return "" unless $self->{pclass};
66    my $idx = $self->{idx};
67    my $pidx = $self->{pidx};
68    return Data::Dump::fullname("self", [@$idx[$pidx..(@$idx - 1)]]);
69}
70
71sub object_isa {
72    my($self, $class) = @_;
73    return $self->{class} && $self->{class}->isa($class);
74}
75
76sub container_isa {
77    my($self, $class) = @_;
78    return $self->{pclass} && $self->{pclass}->isa($class);
79}
80
81sub depth {
82    my $self = shift;
83    return scalar @{$self->{idx}};
84}
85
861;
87