Set-SegmentTree
view release on metacpan or search on metacpan
lib/Set/SegmentTree/ValueLookup.pm view on Meta::CPAN
# concatentate the data
for my $object (@objects) {
$object->{serialized_offset} = $offset;
$data .= $object->{data};
$offset += length $object->{data};
}
# second pass for writing offsets to other parts
for my $object (@objects) {
if (defined $object->{reloc}) {
# perform address relocation
for my $reloc (@{$object->{reloc}}) {
my $value;
if (defined $reloc->{lambda}) { # allow the reloc to have a custom format
$value = $reloc->{lambda}($object, $reloc);
} elsif (defined $reloc->{type} and $reloc->{type} eq "unsigned delta") {
$value = pack "L<", $reloc->{item}{serialized_offset} - $object->{serialized_offset} - $reloc->{offset};
} elsif (defined $reloc->{type} and $reloc->{type} eq "signed negative delta") {
$value = pack "l<", $object->{serialized_offset} + $reloc->{offset} - $reloc->{item}{serialized_offset};
} else {
...
lib/Set/SegmentTree/node.pm view on Meta::CPAN
# concatentate the data
for my $object (@objects) {
$object->{serialized_offset} = $offset;
$data .= $object->{data};
$offset += length $object->{data};
}
# second pass for writing offsets to other parts
for my $object (@objects) {
if (defined $object->{reloc}) {
# perform address relocation
for my $reloc (@{$object->{reloc}}) {
my $value;
if (defined $reloc->{lambda}) { # allow the reloc to have a custom format
$value = $reloc->{lambda}($object, $reloc);
} elsif (defined $reloc->{type} and $reloc->{type} eq "unsigned delta") {
$value = pack "L<", $reloc->{item}{serialized_offset} - $object->{serialized_offset} - $reloc->{offset};
} elsif (defined $reloc->{type} and $reloc->{type} eq "signed negative delta") {
$value = pack "l<", $object->{serialized_offset} + $reloc->{offset} - $reloc->{item}{serialized_offset};
} else {
...
( run in 1.704 second using v1.01-cache-2.11-cpan-71847e10f99 )