summaryrefslogtreecommitdiff
path: root/lib/Class/MakeMethods/Template/Global.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Class/MakeMethods/Template/Global.pm')
-rw-r--r--lib/Class/MakeMethods/Template/Global.pm97
1 files changed, 97 insertions, 0 deletions
diff --git a/lib/Class/MakeMethods/Template/Global.pm b/lib/Class/MakeMethods/Template/Global.pm
new file mode 100644
index 0000000..0e4c79e
--- /dev/null
+++ b/lib/Class/MakeMethods/Template/Global.pm
@@ -0,0 +1,97 @@
+package Class::MakeMethods::Template::Global;
+
+use Class::MakeMethods::Template::Generic '-isasubclass';
+
+$VERSION = 1.008;
+use strict;
+require 5.0;
+
+=head1 NAME
+
+Class::MakeMethods::Template::Global - Method that are not instance-dependent
+
+=head1 SYNOPSIS
+
+ package MyObject;
+ use Class::MakeMethods::Template::Global (
+ scalar => [ 'foo' ]
+ );
+
+ package main;
+
+ MyObject->foo('bar')
+ print MyObject->foo();
+ ...
+ print $my_instance->foo(); # same thing
+
+=head1 DESCRIPTION
+
+These meta-methods access values that are shared across all instances
+of your object in your process. For example, a hash_scalar meta-method
+will be able to store a different value for each hash instance you
+call it on, but a static_scalar meta-method will return the same
+value for any instance it's called on, and setting it from any
+instance will change the value that all other instances see.
+
+B<Common Parameters>: The following parameters are defined for Static meta-methods.
+
+=over 4
+
+=item data
+
+The shared value.
+
+=back
+
+=cut
+
+sub generic {
+ {
+ '-import' => {
+ 'Template::Generic:generic' => '*'
+ },
+ 'code_expr' => {
+ _VALUE_ => '_ATTR_{data}',
+ },
+ 'params' => {
+ 'data' => undef,
+ }
+ }
+}
+
+########################################################################
+
+=head2 Standard Methods
+
+The following methods from Generic should be supported:
+
+ scalar
+ string
+ 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.
+
+The items marked with a ? above have not been tested sufficiently; please inform the author if they do not function as you would expect.
+
+=head1 SEE ALSO
+
+See L<Class::MakeMethods> for general information about this distribution.
+
+See L<Class::MakeMethods::Template> for more about this family of subclasses.
+
+See L<Class::MakeMethods::Template::Generic> for information about the various accessor interfaces subclassed herein.
+
+=cut
+
+1;