TipJar::fields - generate constants and accessors for array-based objects


TipJar-fields documentation Contained in the TipJar-fields distribution.

Index


Code Index:

NAME

Top

TipJar::fields - generate constants and accessors for array-based objects

SYNOPSIS

Top

  package foobarbazobj;
  use TipJar::fields qw/foo bar baz/;
  sub new{ shift; bless [@_];};
  sub foobaz {my $obj = shift; "$$obj[foo]$obj->[baz]"}; # like C ENUM
  package main;
  $fbb = new foobarbazobj qw/uno dos tres/;
  print $fbb->getfoo();		#prints 'uno'
  print $fbb->setfoo(700);	#prints '700'
  print $fbb->foobaz();		#prints '700tres'

DESCRIPTION

Top

Sugar to create named fields for accessing arrays, just like ENUM statements in the C programming language. Also goes ahead and creates get and set accessors.

EXPORT

exports zero through however many fields there are, as constant functions, like C ENUM. Also get* and set* accessors for each named field, assuming a reference-to-array object structure.

HISTORY

Top

0.01

AUTHOR

Top

David Nicol <davidnico@cpan.org> released April 2003 GPL/AL.

SEE ALSO

Top

fields.


TipJar-fields documentation Contained in the TipJar-fields distribution.

package TipJar::fields;

use strict;
use warnings;
use vars qw/$VERSION/;
$VERSION = '0.01';
use Carp;
sub import{
	shift;
	my $CP = caller;
	my $number;
	my $code = join '',"package $CP;\n",
		map {
			my $N = $number++;
			<<EOF

sub $_(){$N;};
sub get$_ { \$_[0]->[$_]; };
sub set$_ { \$_[0]->[$_] = \$_[1]; };

EOF
		} @_;

	eval $code;

	$@ and croak "$@\n$code\nEND\n";
};

1;
__END__