package Lire::SQLExt::LrRangegroup;
use strict;
use POSIX qw/floor ceil/;
sub lr_rangegroup {
my ( $v, $start, $length, $min, $max ) = @_;
return undef unless defined $v && defined $start && defined $length;
$v = $min if defined $min && $v < $min;
$v = $max if defined $max && $v > $max;
return floor( ($v - $start) / $length ) * $length + $start;
}
sub lr_rangegroup_geo {
my ( $v, $start, $length, $base, $min, $max ) = @_;
return undef unless ( defined $v && defined $start
&& defined $length && defined $base );
$v = $min if defined $min && $v < $min;
$v = $max if defined $max && $v > $max;
return undef if $v < $start;
my $range_start = $start;
while ( $v < $range_start || $v >= ( $range_start + $length ) ) {
$range_start += $length;
$length *= $base;
}
return $range_start;
}
# keep perl high
1;
=pod
=head1 NAME
Lire::SQLExt::LrRangegroup - FILL ME IN
=head1 SYNOPSIS
FILL ME IN
=head1 DESCRIPTION
FILL ME IN
=head1 SEE ALSO
Lire::DlfConverter(3pm)
=head1 VERSION
Id: LrRangegroup.pm,v 1.3 2003/10/14 12:59:55 wsourdeau Exp $
=head1 AUTHOR
Francis J. Lacoste <flacoste@logreport.org>
Wolfgang Sourdeau <wolfgang@logreport.org>
=head1 COPYRIGHT
Copyright (C) 2003 Stichting LogReport Foundation LogReport@LogReport.org
This file is part of Lire.
Lire is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program (see COPYING); if not, check with
http://www.gnu.org/copyleft/gpl.html.
=cut
syntax highlighted by Code2HTML, v. 0.9.1