View on GitHub
ejpp
Embedded JSON Database engine for C++11/14
c_ejdb.hpp
1 /******************************************************************************
2  *
3  * C++11 wrapper for EJDB (http://ejdb.org)
4  * Copyright (C) 2013 Christian Manning
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19  * USA
20  *****************************************************************************/
21 
22 #ifndef EJDB_C_EJDB_HPP
23 #define EJDB_C_EJDB_HPP
24 
25 #include <tcejdb/tcutil.h>
26 #include <string>
27 #include <vector>
28 
29 extern "C" {
30 
31 struct EJDB;
32 typedef struct EJDB EJDB;
33 
34 struct EJCOLL;
35 typedef struct EJCOLL EJCOLL;
36 
37 struct EJQ;
38 typedef struct EJQ EJQ;
39 
40 typedef TCLIST* EJQRESULT;
41 
42 } // extern "C"
43 
48 namespace c_ejdb {
49 
51 const char* version();
52 
54 bool isvalidoidstr(const char* oid);
55 
57 const char* errmsg(int ecode);
58 
60 int ecode(EJDB* jb);
61 
63 EJDB* newdb(void);
64 
66 void del(EJDB* jb);
67 
69 bool closedb(EJDB* jb);
70 
72 bool open(EJDB* jb, const char* path, int mode);
73 
75 bool isopen(EJDB* jb);
76 
78 EJCOLL* getcoll(EJDB* jb, const char* colname);
79 
81 std::vector<EJCOLL*> getcolls(EJDB* jb);
82 
84 EJCOLL* createcoll(EJDB* jb, const char* colname, void* opts);
85 
87 bool rmcoll(EJDB* jb, const char* colname, bool unlinkfile);
88 
90 bool savebson(EJCOLL* jcoll, const std::vector<char>& bsdata, char oid[12], bool merge, int* err);
91 
93 bool rmbson(EJCOLL* coll, char oid[12]);
94 
96 std::vector<char> loadbson(EJCOLL* coll, const char oid[12]);
97 
99 EJQ* createquery(EJDB* jb, const void* qbsdata);
100 
102 EJQ* queryaddor(EJDB* jb, EJQ* q, const void* orbsdata);
103 
105 EJQ* queryhints(EJDB* jb, EJQ* q, const void* hintsbsdata);
106 
108 void querydel(EJQ* q);
109 
111 bool setindex(EJCOLL* coll, const char* ipath, int flags);
112 
114 EJQRESULT qryexecute(EJCOLL* jcoll, const EJQ* q, uint32_t* count, int qflags);
115 
117 int qresultnum(EJQRESULT qr);
118 
120 const void* qresultbsondata(EJQRESULT qr, int pos, int* size);
121 
123 void qresultdispose(EJQRESULT qr);
124 
125 // uint32_t update(EJCOLL *jcoll, bson *qobj, bson *orqobjs,
126 // int orqobjsnum, bson *hints, TCXSTR *log);
127 
129 bool syncoll(EJCOLL* jcoll);
130 
132 bool syncdb(EJDB* jb);
133 
135 bool tranbegin(EJCOLL* coll);
136 
138 bool trancommit(EJCOLL* coll);
139 
141 bool tranabort(EJCOLL* coll);
142 
144 bool transtatus(EJCOLL* jcoll, bool* txactive);
145 
147 std::vector<char> metadb(EJDB* jb);
148 
150 std::string collection_name(EJCOLL* coll);
151 
152 } // namespace c_ejdb
153 
154 #endif // EJDB_C_EJDB_HPP
std::vector< char > metadb(EJDB *jb)
Returns transformation of ejdbmeta(jb)
Definition: c_ejdb.cpp:121
bool open(EJDB *jb, const char *path, int mode)
Returns ejdbopen(jb, path, mode)
Definition: c_ejdb.cpp:45
EJQ * queryaddor(EJDB *jb, EJQ *q, const void *orbsdata)
Returns ejdbqueryaddor(jb, q, orbsdata)
Definition: c_ejdb.cpp:91
EJCOLL * getcoll(EJDB *jb, const char *colname)
Returns ejdbgetcoll(jb, colname)
Definition: c_ejdb.cpp:49
bool tranbegin(EJCOLL *coll)
Returns ejdbtranbegin(coll)
Definition: c_ejdb.cpp:113
bool savebson(EJCOLL *jcoll, const std::vector< char > &bsdata, char oid[12], bool merge, int *err)
Returns ejdbsavebson3(coll, bsdata, oid, merge)
Definition: c_ejdb.cpp:61
void qresultdispose(EJQRESULT qr)
Calls ejdbqresultdispose(qr)
Definition: c_ejdb.cpp:107
bool closedb(EJDB *jb)
Returns ejdbclose(jb)
Definition: c_ejdb.cpp:43
EJQ * queryhints(EJDB *jb, EJQ *q, const void *hintsbsdata)
Returns ejdbqueryhints(jb, q, hintsbsdata)
Definition: c_ejdb.cpp:93
bool isopen(EJDB *jb)
Returns ejdbisopen(jb)
Definition: c_ejdb.cpp:47
void del(EJDB *jb)
Calls ejdbdel(jb)
Definition: c_ejdb.cpp:41
int qresultnum(EJQRESULT qr)
Returns ejdbqresultnum(qr)
Definition: c_ejdb.cpp:103
const char * version()
Returns ejdbversion()
Definition: c_ejdb.cpp:31
bool syncdb(EJDB *jb)
Returns ejdbsyncdb(jb)
Definition: c_ejdb.cpp:111
void querydel(EJQ *q)
Calls ejdbquerydel(q)
Definition: c_ejdb.cpp:95
std::vector< EJCOLL * > getcolls(EJDB *jb)
Returns a transformation of ejdbgetcolls(jb)
Definition: c_ejdb.cpp:51
bool trancommit(EJCOLL *coll)
Returns ejdbtrancommit(coll)
Definition: c_ejdb.cpp:115
EJQRESULT qryexecute(EJCOLL *jcoll, const EJQ *q, uint32_t *count, int qflags)
Returns ejdbqryexecute(jcoll, q, count, qflags, nullptr)
Definition: c_ejdb.cpp:99
EJDB * newdb(void)
Returns ejdbnew()
Definition: c_ejdb.cpp:39
EJCOLL * createcoll(EJDB *jb, const char *colname, void *opts)
Returns ejdbcreatecoll(jb, colname, opts)
Definition: c_ejdb.cpp:55
bool setindex(EJCOLL *coll, const char *ipath, int flags)
Returns ejdbsetindex(coll, ipath, flags.
Definition: c_ejdb.cpp:97
EJQ * createquery(EJDB *jb, const void *qbsdata)
Returns ejdbcreatequery2(jb, qbsdata)
Definition: c_ejdb.cpp:89
const char * errmsg(int ecode)
Returns ejdberrmsg(ecode)
Definition: c_ejdb.cpp:35
bool isvalidoidstr(const char *oid)
Returns ejdbisvalidoidstr(oid)
Definition: c_ejdb.cpp:33
bool syncoll(EJCOLL *jcoll)
Returns ejdbsyncoll(jcoll)
Definition: c_ejdb.cpp:109
std::string collection_name(EJCOLL *coll)
Returns name of a collection.
Definition: c_ejdb.cpp:130
std::vector< char > loadbson(EJCOLL *coll, const char oid[12])
Returns transformation of ejdbloadbson(coll, oid)
Definition: c_ejdb.cpp:73
bool rmcoll(EJDB *jb, const char *colname, bool unlinkfile)
Returns ejdbrmcoll(jb, collname, unlinkfile)
Definition: c_ejdb.cpp:59
int ecode(EJDB *jb)
Returns ejdbecode(jb)
Definition: c_ejdb.cpp:37
bool rmbson(EJCOLL *coll, char oid[12])
Returns ejdbrmbson(coll, oid)
Definition: c_ejdb.cpp:71
const void * qresultbsondata(EJQRESULT qr, int pos, int *size)
Returns ejdbqresultbsondata(qr, pos, size)
Definition: c_ejdb.cpp:105
bool transtatus(EJCOLL *jcoll, bool *txactive)
Returns ejdbtranstatus(jcoll, txactive)
Definition: c_ejdb.cpp:119
bool tranabort(EJCOLL *coll)
Returns ejdbtranabort(coll)
Definition: c_ejdb.cpp:117