The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
package App::Addex::AddressBook;
# ABSTRACT: the address book that addex will consult
$App::Addex::AddressBook::VERSION = '0.026';
use App::Addex::Entry;

use Carp ();

#pod =method new
#pod
#pod   my $addr_book = App::Addex::AddressBook->new(\%arg);
#pod
#pod This method returns a new AddressBook.  Its implementation details are left up
#pod to the subclasses, but it must accept a hashref as its first argument.
#pod
#pod Valid arguments are:
#pod
#pod   addex - required; the App::Addex object using this address book
#pod
#pod =cut

sub new {
  my ($class, $arg) = @_;
  Carp::croak "no addex argument provided" unless $arg->{addex};
  bless { addex => $arg->{addex} } => $class;
}

#pod =method addex
#pod
#pod   my $addex = $addr_book->addex;
#pod
#pod This returns the App::Addex object with which the address book is associated.
#pod
#pod =cut

sub addex { $_[0]->{addex} }

#pod =method entries
#pod
#pod   my @entries = $addex->entries;
#pod
#pod This method returns the entries in the address book as L<App::Addex::Entry>
#pod objects.  Its behavior in scalar context is not yet defined.
#pod
#pod This method should be implemented by a address-book-implementation-specific
#pod subclass.
#pod
#pod =cut

sub entries {
  Carp::confess "no behavior defined for virtual method entries";
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

App::Addex::AddressBook - the address book that addex will consult

=head1 VERSION

version 0.026

=head1 METHODS

=head2 new

  my $addr_book = App::Addex::AddressBook->new(\%arg);

This method returns a new AddressBook.  Its implementation details are left up
to the subclasses, but it must accept a hashref as its first argument.

Valid arguments are:

  addex - required; the App::Addex object using this address book

=head2 addex

  my $addex = $addr_book->addex;

This returns the App::Addex object with which the address book is associated.

=head2 entries

  my @entries = $addex->entries;

This method returns the entries in the address book as L<App::Addex::Entry>
objects.  Its behavior in scalar context is not yet defined.

This method should be implemented by a address-book-implementation-specific
subclass.

=head1 AUTHOR

Ricardo SIGNES <rjbs@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2006 by Ricardo SIGNES.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut