.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "MakeMethods::Template::InsideOut 3pm" .TH MakeMethods::Template::InsideOut 3pm "2016-06-10" "perl v5.22.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Class::MakeMethods::Template::InsideOut \- External data .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 5 \& package MyObject; \& use Class::MakeMethods::Template::InsideOut ( \& scalar => [ \*(Aqfoo\*(Aq, \*(Aqbar\*(Aq ] \& ); \& sub new { ... } \& \& package main; \& \& my $obj = MyObject\->new( foo => "Foozle", bar => "Bozzle" ); \& print $obj\->foo(); # Prints Foozle \& $obj\->bar("Bamboozle"); # Sets $obj\*(Aqs bar value .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Supports the Generic object constructor and accessors meta-method types, but accepts any object as the underlying implementation type, with member data stored in external indices. .PP Each method stores the values associated with various objects in an hash keyed by the object's stringified identity. Since that hash is accessible only from the generated closures, it is impossible for foreign code to manipulate those values except through the method interface. .PP A \s-1DESTROY\s0 method is installed to remove data for expired objects from the various hashes. (If the \s-1DESTROY\s0 method is not called, your program will not release this data and memory will be wasted.) .PP \&\fBCommon Parameters\fR: The following parameters are defined for InsideOut meta-methods. .IP "data" 4 .IX Item "data" An auto-vivified reference to a hash to be used to store the values for each object. .PP Note that using InsideOut meta-methods causes the installation of a \s-1DESTROY\s0 method in the calling class, which deallocates data for each instance when it is discarded. .PP \&\s-1NOTE:\s0 This needs some more work to properly handle inheritance. .SS "Standard Methods" .IX Subsection "Standard Methods" The following methods from Generic are all supported: .PP .Vb 10 \& scalar \& string \& string_index * \& number \& boolean \& bits \& array \& hash \& tiedhash \& hash_of_arrays \& object \& instance \& array_of_objects \& code \& code_or_scalar .Ve .PP See Class::MakeMethods::Template::Generic for the interfaces and behaviors of these method types. .PP The items marked with a * above are specifically defined in this package, whereas the others are formed automatically by the interaction of this package's generic settings with the code templates provided by the Generic superclass. .SS "boolean_index" .IX Subsection "boolean_index" .Vb 1 \& boolean_index => [ qw / foo bar baz / ] .Ve .PP Like InsideOut:boolean, boolean_index creates x, set_x, and clear_x methods. However, it also defines a class method find_x which returns a list of the objects which presently have the x\-flag set to true. .PP Note that to free items from memory, you must clear these bits!