summaryrefslogtreecommitdiff
path: root/lib/Class/MakeMethods/Template/Scalar.pm
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-08-13 18:41:27 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-08-13 18:41:27 +0000
commitbcbf441e09fb502cf64924ff2530fa144bdf52c5 (patch)
treef377707a2dac078db8cd0c7d7abfe69ac1006d71 /lib/Class/MakeMethods/Template/Scalar.pm
downloadxxv-bcbf441e09fb502cf64924ff2530fa144bdf52c5.tar.gz
xxv-bcbf441e09fb502cf64924ff2530fa144bdf52c5.tar.bz2
* Move files to trunk
Diffstat (limited to 'lib/Class/MakeMethods/Template/Scalar.pm')
-rw-r--r--lib/Class/MakeMethods/Template/Scalar.pm80
1 files changed, 80 insertions, 0 deletions
diff --git a/lib/Class/MakeMethods/Template/Scalar.pm b/lib/Class/MakeMethods/Template/Scalar.pm
new file mode 100644
index 0000000..705f007
--- /dev/null
+++ b/lib/Class/MakeMethods/Template/Scalar.pm
@@ -0,0 +1,80 @@
+package Class::MakeMethods::Template::Scalar;
+
+use Class::MakeMethods::Template::Generic '-isasubclass';
+
+$VERSION = 1.008;
+use strict;
+require 5.00;
+use Carp;
+
+=head1 NAME
+
+Class::MakeMethods::Template::Scalar - Methods for blessed scalars
+
+=head1 SYNOPSIS
+
+ package MyObject;
+ use Class::MakeMethods::Template::ExternalData (
+ new => 'new',
+ scalar => 'foo',
+ );
+
+ package main;
+
+ my $obj = MyObject->new( foo => "Foozle" );
+ print $obj->foo(); # Prints Foozle
+ $obj->foo("Bamboozle"); # Sets $$obj
+ print $obj->foo(); # Prints Bamboozle
+
+=head1 DESCRIPTION
+
+Supports the Generic object constructor and accessors meta-method
+types, but uses scalar refs as the underlying implementation type,
+so only one accessor method can be used effectively.
+
+=cut
+
+sub generic {
+ {
+ '-import' => {
+ 'Template::Generic:generic' => '*'
+ },
+ 'code_expr' => {
+ _VALUE_ => '(${_SELF_})',
+ _EMPTY_NEW_INSTANCE_ => 'bless \( my $scalar = undef ), _SELF_CLASS_',
+ },
+ 'params' => {
+ }
+ }
+}
+
+########################################################################
+
+=head2 Standard Methods
+
+The following methods from Generic are all supported:
+
+ new
+ scalar
+ string
+ string_index
+ number
+ boolean
+ bits
+ array
+ hash
+ tiedhash
+ hash_of_arrays
+ object
+ instance
+ array_of_objects
+ code
+ code_or_scalar
+
+See L<Class::MakeMethods::Template::Generic> for the interfaces and behaviors of these method types.
+
+However, note that due to special nature of this package, all accessor methods reference the same scalar value, so setting a value with one method will overwrite the value retrieved by another.
+
+=cut
+
+1;