#!/usr/bin/perl # -*- Mode: perl -*- #====================================================================== # FILE: Cluster.pm # CREATOR: eric 02 January 2000 # # DESCRIPTION: # # # $Id: Cluster.pm,v 1.4 2000/05/24 04:41:32 eric Exp $ # $Locker: $ # # (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org # # This package is free software and is provided "as is" without express # or implied warranty. It may be used, redistributed and/or modified # under the same terms as perl itself. ( Either the Artistic License or the # GPL. ) # # The Original Code is Cluster.pm. The Initial Developer of the Original # Code is Eric Busboom # #====================================================================== package Net::ICal::Cluster; sub new { my $package = shift; my $path = shift; my $self = []; my $nodelete = shift; # True if libical object should not be deleted in DESTROY $self->[0] = Net::ICal::icalcluster_new($path); $self->[1] = $nodelete; if(!$self->[0] ){ return undef; } bless $self,$package; return $self; } sub _impl { my $self = shift; return $self->[0]; } sub new_from_ref { my $ref = shift; my $self = []; my $nodelete = shift; return undef if !$ref; $self->[0] = $ref; $self->[1] = $nodelete; bless $self,"Net::ICal::Cluster"; return $self; } sub DESTROY { my $self = shift; return if !$self or !$self->_impl(); # HACK. Who is calling with a NULL cluster? return if ($self->[1]); Net::ICal::icalcluster_free($self->_impl()); } sub load { my $self = shift; my $path = shift; } sub mark { my $self = shift; # Net::ICal::icalcluster_mark($self->_impl()); } sub commit { my $self = shift; Net::ICal::icalcluster_commit($self->_impl()); } sub add { my $self = shift; my $comp = shift; return Net::ICal::icalcluster_add_component($self->_impl(),$comp->_impl()); } sub remove { my $self = shift; my $comp = shift; return Net::ICal::icalcluster_remove_component($self->_impl(),$comp->_impl()); } sub count { my $self = shift; return Net::ICal::icalcluster_count($self->_impl()); } sub current { my $self = shift; my $comp = Net::ICal::icalcluster_get_current_component($self->_impl()); return Net::ICal::Component::new_from_ref($comp); } sub first { my $self = shift; my $type = shift; my $kind; if ($type){ $kind = Net::ICal::icalenum_string_to_component_kind($type); } else { $kind = $Net::ICal::ICAL_ANY_COMPONENT; } my $comp = Net::ICal::icalcluster_get_first_component($self->_impl(),$kind); return undef if !$comp; return Net::ICal::Component::new_from_ref($comp); } sub next { my $self = shift; my $type = shift; my $kind; if ($type){ $kind = Net::ICal::icalenum_string_to_component_kind($type); } else { $kind = $Net::ICal::ICAL_ANY_COMPONENT; } my $comp = Net::ICal::icalcluster_get_next_component($self->_impl(),$kind); return undef if !$comp; return Net::ICal::Component::new_from_ref($comp); } 1;