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 Wolfgang Sourdeau =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