more OPEN consts as mode argument

we do not only want to create databases
This commit is contained in:
Reini Urban 2013-07-17 12:42:59 -05:00
parent e727b98d1d
commit 9d0c7708fb
2 changed files with 51 additions and 30 deletions

View file

@ -185,14 +185,14 @@ UnQLite - Perl bindings for UnQLite
use UnQLite; use UnQLite;
my $db = UnQLite->open('foo.db'); my $db = UnQLite->open('foo.db', UNQLITE_OPEN_READWRITE|UNQLITE_OPEN_CREATE);
$db->kv_store('foo', 'bar'); $db->kv_store('foo', 'bar');
say $db->kv_fetch('foo'); # => bar say $db->kv_fetch('foo'); # => bar
$db->kv_delete('foo'); $db->kv_delete('foo');
undef $db; # close database undef $db; # close database
# tie interface # tie interface
tie my %hash, 'UnQLite', 'foo.db'; tie my %hash, 'UnQLite', 'foo.db', UNQLITE_OPEN_READWRITE;
$hash{foo} = 'bar'; $hash{foo} = 'bar';
say $hash{foo}; # => bar say $hash{foo}; # => bar
@ -216,6 +216,17 @@ B<You can use UnQLite.pm as DBM>.
Open the database. Open the database.
Modes:
UNQLITE_OPEN_CREATE (Default)
UNQLITE_OPEN_READONLY
UNQLITE_OPEN_READWRITE
UNQLITE_OPEN_EXCLUSIVE
UNQLITE_OPEN_TEMP_DB
UNQLITE_OPEN_OMIT_JOURNALING
UNQLITE_OPEN_IN_MEMORY
UNQLITE_OPEN_MMAP
=item C<< $db->kv_store($key, $value); >> =item C<< $db->kv_store($key, $value); >>
Store the entry to database. Store the entry to database.

View file

@ -42,34 +42,44 @@ PROTOTYPES: DISABLE
BOOT: BOOT:
HV* stash = gv_stashpvn("UnQLite", strlen("UnQLite"), TRUE); HV* stash = gv_stashpvn("UnQLite", strlen("UnQLite"), TRUE);
newCONSTSUB(stash, "UNQLITE_OK", newSViv(UNQLITE_OK)); #define _XSTR(s) _STR(s)
newCONSTSUB(stash, "UNQLITE_NOMEM", newSViv(UNQLITE_NOMEM)); #define _STR(s) #s
newCONSTSUB(stash, "UNQLITE_ABORT", newSViv(UNQLITE_ABORT)); #define UnConst(c) newCONSTSUB(stash, "UNQ"_XSTR(c), newSViv(UNQ##c))
newCONSTSUB(stash, "UNQLITE_IOERR", newSViv(UNQLITE_IOERR)); UnConst(LITE_OK);
newCONSTSUB(stash, "UNQLITE_CORRUPT", newSViv(UNQLITE_CORRUPT)); UnConst(LITE_NOMEM);
newCONSTSUB(stash, "UNQLITE_LOCKED", newSViv(UNQLITE_LOCKED)); UnConst(LITE_ABORT);
newCONSTSUB(stash, "UNQLITE_BUSY", newSViv(UNQLITE_BUSY)); UnConst(LITE_IOERR);
newCONSTSUB(stash, "UNQLITE_DONE", newSViv(UNQLITE_DONE)); UnConst(LITE_CORRUPT);
newCONSTSUB(stash, "UNQLITE_PERM", newSViv(UNQLITE_PERM)); UnConst(LITE_LOCKED);
newCONSTSUB(stash, "UNQLITE_NOTIMPLEMENTED", newSViv(UNQLITE_NOTIMPLEMENTED)); UnConst(LITE_BUSY);
newCONSTSUB(stash, "UNQLITE_NOTFOUND", newSViv(UNQLITE_NOTFOUND)); UnConst(LITE_DONE);
newCONSTSUB(stash, "UNQLITE_NOOP", newSViv(UNQLITE_NOOP)); UnConst(LITE_PERM);
newCONSTSUB(stash, "UNQLITE_INVALID", newSViv(UNQLITE_INVALID)); UnConst(LITE_NOTIMPLEMENTED);
newCONSTSUB(stash, "UNQLITE_EOF", newSViv(UNQLITE_EOF)); UnConst(LITE_NOTFOUND);
newCONSTSUB(stash, "UNQLITE_UNKNOWN", newSViv(UNQLITE_UNKNOWN)); UnConst(LITE_NOOP);
newCONSTSUB(stash, "UNQLITE_LIMIT", newSViv(UNQLITE_LIMIT)); UnConst(LITE_INVALID);
newCONSTSUB(stash, "UNQLITE_EXISTS", newSViv(UNQLITE_EXISTS)); UnConst(LITE_EOF);
newCONSTSUB(stash, "UNQLITE_EMPTY", newSViv(UNQLITE_EMPTY)); UnConst(LITE_UNKNOWN);
newCONSTSUB(stash, "UNQLITE_COMPILE_ERR", newSViv(UNQLITE_COMPILE_ERR)); UnConst(LITE_LIMIT);
newCONSTSUB(stash, "UNQLITE_VM_ERR", newSViv(UNQLITE_VM_ERR)); UnConst(LITE_EXISTS);
newCONSTSUB(stash, "UNQLITE_FULL", newSViv(UNQLITE_FULL)); UnConst(LITE_EMPTY);
newCONSTSUB(stash, "UNQLITE_CANTOPEN", newSViv(UNQLITE_CANTOPEN)); UnConst(LITE_COMPILE_ERR);
newCONSTSUB(stash, "UNQLITE_READ_ONLY", newSViv(UNQLITE_READ_ONLY)); UnConst(LITE_VM_ERR);
newCONSTSUB(stash, "UNQLITE_LOCKERR", newSViv(UNQLITE_LOCKERR)); UnConst(LITE_FULL);
UnConst(LITE_CANTOPEN);
newCONSTSUB(stash, "UNQLITE_CURSOR_MATCH_EXACT", newSViv(UNQLITE_CURSOR_MATCH_EXACT)); UnConst(LITE_READ_ONLY);
newCONSTSUB(stash, "UNQLITE_CURSOR_MATCH_LE", newSViv(UNQLITE_CURSOR_MATCH_LE)); UnConst(LITE_LOCKERR);
newCONSTSUB(stash, "UNQLITE_CURSOR_MATCH_GE", newSViv(UNQLITE_CURSOR_MATCH_GE)); UnConst(LITE_OPEN_READONLY);
UnConst(LITE_OPEN_READWRITE);
UnConst(LITE_OPEN_CREATE);
UnConst(LITE_OPEN_EXCLUSIVE);
UnConst(LITE_OPEN_TEMP_DB);
UnConst(LITE_OPEN_OMIT_JOURNALING);
UnConst(LITE_OPEN_IN_MEMORY);
UnConst(LITE_OPEN_MMAP);
UnConst(LITE_CURSOR_MATCH_EXACT);
UnConst(LITE_CURSOR_MATCH_LE);
UnConst(LITE_CURSOR_MATCH_GE);
SV* SV*
open(klass, filename, mode=UNQLITE_OPEN_CREATE) open(klass, filename, mode=UNQLITE_OPEN_CREATE)