1 package Onis::Data::Persistent::None;
7 use Carp qw(carp confess);
12 Onis::Data::Persistent::None - Storage backend without storage.. ;)
16 Simple storage backend that handles data in-memory only..
18 =head1 CONFIGURATION OPTIONS
24 @Onis::Data::Persistent::None::EXPORT_OK = (qw($TREE));
25 @Onis::Data::Persistent::None::ISA = ('Exporter');
27 if ($::DEBUG & 0x0200)
40 my $caller = caller ();
44 my $id = $caller . ':' . $name;
46 if (exists ($TREE->{$id}))
48 print STDERR $/, __FILE__, ": Name $name has been used in context $caller before.";
53 $obj->{'data'} = $TREE->{$id};
56 $obj->{'fields'} = [@fields];
57 $obj->{'num_fields'} = scalar (@fields);
58 $obj->{'field_index'} = {map { $_ => $i++ } (@fields)};
61 if ($::DEBUG & 0x0200)
63 my $prefix = __FILE__ . ': ';
64 my $dbg = Data::Dumper->Dump ([$obj], ['obj']);
65 $dbg =~ s/^/$prefix/mg; chomp ($dbg);
66 print STDOUT $/, $dbg;
69 return (bless ($obj, $pkg));
78 if ($obj->{'num_fields'} != scalar (@fields))
80 my $id = $obj->{'id'};
81 carp ("Number of fields do not match ($id).");
85 if ($::DEBUG & 0x0200)
87 print STDOUT $/, __FILE__, ': PUT(', $obj->{'id'}, ', ', $key, ') = (' . join (', ', @fields) . ')';
90 $obj->{'data'}{$key} = [@fields];
98 if (!defined ($obj->{'data'}{$key}))
103 if ($::DEBUG & 0x0200)
105 print STDOUT $/, __FILE__, ': GET(', $obj->{'id'}, ', ', $key, ') = (' . join (', ', @{$obj->{'data'}{$key}}) . ')';
108 return (@{$obj->{'data'}{$key}});
115 my @field_indizes = ();
116 my @keys = keys %{$obj->{'data'}};
126 if (!defined ($obj->{'field_index'}{$field}))
128 my $id = $obj->{'id'};
129 print STDERR $/, __FILE__, ": $field is not a valid field ($id).";
131 push (@field_indizes, $obj->{'field_index'}{$field});
138 my $d = $obj->{'data'}{$a}[$_] cmp $obj->{'data'}{$b}[$_];
149 if (defined ($obj->{'data'}{$key}))
151 delete ($obj->{'data'}{$key});
157 Florian octo Forster, L<octo@verplant.org>