testing
[gitmo/Class-MOP.git] / lib / Class / MOP / Instance.pm
1
2 package Class::MOP::Instance;
3
4 use strict;
5 use warnings;
6
7 use Carp         'confess';
8 use Scalar::Util 'blessed', 'reftype', 'weaken';
9
10 our $VERSION = '0.01';
11
12 sub meta { 
13     require Class::MOP::Class;
14     Class::MOP::Class->initialize(blessed($_[0]) || $_[0]);
15 }
16
17 sub new { 
18     my $class = shift;
19     my $meta  = shift;
20     bless {
21         instance => bless {} => $meta->name
22     } => $class; 
23 }
24
25 sub add_slot {
26     my ($self, $slot_name, $value) = @_;
27     return $self->{instance}->{$slot_name} = $value;
28 }
29
30 sub get_instance { (shift)->{instance} }
31
32 1;
33
34 __END__
35
36 =pod
37
38 =head1 NAME 
39
40 Class::MOP::Instance - Instance Meta Object
41
42 =head1 SYNOPSIS
43
44 =head1 DESCRIPTION
45
46 =head1 METHODS
47
48 =over 4
49
50 =item B<new>
51
52 =item B<add_slot>
53
54 =item B<get_instance>
55
56 =back
57
58 =head2 Introspection
59
60 =over 4
61
62 =item B<meta>
63
64 This will return a B<Class::MOP::Class> instance which is related 
65 to this class.
66
67 =back
68
69 =head1 AUTHOR
70
71 Stevan Little E<lt>stevan@iinteractive.comE<gt>
72
73 =head1 COPYRIGHT AND LICENSE
74
75 Copyright 2006 by Infinity Interactive, Inc.
76
77 L<http://www.iinteractive.com>
78
79 This library is free software; you can redistribute it and/or modify
80 it under the same terms as Perl itself. 
81
82 =cut