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 )