Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / MooseX::Clone::Meta::Attribute::Trait::StorableClone.3pm
1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD.  Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
65 .    \" fudge factors for nroff and troff
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
90 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 .    \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 .    \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 .    \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "MooseX::Clone::Meta::Attribute::Trait::StorableClone 3"
127 .TH MooseX::Clone::Meta::Attribute::Trait::StorableClone 3 "2009-04-11" "perl v5.8.8" "User Contributed Perl Documentation"
128 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 MooseX::Clone::Meta::Attribute::Trait::StorableClone \- The Moose::Meta::Attribute
134 trait for deeply cloning attributes using Storable.
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 .Vb 1
138 \&    # see MooseX::Clone
139 \&
140 \&    has foo => (
141 \&        traits => [qw(StorableClone)],
142 \&        isa => "Something",
143 \&    );
144 \&
145 \&    my $clone = $object\->clone; # $clone\->foo will equal Storable::dclone($object\->foo)
146 .Ve
147 .SH "DESCRIPTION"
148 .IX Header "DESCRIPTION"
149 This meta attribute trait provides a \f(CW\*(C`clone_value\*(C'\fR method, in the spirit of
150 \&\f(CW\*(C`get_value\*(C'\fR and \f(CW\*(C`set_value\*(C'\fR. This allows clone methods such as the one in
151 MooseX::Clone to make use of this per-attribute cloning behavior.
152 .SH "DERIVATION"
153 .IX Header "DERIVATION"
154 Deriving this role for your own cloning purposes is encouraged.
155 .PP
156 This will allow your fine grained cloning semantics to interact with
157 MooseX::Clone in the RightX way.
158 .SH "ATTRIBUTES"
159 .IX Header "ATTRIBUTES"
160 .IP "clone_only_objects" 4
161 .IX Item "clone_only_objects"
162 Whether or not Data::Visitor should be used to clone arbitrary structures.
163 Objects found in these structures will be cloned using clone_object_value.
164 .Sp
165 If true then non object values will be copied over in shallow cloning semantics
166 (shared reference).
167 .Sp
168 Defaults to false (all reference will be cloned).
169 .IP "clone_visitor_config" 4
170 .IX Item "clone_visitor_config"
171 A hash ref used to construct \f(CW\*(C`clone_visitor\*(C'\fR. Defaults to the empty ref.
172 .Sp
173 This can be used to alter the cloning behavior for non object values.
174 .IP "clone_visitor" 4
175 .IX Item "clone_visitor"
176 The Data::Visitor::Callback object that will be used to clone.
177 .Sp
178 It has an \f(CW\*(C`object\*(C'\fR handler that delegates to \f(CW\*(C`clone_object_value\*(C'\fR and sets
179 \&\f(CW\*(C`tied_as_objects\*(C'\fR to true in order to deeply clone tied structures while
180 retaining magic.
181 .Sp
182 Only used if \f(CW\*(C`clone_only_objects\*(C'\fR is false and the value of the attribute is
183 not an object.
184 .SH "METHODS"
185 .IX Header "METHODS"
186 .ie n .IP "clone_value $target, $proto, %args" 4
187 .el .IP "clone_value \f(CW$target\fR, \f(CW$proto\fR, \f(CW%args\fR" 4
188 .IX Item "clone_value $target, $proto, %args"
189 Clones the value the attribute encapsulates from \f(CW$proto\fR into \f(CW$target\fR.
190 .ie n .IP "clone_value_data $value, %args" 4
191 .el .IP "clone_value_data \f(CW$value\fR, \f(CW%args\fR" 4
192 .IX Item "clone_value_data $value, %args"
193 Does the actual cloning of the value data by delegating to a \f(CW\*(C`clone\*(C'\fR method on
194 the object if any.
195 .Sp
196 If the object does not support a \f(CW\*(C`clone\*(C'\fR method an error is thrown.
197 .Sp
198 If the value is not an object then it will not be cloned.
199 .Sp
200 In the future support for deep cloning of simple refs will be added too.
201 .ie n .IP "clone_object_value $object, %args" 4
202 .el .IP "clone_object_value \f(CW$object\fR, \f(CW%args\fR" 4
203 .IX Item "clone_object_value $object, %args"
204 This is the actual workhorse of \f(CW\*(C`clone_value_data\*(C'\fR.
205 .ie n .IP "clone_any_value $value, %args" 4
206 .el .IP "clone_any_value \f(CW$value\fR, \f(CW%args\fR" 4
207 .IX Item "clone_any_value $value, %args"
208 Uses \f(CW\*(C`clone_visitor\*(C'\fR to clone all non object values.
209 .Sp
210 Called from \f(CW\*(C`clone_value_data\*(C'\fR if the value is not an object and
211 \&\f(CW\*(C`clone_only_objects\*(C'\fR is false.