2 package Class::MOP::Attribute;
16 (defined $name && $name ne '')
17 || confess "You must provide a name for the attribute";
21 accessor => $options{accessor},
22 reader => $options{reader},
23 writer => $options{writer},
24 init_arg => $options{init_arg},
25 default => $options{default}
29 sub name { (shift)->{name} }
31 sub has_accessor { (shift)->{accessor} ? 1 : 0 }
32 sub accessor { (shift)->{accessor} }
34 sub has_reader { (shift)->{reader} ? 1 : 0 }
35 sub reader { (shift)->{reader} }
37 sub has_writer { (shift)->{writer} ? 1 : 0 }
38 sub writer { (shift)->{writer} }
40 sub has_init_arg { (shift)->{init_arg} ? 1 : 0 }
41 sub init_arg { (shift)->{init_arg} }
43 sub has_default { (shift)->{default} ? 1 : 0 }
44 sub default { (shift)->{default} }
46 sub generate_accessor {
59 Class::MOP::Attribute - Attribute Meta Object
63 Class::MOP::Attribute->new('$foo' => (
64 accessor => 'foo', # dual purpose get/set accessor
65 init_arg => '-foo', # class->new will look for a -foo key
66 default => 'BAR IS BAZ!' # if no -foo key is provided, use this
69 Class::MOP::Attribute->new('$.bar' => (
70 reader => 'bar', # getter
71 writer => 'set_bar', # setter
72 init_arg => '-bar', # class->new will look for a -bar key
73 # no default value means it is undef
80 Stevan Little E<gt>stevan@iinteractive.comE<lt>
82 =head1 COPYRIGHT AND LICENSE
84 Copyright 2006 by Infinity Interactive, Inc.
86 L<http://www.iinteractive.com>
88 This library is free software; you can redistribute it and/or modify
89 it under the same terms as Perl itself.