1 /* -*- Mode: C; c-basic-offset: 4 -*- */
6 #define NO_IMPORT_PYGOBJECT
8 #include <gsf/gsf-input.h>
9 #include <gsf/gsf-input-stdio.h>
10 #include <gsf/gsf-input-memory.h>
11 #include <gsf/gsf-input-textline.h>
12 #include <gsf/gsf-input-gzip.h>
13 #include <gsf/gsf-infile.h>
14 #include <gsf/gsf-infile-msole.h>
15 #include <gsf/gsf-infile-msvba.h>
16 #include <gsf/gsf-infile-zip.h>
17 #include <gsf/gsf-libxml.h>
18 #include <gsf/gsf-output.h>
19 #include <gsf/gsf-outfile.h>
20 #include <gsf/gsf-outfile-msole.h>
21 #include <gsf/gsf-outfile-zip.h>
22 #include <gsf/gsf-output-stdio.h>
23 #include <gsf/gsf-output-memory.h>
25 #define GSF_TYPE_INPUT GSF_INPUT_TYPE
26 #define GSF_TYPE_INPUT_STDIO GSF_INPUT_STDIO_TYPE
27 #define GSF_TYPE_INPUT_MEMORY GSF_INPUT_MEMORY_TYPE
28 #define GSF_TYPE_INPUT_TEXTLINE GSF_INPUT_TEXTLINE_TYPE
29 #define GSF_TYPE_INPUT_GZIP GSF_INPUT_GZIP_TYPE
31 #define GSF_TYPE_INFILE GSF_INFILE_TYPE
32 #define GSF_TYPE_INFILE_ZIP GSF_INFILE_ZIP_TYPE
33 #define GSF_TYPE_INFILE_MSVBA GSF_INFILE_MSVBA_TYPE
34 #define GSF_TYPE_INFILE_MS_OLE GSF_INFILE_MSOLE_TYPE
36 #define GSF_TYPE_META_DATA_BAG GSF_METADATA_BAG_TYPE
37 #define GSF_TYPE_OUTPUT GSF_OUTPUT_TYPE
38 #define GSF_TYPE_OUTFILE GSF_OUTFILE_TYPE
39 #define GSF_TYPE_OUTFILE_MS_OLE GSF_OUTFILE_MSOLE_TYPE
40 #define GSF_TYPE_OUTFILE_ZIP GSF_OUTFILE_ZIP_TYPE
41 #define GSF_TYPE_OUTPUT_MEMORY GSF_OUTPUT_MEMORY_TYPE
42 #define GSF_TYPE_OUTPUT_STDIO GSF_OUTPUT_STDIO_TYPE
46 import gobject.GObject as PyGObject_Type
54 gsf_infile_child_by_vname
56 override gsf_input_size noargs
58 _wrap_gsf_input_size(PyGObject *self)
61 gsf_off_t size = gsf_input_size(GSF_INPUT(self->obj));
64 if (ret != size) { /* Check for overflow */
65 PyErr_SetString(PyExc_OverflowError, "Size is too large");
67 return PyInt_FromLong(ret);
70 override gsf_input_read kwargs
72 _wrap_gsf_input_read(PyGObject *self, PyObject *args, PyObject *kwargs)
74 static char *kwlist[] = { (char *) "num_bytes",
75 (char *) "optional_buffer", NULL };
77 guint8 *optional_buffer = NULL;
80 if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "i|z:GsfInput.read",
81 kwlist, &num_bytes, &optional_buffer))
83 ret = gsf_input_read(GSF_INPUT(self->obj), num_bytes, optional_buffer);
85 return PyString_FromStringAndSize(ret, (int) num_bytes);
90 override gsf_input_seek kwargs
92 _wrap_gsf_input_seek(PyGObject *self, PyObject *args, PyObject *kwargs)
94 static char *kwlist[] = { (char *) "offset", (char *) "whence", NULL };
100 if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "li:GsfInput.seek",
101 kwlist, &loffset, &whence))
104 ret = gsf_input_seek(GSF_INPUT(self->obj), offset, whence);
105 return PyInt_FromLong(ret);
108 override gsf_input_remaining noargs
110 _wrap_gsf_input_remaining(PyGObject *self)
113 gsf_off_t remain = gsf_input_remaining(GSF_INPUT(self->obj));
116 if (ret != remain) { /* Check for overflow */
117 PyErr_SetString(PyExc_OverflowError, "Size is too large");
119 return PyInt_FromLong(ret);
122 override gsf_input_tell noargs
124 _wrap_gsf_input_tell(PyGObject *self)
127 gsf_off_t pos = gsf_input_tell(GSF_INPUT(self->obj));
129 if (ret != pos) { /* Check for overflow */
130 PyErr_SetString(PyExc_OverflowError, "Position is too large");
132 return PyInt_FromLong(ret);
135 override gsf_input_memory_new kwargs
137 _wrap_gsf_input_memory_new(PyGObject *self, PyObject *args, PyObject *kwargs)
139 static char *kwlist[] = {
140 (char *) "buf", (char *) "needs_free", NULL };
145 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
146 (char *) "s#i:GsfInputMemory.__init__",
147 kwlist, &buf, &length, &needs_free))
149 self->obj = (GObject *)gsf_input_memory_new(buf, (gsf_off_t) length,
153 PyErr_SetString(PyExc_RuntimeError, "could not create GsfInputMemory object");
156 pygobject_register_wrapper((PyObject *)self);
160 override gsf_input_textline_ascii_gets noargs
162 _wrap_gsf_input_textline_ascii_gets(PyGObject *self)
164 const unsigned char *ret;
166 ret = gsf_input_textline_ascii_gets(GSF_INPUT_TEXTLINE(self->obj));
168 return PyString_FromString(ret);
173 override gsf_output_size noargs
175 _wrap_gsf_output_size(PyGObject *self)
178 gsf_off_t size = gsf_output_size(GSF_OUTPUT(self->obj));
181 if (ret != size) { /* Check for overflow */
182 PyErr_SetString(PyExc_OverflowError, "Size is too large");
184 return PyInt_FromLong(ret);
187 override gsf_output_tell noargs
189 _wrap_gsf_output_tell(PyGObject *self)
192 gsf_off_t pos = gsf_output_tell(GSF_OUTPUT(self->obj));
194 if (ret != pos) { /* Check for overflow */
195 PyErr_SetString(PyExc_OverflowError, "Position is too large");
197 return PyInt_FromLong(ret);
200 override gsf_output_seek kwargs
202 _wrap_gsf_output_seek(PyGObject *self, PyObject *args, PyObject *kwargs)
204 static char *kwlist[] = { (char *) "offset", (char *) "whence", NULL };
210 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
211 (char *) "li:GsfOutput.seek",
212 kwlist, &loffset, &whence))
215 ret = gsf_output_seek(GSF_OUTPUT(self->obj), offset, whence);
216 return PyInt_FromLong(ret);
219 override gsf_output_write kwargs
221 _wrap_gsf_output_write(PyGObject *self, PyObject *args, PyObject *kwargs)
223 static char *kwlist[] = { (char *) "num_bytes", (char *) "data", NULL };
224 size_t num_bytes, ret;
227 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
228 (char *) "is:GsfOutput.write",
229 kwlist, &num_bytes, &data))
231 ret = gsf_output_write(GSF_OUTPUT(self->obj), num_bytes, data);
232 return PyInt_FromLong((long) ret);
235 override gsf_output_memory_get_bytes noargs
237 _wrap_gsf_output_memory_get_bytes(PyGObject *self, PyObject *args, PyObject *kwargs)
239 const guint8 *outbuffer = NULL;
241 outbuffer = gsf_output_memory_get_bytes (GSF_OUTPUT_MEMORY(self->obj));
243 gsf_off_t outlength = gsf_output_size (GSF_OUTPUT(self->obj));
244 int num_bytes = outlength;
245 if (num_bytes != outlength) { /* Check for overflow */
246 PyErr_SetString(PyExc_OverflowError, "Size is too large");
248 return PyString_FromStringAndSize(outbuffer, (int) num_bytes);
253 override gsf_xml_parser_context kwargs
255 _wrap_gsf_xml_parser_context(PyObject *self, PyObject *args, PyObject *kwargs)
257 static char *kwlist[] = { (char *) "input", NULL };
259 xmlParserCtxtPtr ret;
261 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
262 (char *) "O!:gsf_xml_parser_context",
263 kwlist, &PyGsfInput_Type, &input))
265 ret = gsf_xml_parser_context(GSF_INPUT(input->obj));
267 return PyCObject_FromVoidPtrAndDesc((void *) ret,
268 (char *) "xmlParserCtxtPtr",