line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
1
|
|
|
1
|
|
5
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
253
|
|
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
push(@::bean_desc, { |
4
|
|
|
|
|
|
|
bean_opt => { |
5
|
|
|
|
|
|
|
abstract => 'Unique, associative MULTI bean attribute information', |
6
|
|
|
|
|
|
|
package => 'PerlBean::Attribute::Multi::Unique::Associative', |
7
|
|
|
|
|
|
|
use_perl_version => 5.005, |
8
|
|
|
|
|
|
|
base => [ qw(PerlBean::Attribute::Multi)], |
9
|
|
|
|
|
|
|
description => <
|
10
|
|
|
|
|
|
|
C contains unique associative MULTI bean attribute information. It is a subclass of C. The code generation and documentation methods from C are implemented. |
11
|
|
|
|
|
|
|
EOF |
12
|
|
|
|
|
|
|
short_description => 'contains unique associative MULTI bean attribute information', |
13
|
|
|
|
|
|
|
synopsis => &get_syn(), |
14
|
|
|
|
|
|
|
}, |
15
|
|
|
|
|
|
|
attr_opt => [ |
16
|
|
|
|
|
|
|
], |
17
|
|
|
|
|
|
|
meth_opt => [ |
18
|
|
|
|
|
|
|
{ |
19
|
|
|
|
|
|
|
method_name => 'create_method_add', |
20
|
|
|
|
|
|
|
documented => 0, |
21
|
|
|
|
|
|
|
body => <<'THE_EOF', |
22
|
|
|
|
|
|
|
my $self = shift; |
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
my $an = $self->get_method_factory_name(); |
25
|
|
|
|
|
|
|
my $an_esc = $self->_esc_apos($an); |
26
|
|
|
|
|
|
|
my $op = &{$MOF}('add'); |
27
|
|
|
|
|
|
|
my $mb = $self->get_method_base(); |
28
|
|
|
|
|
|
|
my $ec = $self->get_exception_class(); |
29
|
|
|
|
|
|
|
my $pkg = $self->get_package(); |
30
|
|
|
|
|
|
|
my $pkg_us = $self->get_package_us(); |
31
|
|
|
|
|
|
|
my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option'; |
32
|
|
|
|
|
|
|
my $exc = ' On error an exception C<' . $self->get_exception_class() . '> is thrown.'; |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
# Make body |
35
|
|
|
|
|
|
|
my $body = <
|
36
|
|
|
|
|
|
|
${IND}my \$self${AO}=${AO}shift; |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
EOF |
39
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
# Separate keys/values |
41
|
|
|
|
|
|
|
$body .= <
|
42
|
|
|
|
|
|
|
${IND}# Separate keys/values |
43
|
|
|
|
|
|
|
${IND}my \@key${AO}=${AO}(); |
44
|
|
|
|
|
|
|
${IND}my \@value${AO}=${AO}(); |
45
|
|
|
|
|
|
|
${IND}while${BCP}(${ACS}my \$key${AO}=${AO}shift${BFP}(\@_)${ACS})${PBOC[1]}{ |
46
|
|
|
|
|
|
|
${IND}${IND}push${BFP}(${ACS}\@key,${AC}\$key${ACS}); |
47
|
|
|
|
|
|
|
${IND}${IND}push${BFP}(${ACS}\@value,${AC}shift${BFP}(\@_)${ACS}); |
48
|
|
|
|
|
|
|
${IND}} |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
EOF |
51
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
# Check if isas/refs/rxs/values are allowed |
53
|
|
|
|
|
|
|
$body .= <
|
54
|
|
|
|
|
|
|
${IND}# Check if isas/refs/rxs/values are allowed |
55
|
|
|
|
|
|
|
${IND}\&_value_is_allowed${BFP}(${ACS}$an_esc,${AC}\@value${ACS})${AO}||${AO}throw $ec${BFP}("ERROR: ${pkg}::$op$mb, one or more specified value(s) '\@value' is/are not allowed."); |
56
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
EOF |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
# Method tail |
60
|
|
|
|
|
|
|
$body .= <
|
61
|
|
|
|
|
|
|
${IND}# Add keys/values |
62
|
|
|
|
|
|
|
${IND}foreach my \$key (\@key)${PBOC[1]}{ |
63
|
|
|
|
|
|
|
${IND}${IND}\$self->{$pkg_us}{$an}{\$key}${AO}=${AO}shift${BFP}(\@value); |
64
|
|
|
|
|
|
|
${IND}} |
65
|
|
|
|
|
|
|
EOF |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
# Make description |
68
|
|
|
|
|
|
|
my $description = <
|
69
|
|
|
|
|
|
|
Add additional keys/values on ${desc}. C are key/value pairs. The addition may not yield to multiple identical keys in the list. Hence, multiple occurrences of the same key cause the last occurrence to be inserted.${exc} |
70
|
|
|
|
|
|
|
EOF |
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
# Add clauses to the description |
73
|
|
|
|
|
|
|
my $clauses = $self->mk_doc_clauses(); |
74
|
|
|
|
|
|
|
if ($clauses) { |
75
|
|
|
|
|
|
|
$description .= "\n" . $clauses; |
76
|
|
|
|
|
|
|
} |
77
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
# Create and return the method |
79
|
|
|
|
|
|
|
return( PerlBean::Method->new( { |
80
|
|
|
|
|
|
|
method_name => "$op$mb", |
81
|
|
|
|
|
|
|
parameter_description => "${ACS}\[${ACS}KEY, VALUE ...${ACS}]${ACS}", |
82
|
|
|
|
|
|
|
documented => $self->is_documented(), |
83
|
|
|
|
|
|
|
volatile => 1, |
84
|
|
|
|
|
|
|
description => $description, |
85
|
|
|
|
|
|
|
body => $body, |
86
|
|
|
|
|
|
|
} ) ); |
87
|
|
|
|
|
|
|
THE_EOF |
88
|
|
|
|
|
|
|
}, |
89
|
|
|
|
|
|
|
{ |
90
|
|
|
|
|
|
|
method_name => 'create_method_delete', |
91
|
|
|
|
|
|
|
documented => 0, |
92
|
|
|
|
|
|
|
body => <<'THE_EOF', |
93
|
|
|
|
|
|
|
my $self = shift; |
94
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
my $an = $self->get_method_factory_name(); |
96
|
|
|
|
|
|
|
my $an_esc = $self->_esc_apos($an); |
97
|
|
|
|
|
|
|
my $op = &{$MOF}('delete'); |
98
|
|
|
|
|
|
|
my $mb = $self->get_method_base(); |
99
|
|
|
|
|
|
|
my $ec = $self->get_exception_class(); |
100
|
|
|
|
|
|
|
my $pkg = $self->get_package(); |
101
|
|
|
|
|
|
|
my $pkg_us = $self->get_package_us(); |
102
|
|
|
|
|
|
|
my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option'; |
103
|
|
|
|
|
|
|
my $empt = $self->is_allow_empty() ? '' : ' After deleting at least one element must remain.'; |
104
|
|
|
|
|
|
|
my $exc = ' On error an exception C<' . $self->get_exception_class() . '> is thrown.'; |
105
|
|
|
|
|
|
|
|
106
|
|
|
|
|
|
|
# Make body |
107
|
|
|
|
|
|
|
my $body = <
|
108
|
|
|
|
|
|
|
${IND}my \$self${AO}=${AO}shift; |
109
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
EOF |
111
|
|
|
|
|
|
|
|
112
|
|
|
|
|
|
|
# Check if list value is allowed to be empty |
113
|
|
|
|
|
|
|
if ( ! $self->is_allow_empty() ) { |
114
|
|
|
|
|
|
|
$body .= <
|
115
|
|
|
|
|
|
|
${IND}# List value for $an_esc is not allowed to be empty |
116
|
|
|
|
|
|
|
${IND}my \%would_delete${AO}=${AO}(); |
117
|
|
|
|
|
|
|
${IND}foreach my \$val (\@_)${PBOC[1]}{ |
118
|
|
|
|
|
|
|
${IND}${IND}\$would_delete{\$val}${AO}=${AO}\$val if${BCP}(${ACS}exists${BFP}(${ACS}\$self->{$pkg_us}{$an}{\$val}${ACS})${ACS}) |
119
|
|
|
|
|
|
|
${IND}} |
120
|
|
|
|
|
|
|
${IND}(${ACS}scalar${BFP}(${ACS}keys${BFP}(${ACS}\%{${ACS}\$self->{$pkg_us}{$an}${ACS}}${ACS})${ACS})${AO}==${AO}scalar${BFP}(${ACS}keys${BFP}(${ACS}\%would_delete)${ACS})${ACS})${AO}&&${AO}throw $ec${BFP}("ERROR: ${pkg}::$op$mb, list value may not be empty."); |
121
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
EOF |
123
|
|
|
|
|
|
|
} |
124
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
# Method tail |
126
|
|
|
|
|
|
|
$body .= <
|
127
|
|
|
|
|
|
|
${IND}# Delete values |
128
|
|
|
|
|
|
|
${IND}my \$del${AO}=${AO}0; |
129
|
|
|
|
|
|
|
${IND}foreach my \$val (\@_)${PBOC[1]}{ |
130
|
|
|
|
|
|
|
${IND}${IND}exists${BFP}(${ACS}\$self->{$pkg_us}{$an}{\$val}${ACS})${AO}||${AO}next; |
131
|
|
|
|
|
|
|
${IND}${IND}delete${BFP}(${ACS}\$self->{$pkg_us}{$an}{\$val}${ACS}); |
132
|
|
|
|
|
|
|
${IND}${IND}\$del${AO}++; |
133
|
|
|
|
|
|
|
${IND}} |
134
|
|
|
|
|
|
|
${IND}return${BFP}(\$del); |
135
|
|
|
|
|
|
|
EOF |
136
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
# Create and return the method |
138
|
|
|
|
|
|
|
return( PerlBean::Method->new( { |
139
|
|
|
|
|
|
|
method_name => "$op$mb", |
140
|
|
|
|
|
|
|
parameter_description => 'ARRAY', |
141
|
|
|
|
|
|
|
documented => $self->is_documented(), |
142
|
|
|
|
|
|
|
volatile => 1, |
143
|
|
|
|
|
|
|
description => <
|
144
|
|
|
|
|
|
|
Delete elements from ${desc}.${empt} Returns the number of deleted elements.${exc} |
145
|
|
|
|
|
|
|
EOF |
146
|
|
|
|
|
|
|
body => $body, |
147
|
|
|
|
|
|
|
} ) ); |
148
|
|
|
|
|
|
|
THE_EOF |
149
|
|
|
|
|
|
|
}, |
150
|
|
|
|
|
|
|
{ |
151
|
|
|
|
|
|
|
method_name => 'create_method_exists', |
152
|
|
|
|
|
|
|
documented => 0, |
153
|
|
|
|
|
|
|
body => <<'THE_EOF', |
154
|
|
|
|
|
|
|
my $self = shift; |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
my $an = $self->get_method_factory_name(); |
157
|
|
|
|
|
|
|
my $op = &{$MOF}('exists'); |
158
|
|
|
|
|
|
|
my $mb = $self->get_method_base(); |
159
|
|
|
|
|
|
|
my $pkg_us = $self->get_package_us(); |
160
|
|
|
|
|
|
|
my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option'; |
161
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
# Make body |
163
|
|
|
|
|
|
|
my $body = <
|
164
|
|
|
|
|
|
|
${IND}my \$self${AO}=${AO}shift; |
165
|
|
|
|
|
|
|
|
166
|
|
|
|
|
|
|
${IND}# Count occurrences |
167
|
|
|
|
|
|
|
${IND}my \$count${AO}=${AO}0; |
168
|
|
|
|
|
|
|
${IND}foreach my \$val (\@_)${PBOC[1]}{ |
169
|
|
|
|
|
|
|
${IND}${IND}\$count${AO}+=${AO}exists${BFP}(${ACS}\$self->{$pkg_us}{$an}{\$val}${ACS}); |
170
|
|
|
|
|
|
|
${IND}} |
171
|
|
|
|
|
|
|
${IND}return${BFP}(\$count); |
172
|
|
|
|
|
|
|
EOF |
173
|
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
# Create and return the method |
175
|
|
|
|
|
|
|
return( PerlBean::Method->new( { |
176
|
|
|
|
|
|
|
method_name => "$op$mb", |
177
|
|
|
|
|
|
|
parameter_description => 'ARRAY', |
178
|
|
|
|
|
|
|
documented => $self->is_documented(), |
179
|
|
|
|
|
|
|
volatile => 1, |
180
|
|
|
|
|
|
|
description => <
|
181
|
|
|
|
|
|
|
Returns the count of items in C that are in ${desc}. |
182
|
|
|
|
|
|
|
EOF |
183
|
|
|
|
|
|
|
body => $body, |
184
|
|
|
|
|
|
|
} ) ); |
185
|
|
|
|
|
|
|
THE_EOF |
186
|
|
|
|
|
|
|
}, |
187
|
|
|
|
|
|
|
{ |
188
|
|
|
|
|
|
|
method_name => 'create_method_keys', |
189
|
|
|
|
|
|
|
documented => 0, |
190
|
|
|
|
|
|
|
body => <<'THE_EOF', |
191
|
|
|
|
|
|
|
my $self = shift; |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
my $an = $self->get_method_factory_name(); |
194
|
|
|
|
|
|
|
my $op = &{$MOF}('keys'); |
195
|
|
|
|
|
|
|
my $mb = $self->get_method_base(); |
196
|
|
|
|
|
|
|
my $pkg_us = $self->get_package_us(); |
197
|
|
|
|
|
|
|
my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option'; |
198
|
|
|
|
|
|
|
|
199
|
|
|
|
|
|
|
# Make body |
200
|
|
|
|
|
|
|
my $body = <
|
201
|
|
|
|
|
|
|
${IND}my \$self${AO}=${AO}shift; |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
${IND}# Return all keys |
204
|
|
|
|
|
|
|
${IND}return${BFP}(${ACS}keys${BFP}(${ACS}\%{${ACS}\$self->{$pkg_us}{$an}${ACS}}${ACS})${ACS}); |
205
|
|
|
|
|
|
|
EOF |
206
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
# Create and return the method |
208
|
|
|
|
|
|
|
return( PerlBean::Method->new( { |
209
|
|
|
|
|
|
|
method_name => "$op$mb", |
210
|
|
|
|
|
|
|
documented => $self->is_documented(), |
211
|
|
|
|
|
|
|
volatile => 1, |
212
|
|
|
|
|
|
|
description => <
|
213
|
|
|
|
|
|
|
Returns an C containing the keys of ${desc}. |
214
|
|
|
|
|
|
|
EOF |
215
|
|
|
|
|
|
|
body => $body, |
216
|
|
|
|
|
|
|
} ) ); |
217
|
|
|
|
|
|
|
THE_EOF |
218
|
|
|
|
|
|
|
}, |
219
|
|
|
|
|
|
|
{ |
220
|
|
|
|
|
|
|
method_name => 'create_method_set', |
221
|
|
|
|
|
|
|
documented => 0, |
222
|
|
|
|
|
|
|
body => <<'THE_EOF', |
223
|
|
|
|
|
|
|
my $self = shift; |
224
|
|
|
|
|
|
|
|
225
|
|
|
|
|
|
|
my $an = $self->get_method_factory_name(); |
226
|
|
|
|
|
|
|
my $an_esc = $self->_esc_apos($an); |
227
|
|
|
|
|
|
|
my $op = &{$MOF}('set'); |
228
|
|
|
|
|
|
|
my $mb = $self->get_method_base(); |
229
|
|
|
|
|
|
|
my $ec = $self->get_exception_class(); |
230
|
|
|
|
|
|
|
my $pkg = $self->get_package(); |
231
|
|
|
|
|
|
|
my $pkg_us = $self->get_package_us(); |
232
|
|
|
|
|
|
|
my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option'; |
233
|
|
|
|
|
|
|
my $def = defined( $self->get_default_value() ) ? ' Default value at initialization is C<' . join( ', ', $self->_esc_aq ( @{ $self->get_default_value() } ) ) . '>.' : ''; |
234
|
|
|
|
|
|
|
my $empt = $self->is_allow_empty() ? '' : ' C must at least have one element.'; |
235
|
|
|
|
|
|
|
my $exc = ' On error an exception C<' . $self->get_exception_class() . '> is thrown.'; |
236
|
|
|
|
|
|
|
my $attr_overl = $self->_get_overloaded_attribute(); |
237
|
|
|
|
|
|
|
my $overl = defined($attr_overl) ? " B Methods B> are overloaded from package C<". $attr_overl->get_package() .'>.': ''; |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
# Make body |
240
|
|
|
|
|
|
|
my $body = <
|
241
|
|
|
|
|
|
|
${IND}my \$self${AO}=${AO}shift; |
242
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
EOF |
244
|
|
|
|
|
|
|
|
245
|
|
|
|
|
|
|
# Check if list value is allowed to be empty |
246
|
|
|
|
|
|
|
if ( ! $self->is_allow_empty() ) { |
247
|
|
|
|
|
|
|
$body .= <
|
248
|
|
|
|
|
|
|
${IND}# List value for $an_esc is not allowed to be empty |
249
|
|
|
|
|
|
|
${IND}scalar${BFP}(\@_)${AO}||${AO}throw $ec${BFP}("ERROR: ${pkg}::$op$mb, list value may not be empty."); |
250
|
|
|
|
|
|
|
|
251
|
|
|
|
|
|
|
EOF |
252
|
|
|
|
|
|
|
} |
253
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
# Separate keys/values |
255
|
|
|
|
|
|
|
$body .= <
|
256
|
|
|
|
|
|
|
${IND}# Separate keys/values |
257
|
|
|
|
|
|
|
${IND}my \@key${AO}=${AO}(); |
258
|
|
|
|
|
|
|
${IND}my \@value${AO}=${AO}(); |
259
|
|
|
|
|
|
|
${IND}while${BCP}(${ACS}my \$key${AO}=${AO}shift${BFP}(\@_)${ACS})${PBOC[1]}{ |
260
|
|
|
|
|
|
|
${IND}${IND}push${BFP}(${ACS}\@key,${AC}\$key${ACS}); |
261
|
|
|
|
|
|
|
${IND}${IND}push${BFP}(${ACS}\@value,${AC}shift${BFP}(\@_)${ACS}); |
262
|
|
|
|
|
|
|
${IND}} |
263
|
|
|
|
|
|
|
|
264
|
|
|
|
|
|
|
EOF |
265
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
# Check if isas/refs/rxs/values are allowed |
267
|
|
|
|
|
|
|
$body .= <
|
268
|
|
|
|
|
|
|
${IND}# Check if isas/refs/rxs/values are allowed |
269
|
|
|
|
|
|
|
${IND}\&_value_is_allowed${BFP}(${ACS}$an_esc,${AC}\@value${ACS})${AO}||${AO}throw $ec${BFP}("ERROR: ${pkg}::$op$mb, one or more specified value(s) '\@value' is/are not allowed."); |
270
|
|
|
|
|
|
|
|
271
|
|
|
|
|
|
|
EOF |
272
|
|
|
|
|
|
|
|
273
|
|
|
|
|
|
|
# Method tail |
274
|
|
|
|
|
|
|
$body .= <
|
275
|
|
|
|
|
|
|
${IND}# Empty list |
276
|
|
|
|
|
|
|
${IND}\$self->{$pkg_us}{$an}${AO}=${AO}\{}; |
277
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
${IND}# Add keys/values |
279
|
|
|
|
|
|
|
${IND}foreach my \$key (\@key)${PBOC[1]}{ |
280
|
|
|
|
|
|
|
${IND}${IND}\$self->{$pkg_us}{$an}{\$key}${AO}=${AO}shift${BFP}(\@value); |
281
|
|
|
|
|
|
|
${IND}} |
282
|
|
|
|
|
|
|
EOF |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
# Make description |
285
|
|
|
|
|
|
|
my $description = <
|
286
|
|
|
|
|
|
|
Set ${desc} absolutely using keys/values. C are key/value pairs. 0 or more of these pairs may be supplied. Each key in is allowed to occur only once. Multiple occurrences of the same key yield in the last occurring key to be inserted and the rest to be ignored.${def}${empt}${exc}${overl} |
287
|
|
|
|
|
|
|
EOF |
288
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
# Add clauses to the description |
290
|
|
|
|
|
|
|
my $clauses = $self->mk_doc_clauses(); |
291
|
|
|
|
|
|
|
if ($clauses) { |
292
|
|
|
|
|
|
|
$description .= "\n" . $clauses; |
293
|
|
|
|
|
|
|
} |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
# Create and return the method |
296
|
|
|
|
|
|
|
return( PerlBean::Method->new( { |
297
|
|
|
|
|
|
|
method_name => "$op$mb", |
298
|
|
|
|
|
|
|
parameter_description => "${ACS}\[${ACS}KEY, VALUE ...${ACS}]${ACS}", |
299
|
|
|
|
|
|
|
documented => $self->is_documented(), |
300
|
|
|
|
|
|
|
volatile => 1, |
301
|
|
|
|
|
|
|
description => $description, |
302
|
|
|
|
|
|
|
body => $body, |
303
|
|
|
|
|
|
|
} ) ); |
304
|
|
|
|
|
|
|
THE_EOF |
305
|
|
|
|
|
|
|
}, |
306
|
|
|
|
|
|
|
{ |
307
|
|
|
|
|
|
|
method_name => 'create_method_values', |
308
|
|
|
|
|
|
|
documented => 0, |
309
|
|
|
|
|
|
|
body => <<'THE_EOF', |
310
|
|
|
|
|
|
|
my $self = shift; |
311
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
my $an = $self->get_method_factory_name(); |
313
|
|
|
|
|
|
|
my $op = &{$MOF}('values'); |
314
|
|
|
|
|
|
|
my $mb = $self->get_method_base(); |
315
|
|
|
|
|
|
|
my $pkg_us = $self->get_package_us(); |
316
|
|
|
|
|
|
|
my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option'; |
317
|
|
|
|
|
|
|
|
318
|
|
|
|
|
|
|
# Make body |
319
|
|
|
|
|
|
|
my $body = <
|
320
|
|
|
|
|
|
|
${IND}my \$self${AO}=${AO}shift; |
321
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
${IND}if${BCP}(${ACS}scalar${BFP}(\@_)${ACS})${PBOC[1]}{ |
323
|
|
|
|
|
|
|
${IND}${IND}my \@ret${AO}=${AO}(); |
324
|
|
|
|
|
|
|
${IND}${IND}foreach my \$key (\@_)${PBOC[2]}{ |
325
|
|
|
|
|
|
|
${IND}${IND}${IND}exists${BFP}(${ACS}\$self->{$pkg_us}{$an}{\$key}${ACS})${AO}&&${AO}push${BFP}(${ACS}\@ret,${AC}\$self->{$pkg_us}{$an}{\$key}${ACS}); |
326
|
|
|
|
|
|
|
${IND}${IND}} |
327
|
|
|
|
|
|
|
${IND}${IND}return${BFP}(\@ret); |
328
|
|
|
|
|
|
|
${IND}}${PBCC[1]}else${PBOC[1]}{ |
329
|
|
|
|
|
|
|
${IND}${IND}# Return all values |
330
|
|
|
|
|
|
|
${IND}${IND}return${BFP}(${ACS}values${BFP}(${ACS}\%{${ACS}\$self->{$pkg_us}{$an}${ACS}}${ACS})${ACS}); |
331
|
|
|
|
|
|
|
${IND}} |
332
|
|
|
|
|
|
|
EOF |
333
|
|
|
|
|
|
|
|
334
|
|
|
|
|
|
|
# Create and return the method |
335
|
|
|
|
|
|
|
return( PerlBean::Method->new( { |
336
|
|
|
|
|
|
|
method_name => "$op$mb", |
337
|
|
|
|
|
|
|
parameter_description => "${ACS}\[${ACS}KEY_ARRAY${ACS}]${ACS}", |
338
|
|
|
|
|
|
|
documented => $self->is_documented(), |
339
|
|
|
|
|
|
|
volatile => 1, |
340
|
|
|
|
|
|
|
description => <
|
341
|
|
|
|
|
|
|
Returns an C containing the values of ${desc}. If C contains one or more Cs the values related to the Cs are returned. If no Cs specified all values are returned. |
342
|
|
|
|
|
|
|
EOF |
343
|
|
|
|
|
|
|
body => $body, |
344
|
|
|
|
|
|
|
} ) ); |
345
|
|
|
|
|
|
|
THE_EOF |
346
|
|
|
|
|
|
|
}, |
347
|
|
|
|
|
|
|
{ |
348
|
|
|
|
|
|
|
method_name => 'create_methods', |
349
|
|
|
|
|
|
|
description => <
|
350
|
|
|
|
|
|
|
__SUPER_POD__ Access methods are B, B, B, B, B and B.', |
351
|
|
|
|
|
|
|
EOF |
352
|
|
|
|
|
|
|
body => <<'EOF', |
353
|
|
|
|
|
|
|
my $self = shift; |
354
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
return( |
356
|
|
|
|
|
|
|
$self->create_method_add(), |
357
|
|
|
|
|
|
|
$self->create_method_delete(), |
358
|
|
|
|
|
|
|
$self->create_method_exists(), |
359
|
|
|
|
|
|
|
$self->create_method_keys(), |
360
|
|
|
|
|
|
|
$self->create_method_set(), |
361
|
|
|
|
|
|
|
$self->create_method_values(), |
362
|
|
|
|
|
|
|
); |
363
|
|
|
|
|
|
|
EOF |
364
|
|
|
|
|
|
|
}, |
365
|
|
|
|
|
|
|
], |
366
|
|
|
|
|
|
|
sym_opt => [ |
367
|
|
|
|
|
|
|
], |
368
|
|
|
|
|
|
|
use_opt => [ |
369
|
|
|
|
|
|
|
{ |
370
|
|
|
|
|
|
|
dependency_name => 'PerlBean::Style', |
371
|
|
|
|
|
|
|
import_list => [ 'qw(:codegen)' ], |
372
|
|
|
|
|
|
|
}, |
373
|
|
|
|
|
|
|
], |
374
|
|
|
|
|
|
|
} ); |
375
|
|
|
|
|
|
|
|
376
|
|
|
|
|
|
|
sub get_syn { |
377
|
1
|
|
|
1
|
|
4
|
use IO::File; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
170
|
|
378
|
|
|
|
|
|
|
my $fh = IO::File->new('< syn-PerlBean_Attribute_Multi_Unique_Associative.pl'); |
379
|
|
|
|
|
|
|
$fh = IO::File->new('< gen/syn-PerlBean_Attribute_Multi_Unique_Associative.pl') if (! defined($fh)); |
380
|
|
|
|
|
|
|
my $syn = ''; |
381
|
|
|
|
|
|
|
my $prev_line = $fh->getline (); |
382
|
|
|
|
|
|
|
while (my $line = $fh->getline ()) { |
383
|
|
|
|
|
|
|
$syn .= ' ' . $prev_line; |
384
|
|
|
|
|
|
|
$prev_line = $line; |
385
|
|
|
|
|
|
|
} |
386
|
|
|
|
|
|
|
return($syn); |
387
|
|
|
|
|
|
|
} |
388
|
|
|
|
|
|
|
|
389
|
|
|
|
|
|
|
1; |