/*#io
docCopyright("Steve Dekorte", 2004)
docLicense("BSD revised")
docObject("UDB")
docDescription("An unordered value database. (sort of like malloc for disk space)
It compacts the data like a single space copying garbage collector.")
*/
#ifndef UDB_DEFINED
#define UDB_DEFINED 1
#include "List.h"
#include "ByteArray.h"
#include "UDBRecord.h"
#include "UDBIndex.h"
#include "UDBRecords.h"
#include "SkipDB.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
char *path;
UDBIndex *index;
UDBRecords *records;
int withinTransaction;
int isOpen;
} UDB;
SKIPDB_API UDB *UDB_new(void);
SKIPDB_API void UDB_free(UDB *self);
SKIPDB_API void UDB_setPath_(UDB *self, const char *s);
SKIPDB_API void UDB_setLogPath_(UDB *self, const char *s);
SKIPDB_API char *UDB_path(UDB *self);
SKIPDB_API void UDB_delete(UDB *self);
SKIPDB_API void UDB_open(UDB *self);
SKIPDB_API int UDB_isOpen(UDB *self);
SKIPDB_API void UDB_close(UDB *self);
// transactions ---------------------------------------------------
SKIPDB_API void UDB_beginTransaction(UDB *self);
SKIPDB_API void UDB_commitTransaction(UDB *self);
// ops --------------------------------------------------
SKIPDB_API PID_TYPE UDB_nextPid(UDB *self);
SKIPDB_API PID_TYPE UDB_allocPid(UDB *self);
SKIPDB_API PID_TYPE UDB_put_(UDB *self, Datum d);
SKIPDB_API void UDB_at_put_(UDB *self, PID_TYPE pid, Datum d);
SKIPDB_API Datum UDB_at_(UDB *self, PID_TYPE pid);
SKIPDB_API void UDB_removeAt_(UDB *self, PID_TYPE id);
SKIPDB_API int UDB_compact(UDB *self);
SKIPDB_API int UDB_compactStep(UDB *self);
SKIPDB_API int UDB_compactStepFor_(UDB *self, double maxSeconds);
SKIPDB_API void UDB_show(UDB *self);
SKIPDB_API void UDB_showIndex(UDB *self);
#ifdef __cplusplus
}
#endif
#endif
syntax highlighted by Code2HTML, v. 0.9.1