X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=lib%2Fperl%2FBlerg-Database%2Flib%2FBlerg%2FDatabase.pm;h=3da5ad3f898e6001d20b63185725a06b5dcdc9c8;hb=2016f2b13cfb48bea6d6d0498fe2a4492b491bf2;hp=74481d2517218dec3ce1499d5572d7120c75bd4a;hpb=3d76b7537d7b50ca8ccf83d4ed8e2dc93a871ddb;p=blerg.git diff --git a/lib/perl/Blerg-Database/lib/Blerg/Database.pm b/lib/perl/Blerg-Database/lib/Blerg/Database.pm index 74481d2..3da5ad3 100644 --- a/lib/perl/Blerg-Database/lib/Blerg/Database.pm +++ b/lib/perl/Blerg-Database/lib/Blerg/Database.pm @@ -57,6 +57,55 @@ XSLoader::load('Blerg::Database', $VERSION); # Preloaded methods go here. +sub open { + my ($class, $name) = @_; + my $ptr = Blerg::Database::_open($name); + my $obj = { + ptr => $ptr + }; + return bless $obj, $class; +} + +sub open_existing { + my ($class, $name) = @_; + + if (Blerg::Database::exists($name)) { + return Blerg::Database::open($name); + } + return undef; +} + +sub _ensure_pointer { + my ($obj) = @_; + if (!defined $obj->{ptr}) { + croak "Attempted to use closed Blerg::Database"; + } +} + +sub close { + my ($obj) = @_; + $obj->_ensure_pointer; + Blerg::Database::_close($obj->{ptr}); + delete $obj->{ptr}; +} + +DESTROY { + my ($obj) = @_; + $obj->close; +} + +sub store { + my ($obj, $data) = @_; + $obj->_ensure_pointer; + return Blerg::Database::_store($obj->{ptr}, $data); +} + +sub fetch { + my ($obj, $record) = @_; + $obj->_ensure_pointer; + return Blerg::Database::_fetch($obj->{ptr}, $record); +} + # Autoload methods go after =cut, and are processed by the autosplit program. 1; @@ -118,7 +167,7 @@ If you have a web site set up for your module, mention it here. =head1 AUTHOR -Chip Black, Echip@slackware.lanE +Chip Black, Ebytex64@bytex64.netE =head1 COPYRIGHT AND LICENSE