3 |
# $Id$ |
# $Id$ |
4 |
# |
# |
5 |
# $Log$ |
# $Log$ |
6 |
|
# Revision 1.6 2002/12/23 11:27:53 jonen |
7 |
|
# + changed behavior WATCH! |
8 |
|
# |
9 |
# Revision 1.5 2002/12/16 19:57:54 joko |
# Revision 1.5 2002/12/16 19:57:54 joko |
10 |
# + option 'init' |
# + option 'init' |
11 |
# |
# |
313 |
|
|
314 |
# loop through fields of to.be.injected-data (arbitrary Perl-data-structure) |
# loop through fields of to.be.injected-data (arbitrary Perl-data-structure) |
315 |
@fields = keys %{$data} if $options->{init}; |
@fields = keys %{$data} if $options->{init}; |
316 |
|
# @fields = keys %{$data} if $options->{mixin}; |
317 |
|
|
318 |
foreach (@fields) { |
foreach (@fields) { |
319 |
push @indexstack, $_; |
push @indexstack, $_; |
325 |
hash2object_traverse_mixin($object->{$_}, $data, 1, $options); |
hash2object_traverse_mixin($object->{$_}, $data, 1, $options); |
326 |
} else { |
} else { |
327 |
my $val = getStructSlotByStringyAddress($data, \@indexstack); |
my $val = getStructSlotByStringyAddress($data, \@indexstack); |
328 |
$object->{$_} = $val; |
$object->{$_} = $val if defined $val; |
329 |
} |
} |
330 |
pop @indexstack; |
pop @indexstack; |
331 |
} |
} |
356 |
push @indexstack, $i; |
push @indexstack, $i; |
357 |
my $ref = ref $_; |
my $ref = ref $_; |
358 |
# print STDERR "attrname: $_ ATTRref: $ref", "\n"; |
# print STDERR "attrname: $_ ATTRref: $ref", "\n"; |
359 |
if ($ref && $_) { |
# if ($ref && $_) { |
360 |
|
if ($ref) { |
361 |
hash2object_traverse_mixin($_, $data, 1, $options); |
hash2object_traverse_mixin($_, $data, 1, $options); |
362 |
} else { |
} else { |
363 |
$object->[$i] = $_; |
$object->[$i] = $_ if defined $_; |
364 |
} |
} |
365 |
pop @indexstack; |
pop @indexstack; |
366 |
$i++; |
$i++; |