Files

156 lines
3.0 KiB
C

#include <Python.h>
#include <sdb/sdb.h>
PyObject * nsdb_new0(PyObject * self, PyObject *args) {
void *fd = sdb_new0();
return PyLong_FromLong((size_t)fd);
}
PyObject * nsdb_now(PyObject * self, PyObject *args) {
return PyLong_FromLong(sdb_now());
}
PyObject * nsdb_unow(PyObject * self, PyObject *args) {
return PyLong_FromLong(sdb_unow());
}
PyObject * nsdb_sync(PyObject * self, PyObject *args) {
void *p = NULL;
if (!PyArg_ParseTuple(args, "l", &p)) {
return Py_None;
}
sdb_sync (p);
return Py_None;
}
PyObject * nsdb_add(PyObject * self, PyObject *args) {
const char * k = NULL;
const char * v = NULL;
void *p = NULL;
if (!PyArg_ParseTuple(args, "lss", &p, &k, &v)) {
return Py_None;
}
int res = sdb_add (p, k, v, 0);
return PyBool_FromLong (res);
}
PyObject * nsdb_set(PyObject * self, PyObject *args) {
const char * k = NULL;
const char * v = NULL;
void *p = NULL;
if (!PyArg_ParseTuple(args, "lss", &p, &k, &v)) {
return Py_None;
}
sdb_set (p, k, v, 0);
return Py_None;
}
PyObject * nsdb_get(PyObject * self, PyObject *args) {
const char * k = NULL;
void *p = NULL;
if (!PyArg_ParseTuple(args, "ls", &p, &k)) {
return Py_None;
}
char *a = sdb_get (p, k, 0);
if (!a) {
return Py_None;
}
PyObject * res = PyUnicode_FromFormat(a);
free (a);
return res;
}
PyObject * nsdb_query(PyObject * self, PyObject *args) {
void *db = NULL;
const char *q = NULL;
if (!PyArg_ParseTuple(args, "ls", &db, &q)) {
return NULL;
}
char *s = sdb_querys (db, NULL, 0, q);
PyObject * res = PyUnicode_FromFormat(s);
return res;
}
PyObject * nsdb_open(PyObject * self, PyObject *args) {
void *db = NULL;
const char * path = NULL;
if (!PyArg_ParseTuple(args, "ls", &db, &path)) {
return NULL;
}
int fd = sdb_open (db, path);
PyObject *res = PyLong_FromLong(fd);
return res;
}
PyObject * pysdb_free(PyObject * self, PyObject *args) {
void *db = NULL;
if (!PyArg_ParseTuple (args, "l", &db)) {
return NULL;
}
sdb_free (db);
return Py_None;
}
const char hellofunc_docs[] = "Hello world description.";
PyMethodDef sdb_funcs[] = {
{ "now",
(PyCFunction)nsdb_now,
METH_NOARGS,
hellofunc_docs},
{ "unow",
(PyCFunction)nsdb_unow,
METH_NOARGS,
hellofunc_docs},
{ "sync",
(PyCFunction)nsdb_sync,
METH_VARARGS,
hellofunc_docs},
{ "new0",
(PyCFunction)nsdb_new0,
METH_NOARGS,
hellofunc_docs},
{ "get",
(PyCFunction)nsdb_get,
METH_VARARGS,
hellofunc_docs},
{ "add",
(PyCFunction)nsdb_add,
METH_VARARGS,
hellofunc_docs},
{ "set",
(PyCFunction)nsdb_set,
METH_VARARGS,
hellofunc_docs},
{ "query",
(PyCFunction)nsdb_query,
METH_VARARGS,
hellofunc_docs},
{ "open",
(PyCFunction)nsdb_open,
METH_VARARGS,
hellofunc_docs},
{ "free",
(PyCFunction)free,
METH_VARARGS,
hellofunc_docs},
{ NULL}
};
static const char sdbmod_docs[] = "This is the native sdb module for Python";
PyModuleDef sdb_mod = {
PyModuleDef_HEAD_INIT,
"nsdb",
sdbmod_docs,
-1,
sdb_funcs,
NULL,
NULL,
NULL,
NULL
};
PyMODINIT_FUNC PyInit_nsdb(void) {
return PyModule_Create(&sdb_mod);
}