retry [PATCH] 5.004_59: the perlhist.pod etc
[p5sagit/p5-mst-13.2.git] / lib / fields.pm
CommitLineData
458fb581 1package fields;
2
d516a115 3=head1 NAME
4
5fields - compile-time class fields
6
7=head1 SYNOPSIS
8
9 {
10 package Foo;
11 use fields qw(foo bar baz);
12 }
13 ...
14 my Foo $var = new Foo;
15 $var->{foo} = 42;
16
17 # This will generate a compile-time error.
18 $var->{zap} = 42;
19
20=head1 DESCRIPTION
21
22The C<fields> pragma enables compile-time verified class fields.
23
24=cut
25
458fb581 26sub import {
27 my $class = shift;
28 my ($package) = caller;
29 my $fields = \%{"$package\::FIELDS"};
30 my $i = $fields->{__MAX__};
31 foreach my $f (@_) {
32 if (defined($fields->{$f})) {
33 require Carp;
34 Carp::croak("Field name $f already in use");
35 }
36 $fields->{$f} = ++$i;
37 }
38 $fields->{__MAX__} = $i;
39}
40
411;