Search-InvertedIndex
view release on metacpan or search on metacpan
lib/Search/InvertedIndex.pm view on Meta::CPAN
sub _increment_enum {
my $self = shift;
my ($enum) = @_;
if ($enum !~ m/^([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]{4})$/) {
croak (__PACKAGE__ . "::_increment_enum() - passed an invalid enum value of '$enum'\n");
}
my (@hexwords) = ($1,$2,$3);
my $word2 = hex($hexwords[2]);
$word2++;
if ($word2 > 65535) {
my $word1 = hex($hexwords[1]);
$word2 = 0;
$word1++;
if ($word1 > 65535) {
my $word0 = hex($hexwords[0]);
$word1 = 0;
$word0++;
$hexwords[0] = sprintf('%0.4lx',$word0);
}
$hexwords[1] = sprintf('%0.4lx',$word1);
}
$hexwords[2] = sprintf('%0.4lx',$word2);
join('',@hexwords);
}
################################################################
#_untaint($string);
#
#Untaints the passed string. Use with care.
sub _untaint {
my ($self) = shift;
my $string;
if (ref $self) {
$string = $self;
} else {
($string) = @_;
}
my ($untainted_string) = $string =~ m/^(.*)$/s;
$untainted_string;
}
####################################################################
#
# DESTROY;
#
# Closes the currently open -map and flushes all associated buffers.
#
sub DESTROY {
my ($self) = shift;
$self->close;
}
# ################################################################
#
# DATABASE STRUCTURES
#
# The inverted database uses a complex overlay built on a generic
# key/value accessible database (it really is fairly 'database agnostic').
#
# It is organized into sub-sets of information by database key name space:
#
# ; Stringifier. The serializer used for packing information for storage
# $STRINGIFIER -> 'Data::Dumper' or 'Storable'
#
# $VERSION -> The version number of Search::InvertedIndex
# matching this database.
#
# ; Counter. Incremented for new groups, decremented for deleted groups.
# number_of_groups -> # (decimal integer)
#
# ; Counter. Incremented for new indexes, decremented for deleted indexes.
# number_of_indexes -> # (decimal integer)
#
# ; Counter. Incremented for new keys, decremented for deleted keys.
# number_of_keys -> # (decimal integer)
#
# ; The 'high water' mark used in assigning new index_enum keys
# index_enum_counter -> # (12 digit hex number)
#
# ; Maps an index ("file") to its assigned index enumeration key
# $INDEX<index> -> index_enum
#
# ; Maps the assigned index enumeration back to the index ("file") and
# ; provides pointers to the 'next' and 'prev' index_enums in the system
# $INDEX_ENUM<index_enum> -> _next_index_enum_ _prev_index_enum_ index
#
# ; Maps the 'first' 'index_enum' for the system
# ${INDEX_ENUM}first_index_enum -> index_enum of 'first' index_enum for the system
#
# ; Data record for the index ("File"). Wrapped using 'Storable' or 'Data::Dumper'
# $INDEX_ENUM_DATA<index_enum>_data -> data
#
# ; The 'high water' mark used in assigning new group_enum keys
# group_enum_counter -> # (12 digit hex number)
#
# ; Maps a group's name to its assigned group enumeration key
# $GROUP<groupname> -> group_enum
#
# ; Maps the assigned group enumeration key to a group and provides
# ; pointers to the 'next' and 'previous' groups in the system.
# $GROUP_ENUM<group_enum> -> _prev_group_enum_ _next_group_enum_ $group
#
# ; Maps the 'first' 'group_enum' for the system
# ${GROUP_ENUM}first_group_enum -> group_enum of 'first' group_enum for the system
#
# ; Counter. Incremented for new keys, decremented for deleted keys.
# $GROUP_ENUM_DATA<group_enum>_number_of_keys -> # (decimal integer)
#
# ; Counter. Incremented for new indexes, decremented for deleted indexes.
# $GROUP_ENUM_DATA<group_enum>_number_of_indexes -> # (decimal integer)
#
# ; 'High water' mark used in assigning new key_enum values for keys
# $GROUP_ENUM_DATA<group_enum>_key_enum_counter -> # (12 digit hex number)
#
# ; Maps the 'first' 'key_enum' for the group
# $GROUP_ENUM_DATA<group_enum>_first_key_enum -> key_enum of 'first' key_enum
#
( run in 0.954 second using v1.01-cache-2.11-cpan-13bb782fe5a )