941c0792f27b25a5e9aeea6ed4e0a118dadd903bAutomatic Updater# $Id: SparseMap.pm,v 1.1 2003/06/04 00:27:53 marka Exp $
941c0792f27b25a5e9aeea6ed4e0a118dadd903bAutomatic Updater# Copyright (c) 2001 Japan Network Information Center. All rights reserved.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# By using this file, you agree to the terms and conditions set forth bellow.
941c0792f27b25a5e9aeea6ed4e0a118dadd903bAutomatic Updater# LICENSE TERMS AND CONDITIONS
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# The following License Terms and Conditions apply, unless a different
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# license is obtained from Japan Network Information Center ("JPNIC"),
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# Chiyoda-ku, Tokyo 101-0047, Japan.
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# 1. Use, Modification and Redistribution (including distribution of any
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# modified or derived work) in source and/or binary forms is permitted
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# under this License Terms and Conditions.
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# 2. Redistribution of source code must retain the copyright notices as they
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# appear in each source code file, this License Terms and Conditions.
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# 3. Redistribution in binary form must reproduce the Copyright Notice,
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# this License Terms and Conditions, in the documentation and/or other
941c0792f27b25a5e9aeea6ed4e0a118dadd903bAutomatic Updater# materials provided with the distribution. For the purposes of binary
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# distribution the "Copyright Notice" refers to the following language:
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# 4. The name of JPNIC may not be used to endorse or promote products
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# derived from this Software without specific prior written approval of
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉# ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉 # common options are:
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉 # BITS => [8, 7, 6], # 3-level map, 2nd level bits=7, 3rd = 6.
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉 # MAX => 0x110000 # actually, max + 1.
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉 croak "BITS unspecified" unless exists $self->{BITS};
743bbdc18f839499862e4fb28ec32f607b1632dcTatuya JINMEI 神明達哉 croak "BITS is not an array reference"
be9720ae2c2e933da36c5fb209dd4798a0337febMark Andrews croak "MAX unspecified" unless exists $self->{MAX};
my $idx;
my $lv;
unless defined $r->[$idx];
$r = $r->[$idx];
my $self = shift;
my @tmp;
my @zero;
my $self = shift;
my @idx;
$v = $v >> $bit;
@idx;
my $self = shift;
my $self = shift;
my @indirect = ();
my $offset;
my $chunksz;
foreach my $m (@$mapref) {
my $idx;
@indirect;
my $self = shift;
my %opt = @_;
my $prog;
foreach my $v (@indirect) {
$prog;
my $self = shift;
my $self = shift;
my @lines;
my $self = shift;
my @tmp;
my $found;
unless ($found) {
$found = $r;
return $found;
my $self = shift;
my @zeros;
my @map;
\@map;
my $self = shift;
my @maps;
@maps;
return if $ref == $r;
use vars qw(@ISA);
use Carp;
my $class = shift;
my $self = shift;
my $self = shift;
my $self = shift;
my %opt = @_;
my $prog;
$prog;
use vars qw(@ISA);
use Carp;
my $class = shift;
my $self = shift;
my $val = shift;
my $self = shift;
\@tbl;
if (@$map == @$r) {
last if $map->[$i] != $r->[$i];
my $self = shift;
my %opt = @_;
my $prog;
foreach my $a (@table) {
foreach my $a (@table) {
$col += length($s);
$col = length($s);
$prog .= $s;
$prog;
$w + $neg;