diff options
Diffstat (limited to 'navit/binding/python/binding_python.c')
-rw-r--r-- | navit/binding/python/binding_python.c | 355 |
1 files changed, 169 insertions, 186 deletions
diff --git a/navit/binding/python/binding_python.c b/navit/binding/python/binding_python.c index 51d84fe10..df90371cf 100644 --- a/navit/binding/python/binding_python.c +++ b/navit/binding/python/binding_python.c @@ -42,37 +42,37 @@ /* *** coord *** */ typedef struct { - PyObject_HEAD - struct coord *c; + PyObject_HEAD + struct coord *c; } coordObject; static void coord_destroy_py(coordObject *self); PyTypeObject coord_Type = { - Obj_HEAD - .tp_name="coord", - .tp_basicsize=sizeof(coordObject), - .tp_dealloc=(destructor)coord_destroy_py, + Obj_HEAD + .tp_name="coord", + .tp_basicsize=sizeof(coordObject), + .tp_dealloc=(destructor)coord_destroy_py, }; /* *** map *** */ typedef struct { - PyObject_HEAD - int ref; - struct map *m; + PyObject_HEAD + int ref; + struct map *m; } mapObject; static void map_destroy_py(mapObject *self); static PyObject *map_getattr_py(PyObject *self, char *name); PyTypeObject map_Type = { - Obj_HEAD - .tp_name="map", - .tp_basicsize=sizeof(mapObject), - .tp_dealloc=(destructor)map_destroy_py, - .tp_getattr=map_getattr_py, + Obj_HEAD + .tp_name="map", + .tp_basicsize=sizeof(mapObject), + .tp_dealloc=(destructor)map_destroy_py, + .tp_getattr=map_getattr_py, }; /* *** IMPLEMENTATIONS *** */ @@ -80,28 +80,26 @@ PyTypeObject map_Type = { /* *** coord *** */ static PyObject * -coord_new_py(PyObject *self, PyObject *args) -{ - coordObject *ret; - int x,y; - if (!PyArg_ParseTuple(args, "ii:navit.coord",&x,&y)) - return NULL; - ret=PyObject_NEW(coordObject, &coord_Type); - ret->c=coord_new(x,y); - return (PyObject *)ret; +coord_new_py(PyObject *self, PyObject *args) { + coordObject *ret; + int x,y; + if (!PyArg_ParseTuple(args, "ii:navit.coord",&x,&y)) + return NULL; + ret=PyObject_NEW(coordObject, &coord_Type); + ret->c=coord_new(x,y); + return (PyObject *)ret; } static void -coord_destroy_py(coordObject *self) -{ - coord_destroy(self->c); +coord_destroy_py(coordObject *self) { + coord_destroy(self->c); } /* *** coord_rect *** */ typedef struct { - PyObject_HEAD - struct coord_rect *r; + PyObject_HEAD + struct coord_rect *r; } coord_rectObject; @@ -109,38 +107,36 @@ static void coord_rect_destroy_py(coord_rectObject *self); PyTypeObject coord_rect_Type = { #if defined(MS_WINDOWS) || defined(__CYGWIN__) - PyObject_HEAD_INIT(NULL); + PyObject_HEAD_INIT(NULL); #else - PyObject_HEAD_INIT(&PyType_Type) + PyObject_HEAD_INIT(&PyType_Type) #endif - .tp_name="coord_rect", - .tp_basicsize=sizeof(coord_rectObject), - .tp_dealloc=(destructor)coord_rect_destroy_py, + .tp_name="coord_rect", + .tp_basicsize=sizeof(coord_rectObject), + .tp_dealloc=(destructor)coord_rect_destroy_py, }; static PyObject * -coord_rect_new_py(PyObject *self, PyObject *args) -{ - coord_rectObject *ret; - coordObject *lu,*rd; - if (!PyArg_ParseTuple(args, "O!O!:navit.coord_rect_rect",&coord_Type,&lu,&coord_Type,&rd)) - return NULL; - ret=PyObject_NEW(coord_rectObject, &coord_rect_Type); - ret->r=coord_rect_new(lu->c,rd->c); - return (PyObject *)ret; +coord_rect_new_py(PyObject *self, PyObject *args) { + coord_rectObject *ret; + coordObject *lu,*rd; + if (!PyArg_ParseTuple(args, "O!O!:navit.coord_rect_rect",&coord_Type,&lu,&coord_Type,&rd)) + return NULL; + ret=PyObject_NEW(coord_rectObject, &coord_rect_Type); + ret->r=coord_rect_new(lu->c,rd->c); + return (PyObject *)ret; } static void -coord_rect_destroy_py(coord_rectObject *self) -{ - coord_rect_destroy(self->r); +coord_rect_destroy_py(coord_rectObject *self) { + coord_rect_destroy(self->r); } /* *** map_rect *** */ typedef struct { - PyObject_HEAD - struct map_rect *mr; + PyObject_HEAD + struct map_rect *mr; } map_rectObject; @@ -148,110 +144,102 @@ static void map_rect_destroy_py(map_rectObject *self); PyTypeObject map_rect_Type = { #if defined(MS_WINDOWS) || defined(__CYGWIN__) - PyObject_HEAD_INIT(NULL); + PyObject_HEAD_INIT(NULL); #else - PyObject_HEAD_INIT(&PyType_Type) + PyObject_HEAD_INIT(&PyType_Type) #endif - .tp_name="map_rect", - .tp_basicsize=sizeof(map_rectObject), - .tp_dealloc=(destructor)map_rect_destroy_py, + .tp_name="map_rect", + .tp_basicsize=sizeof(map_rectObject), + .tp_dealloc=(destructor)map_rect_destroy_py, }; static PyObject * -map_rect_new_py(mapObject *self, PyObject *args) -{ - map_rectObject *ret; - coord_rectObject *r; - if (!PyArg_ParseTuple(args, "O!:navit.map_rect_rect",&coord_rect_Type,&r)) - return NULL; - ret=PyObject_NEW(map_rectObject, &map_rect_Type); - ret->mr=map_rect_new(self->m, NULL); - return (PyObject *)ret; +map_rect_new_py(mapObject *self, PyObject *args) { + map_rectObject *ret; + coord_rectObject *r; + if (!PyArg_ParseTuple(args, "O!:navit.map_rect_rect",&coord_rect_Type,&r)) + return NULL; + ret=PyObject_NEW(map_rectObject, &map_rect_Type); + ret->mr=map_rect_new(self->m, NULL); + return (PyObject *)ret; } static void -map_rect_destroy_py(map_rectObject *self) -{ - map_rect_destroy(self->mr); +map_rect_destroy_py(map_rectObject *self) { + map_rect_destroy(self->mr); } /* *** map *** */ static PyObject * -map_dump_file_py(mapObject *self, PyObject *args) -{ - const char *s; - if (!PyArg_ParseTuple(args, "s",&s)) - return NULL; - map_dump_file(self->m, s); - Py_RETURN_NONE; +map_dump_file_py(mapObject *self, PyObject *args) { + const char *s; + if (!PyArg_ParseTuple(args, "s",&s)) + return NULL; + map_dump_file(self->m, s); + Py_RETURN_NONE; } static PyObject * -map_set_attr_py(mapObject *self, PyObject *args) -{ - PyObject *attr; - if (!PyArg_ParseTuple(args, "O!", &attr_Type, &attr)) - return NULL; - map_set_attr(self->m, attr_py_get(attr)); - Py_RETURN_NONE; +map_set_attr_py(mapObject *self, PyObject *args) { + PyObject *attr; + if (!PyArg_ParseTuple(args, "O!", &attr_Type, &attr)) + return NULL; + map_set_attr(self->m, attr_py_get(attr)); + Py_RETURN_NONE; } static PyMethodDef map_methods[] = { - {"dump_file", (PyCFunction) map_dump_file_py, METH_VARARGS }, - {"map_rect_new", (PyCFunction) map_rect_new_py, METH_VARARGS }, - {"set_attr", (PyCFunction) map_set_attr_py, METH_VARARGS }, - {NULL, NULL }, + {"dump_file", (PyCFunction) map_dump_file_py, METH_VARARGS }, + {"map_rect_new", (PyCFunction) map_rect_new_py, METH_VARARGS }, + {"set_attr", (PyCFunction) map_set_attr_py, METH_VARARGS }, + {NULL, NULL }, }; static PyObject * -map_getattr_py(PyObject *self, char *name) -{ - return Py_FindMethod(map_methods, self, name); +map_getattr_py(PyObject *self, char *name) { + return Py_FindMethod(map_methods, self, name); } static PyObject * -map_new_py(PyObject *self, PyObject *args) -{ - mapObject *ret; - char *type, *filename; - - if (!PyArg_ParseTuple(args, "ss:navit.map", &type, &filename)) - return NULL; - ret=PyObject_NEW(mapObject, &map_Type); - ret->m=map_new(NULL,NULL); - ret->ref=0; - return (PyObject *)ret; +map_new_py(PyObject *self, PyObject *args) { + mapObject *ret; + char *type, *filename; + + if (!PyArg_ParseTuple(args, "ss:navit.map", &type, &filename)) + return NULL; + ret=PyObject_NEW(mapObject, &map_Type); + ret->m=map_new(NULL,NULL); + ret->ref=0; + return (PyObject *)ret; } PyObject * -map_py_ref(struct map *map) -{ - mapObject *ret; - ret=PyObject_NEW(mapObject, &map_Type); - ret->m=map; - ret->ref=1; - return (PyObject *)ret; +map_py_ref(struct map *map) { + mapObject *ret; + ret=PyObject_NEW(mapObject, &map_Type); + ret->m=map; + ret->ref=1; + return (PyObject *)ret; } static void -map_destroy_py(mapObject *self) -{ - if (!self->ref) - map_destroy(self->m); +map_destroy_py(mapObject *self) { + if (!self->ref) + map_destroy(self->m); } /* *** mapset *** */ typedef struct { - PyObject_HEAD - struct mapset *ms; + PyObject_HEAD + struct mapset *ms; } mapsetObject; @@ -260,111 +248,106 @@ static PyObject *mapset_getattr_py(PyObject *self, char *name); PyTypeObject mapset_Type = { #if defined(MS_WINDOWS) || defined(__CYGWIN__) - PyObject_HEAD_INIT(NULL); + PyObject_HEAD_INIT(NULL); #else - PyObject_HEAD_INIT(&PyType_Type) + PyObject_HEAD_INIT(&PyType_Type) #endif - .tp_name="mapset", - .tp_basicsize=sizeof(mapsetObject), - .tp_dealloc=(destructor)mapset_destroy_py, - .tp_getattr=mapset_getattr_py, + .tp_name="mapset", + .tp_basicsize=sizeof(mapsetObject), + .tp_dealloc=(destructor)mapset_destroy_py, + .tp_getattr=mapset_getattr_py, }; static PyObject * -mapset_add_py(mapsetObject *self, PyObject *args) -{ - mapObject *map; - if (!PyArg_ParseTuple(args, "O:navit.mapset", &map)) - return NULL; - Py_INCREF(map); - mapset_add_attr(self->ms, &(struct attr){attr_map,.u.map=map->m}); - return Py_BuildValue(""); +mapset_add_py(mapsetObject *self, PyObject *args) { + mapObject *map; + if (!PyArg_ParseTuple(args, "O:navit.mapset", &map)) + return NULL; + Py_INCREF(map); + mapset_add_attr(self->ms, &(struct attr) { + attr_map,.u.map=map->m + }); + return Py_BuildValue(""); } static PyMethodDef mapset_methods[] = { - {"add", (PyCFunction) mapset_add_py, METH_VARARGS }, - {NULL, NULL }, + {"add", (PyCFunction) mapset_add_py, METH_VARARGS }, + {NULL, NULL }, }; static PyObject * -mapset_getattr_py(PyObject *self, char *name) -{ - return Py_FindMethod(mapset_methods, self, name); +mapset_getattr_py(PyObject *self, char *name) { + return Py_FindMethod(mapset_methods, self, name); } static PyObject * -mapset_new_py(PyObject *self, PyObject *args) -{ - mapsetObject *ret; - if (!PyArg_ParseTuple(args, ":navit.mapset")) - return NULL; - ret=PyObject_NEW(mapsetObject, &mapset_Type); - ret->ms=mapset_new(NULL,NULL); - return (PyObject *)ret; +mapset_new_py(PyObject *self, PyObject *args) { + mapsetObject *ret; + if (!PyArg_ParseTuple(args, ":navit.mapset")) + return NULL; + ret=PyObject_NEW(mapsetObject, &mapset_Type); + ret->ms=mapset_new(NULL,NULL); + return (PyObject *)ret; } static void -mapset_destroy_py(mapsetObject *self) -{ - mapset_destroy(self->ms); +mapset_destroy_py(mapsetObject *self) { + mapset_destroy(self->ms); } static PyObject * -config_load_py(PyObject *self, PyObject *args) -{ - const char *file; - int ret; - xmlerror *error; - if (!PyArg_ParseTuple(args, "s", &file)) - return NULL; - ret=config_load(file, &error); - return Py_BuildValue("i",ret); +config_load_py(PyObject *self, PyObject *args) { + const char *file; + int ret; + xmlerror *error; + if (!PyArg_ParseTuple(args, "s", &file)) + return NULL; + ret=config_load(file, &error); + return Py_BuildValue("i",ret); } -static PyMethodDef navitMethods[]={ - {"attr", attr_new_py, METH_VARARGS}, - {"coord", coord_new_py, METH_VARARGS, "Create a new coordinate point."}, - {"coord_rect", coord_rect_new_py, METH_VARARGS, "Create a new coordinate rectangle."}, - {"map", map_new_py, METH_VARARGS, "Create a new map."}, - {"mapset", mapset_new_py, METH_VARARGS, "Create a new mapset."}, - {"config_load", config_load_py, METH_VARARGS, "Load a config"}, - {"config", config_py, METH_VARARGS, "Get Config Object"}, - {"pcoord", pcoord_py, METH_VARARGS}, - {NULL, NULL, 0, NULL} +static PyMethodDef navitMethods[]= { + {"attr", attr_new_py, METH_VARARGS}, + {"coord", coord_new_py, METH_VARARGS, "Create a new coordinate point."}, + {"coord_rect", coord_rect_new_py, METH_VARARGS, "Create a new coordinate rectangle."}, + {"map", map_new_py, METH_VARARGS, "Create a new map."}, + {"mapset", mapset_new_py, METH_VARARGS, "Create a new mapset."}, + {"config_load", config_load_py, METH_VARARGS, "Load a config"}, + {"config", config_py, METH_VARARGS, "Get Config Object"}, + {"pcoord", pcoord_py, METH_VARARGS}, + {NULL, NULL, 0, NULL} }; PyObject * -python_object_from_attr(struct attr *attr) -{ - switch (attr->type) { - case attr_navigation: - return navigation_py_ref(attr->u.navigation); - case attr_route: - return route_py_ref(attr->u.route); - default: - return NULL; - } - return NULL; +python_object_from_attr(struct attr *attr) { + switch (attr->type) { + case attr_navigation: + return navigation_py_ref(attr->u.navigation); + case attr_route: + return route_py_ref(attr->u.route); + default: + return NULL; + } + return NULL; } void -plugin_init(void) -{ - int fd,size; - char buffer[65536]; - - Py_Initialize(); - Py_InitModule("navit", navitMethods); - fd=open("startup.py",O_RDONLY); - if (fd >= 0) { - size=read(fd, buffer, 65535); - if (size > 0) { - buffer[size]='\0'; - PyRun_SimpleString(buffer); - } - } - - Py_Finalize(); +plugin_init(void) { + int fd,size; + char buffer[65536]; + + Py_Initialize(); + Py_InitModule("navit", navitMethods); + fd=open("startup.py",O_RDONLY); + if (fd >= 0) { + size=read(fd, buffer, 65535); + if (size > 0) { + buffer[size]='\0'; + PyRun_SimpleString(buffer); + } + } + + Py_Finalize(); } |