NAME
Set::Infinite::_recurrence - Extends Set::Infinite with recurrence functions
SYNOPSIS
$recurrence
=
$base_set
->_recurrence ( \
&next
, \
&previous
);
DESCRIPTION
This is an internal class used by the DateTime::Set module. The API is subject to change.
It provides all functionality provided by Set::Infinite, plus the ability to define recurrences with arbitrary objects, such as dates.
METHODS
_recurrence ( \&next, \&previous )
Creates a recurrence set. The set is defined inside a 'base set'.
$recurrence
=
$base_set
->_recurrence ( \
&next
, \
&previous
);
The recurrence functions take one argument, and return the 'next' or the 'previous' occurence.
Example: defines the set of all 'integer numbers':
use
strict;
# define the recurrence span
my
$forever
= Set::Infinite::_recurrence->new(
Set::Infinite::_recurrence::NEG_INFINITY,
Set::Infinite::_recurrence::INFINITY
);
my
$recurrence
=
$forever
->_recurrence(
sub
{
# next
floor(
$_
[0] + 1 )
},
sub
{
# previous
my
$tmp
= floor(
$_
[0] );
$tmp
<
$_
[0] ?
$tmp
:
$_
[0] - 1
},
);
print
"sample recurrence "
,
$recurrence
->intersection( -5, 5 ),
"\n"
;
# sample recurrence -5,-4,-3,-2,-1,0,1,2,3,4,5
{
my
$x
= 234.567;
print
"next occurence after $x = "
,
$recurrence
->{param}[0]->(
$x
),
"\n"
;
# 235
print
"previous occurence before $x = "
,
$recurrence
->{param}[2]->(
$x
),
"\n"
;
# 234
}
{
my
$x
= 234;
print
"next occurence after $x = "
,
$recurrence
->{param}[0]->(
$x
),
"\n"
;
# 235
print
"previous occurence before $x = "
,
$recurrence
->{param}[2]->(
$x
),
"\n"
;
# 233
}
is_forever
Returns true if the set is a single span, ranging from -Infinity to Infinity.
_is_recurrence
Returns true if the set is an unbounded recurrence, ranging from -Infinity to Infinity.
CONSTANTS
INFINITY
The
Infinity
value.NEG_INFINITY
The
-Infinity
value.
SUPPORT
Support is offered through the datetime@perl.org
mailing list.
Please report bugs using rt.cpan.org
AUTHOR
Flavio Soibelmann Glock <fglock@pucrs.br>
The recurrence generation algorithm is based on an idea from Dave Rolsky.
COPYRIGHT
Copyright (c) 2003 Flavio Soibelmann Glock. All rights reserved. This program is free software; you can distribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
SEE ALSO
Set::Infinite
DateTime::Set
For details on the Perl DateTime Suite project please see http://datetime.perl.org.