This file is indexed.

/usr/share/perl5/TM/Index/Reified.pm is in libtm-perl 1.56-7.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
package TM::Index::Reified;

use strict;
use warnings;
use Data::Dumper;

use TM;
use base qw(TM::Index);

=pod

=head1 NAME

TM::Index::Reified - Topic Maps, Indexing support (reification axis)

=head1 SYNOPSIS

    # somehow get a map (any subclass of TM will do)
    my $tm = ... 

    # one option: create an eager index (immediate population)
    use TM::Index::Reified;
    my $idx = new TM::Index::Reified ($tm, closed => 1);
    
    # for most operations which involve is_reified to be called
    # should be much faster

=head1 DESCRIPTION

This index can be attached to a map if the method C<is_reified> is about to be called very often.
Most likely you will want to have the index to be closed, i.e. populated.

The package inherits most of its functionality from L<TM::Index>.

B<NOTE>: As for all indices, modifications of the underlying map are not reflected automatically.

=head1 INTERFACE

=head2 Constructor

The constructor/destructor is inherited from L<TM::Index>.

=head2 Methods

=over

=item B<attach>, B<detach>

This index attaches in a special way to the map.

=cut

sub attach {
    my $self = shift;
    my $tm   = shift || $self->{map};
warn "attach";
    $tm->{rindex} = [ $self ];                                 # there will only be one, but we will use one indirection to fool MLDBM
warn "end attach ". Dumper $tm->{rindex};
}

sub detach {
    my $self = shift;
    my $tm   = shift || $self->{map};
warn "detach";
    $tm->{rindex} = undef;
    $self->{map}  = undef;   # regardless whether this is loose coupling or not
}

=pod

=item B<populate>

Invoking this, you will fill this index with authoritative information.

=cut

sub populate {
    my $self  = shift;
    my $tm    = shift || $self->{map};
    my $cache = $self->{cache};

    warn "reif populate";

    my $mid2iid = $tm->{mid2iid};

    map { $cache->{ $mid2iid->{$_}->[TM->ADDRESS] } = $_ }  # invert the index
        grep { $mid2iid->{$_}->[TM->ADDRESS] }              # only those which "reify" something survive
        keys %{$mid2iid};                                   # all toplet tids

    $self->{closed} = 1;
}

=back

=head1 SEE ALSO

L<TM>, L<TM::Index>

=head1 COPYRIGHT AND LICENSE

Copyright 2010 by Robert Barta, E<lt>drrho@cpan.orgE<gt>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl
itself.

=cut

our $VERSION = 0.4;

1;

__END__