#ifndef WGDB_DB_H #define WGDB_DB_H #include #include #include #include #include "utils.h" using namespace node; using namespace v8; class WgDB : ObjectWrap{ public: void* db_ptr; char* db_name; int size; static void Init(Handle target); static Handle New(const Arguments& args); static Handle Attach(const Arguments& args); static Handle Detach(const Arguments& args); static Handle Delete(const Arguments& args); static Handle CreateRecord(const Arguments& args); static Handle FirstRecord(const Arguments& args); static Handle Dump(const Arguments& args); static Handle Import(const Arguments& args); static Handle Query(const Arguments& args); static Handle FindRecord(const Arguments& args); static Handle CreateIndex(const Arguments& args); static Handle DropIndex(const Arguments& args); }; class Record : ObjectWrap{ public: WgDB* wgdb; void* rec_ptr; static Persistent constructor; static void Init(); static Handle New(const Arguments& args); static Handle Next(const Arguments& args); static Handle SetField(const Arguments& args); static Handle GetField(const Arguments& args); static Handle Length(const Arguments& args); static Handle Fields(const Arguments& args); static Handle Delete(const Arguments& args); static void do_after_create_record(uv_work_t* req, int status); }; class Cursor : ObjectWrap{ public: WgDB* wgdb; wg_query* query; wg_query_arg* arglist; int arglen; ~Cursor(); static Persistent constructor; static void Init(); static Handle New(const Arguments& args); static Handle Next(const Arguments& args); static void do_after_create_cursor(uv_work_t* req, int status); }; struct Baton { bool has_cb; Persistent callback; WgDB* wgdb; const char* error; void* data; }; struct FieldData { int field; wg_int enc; Record* record; }; struct Fields { int length; wg_int* encs; }; struct RecordData { int length; void* record; }; struct FindData { int field; wg_int enc; wg_int cond; void* rec; void* data; }; struct CursorData { int arglen; wg_query_arg* arglist; wg_query* query; }; struct IndexData { int reclen; wg_int* matchrec; int field; }; #endif