mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Added methods getdata() and putdata() to obtain the data in a bitmap.
This commit is contained in:
parent
9428fa607b
commit
484be6152f
2 changed files with 68 additions and 0 deletions
|
@ -297,7 +297,45 @@ static void BMObj_dealloc(self)
|
||||||
PyMem_DEL(self);
|
PyMem_DEL(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyObject *BMObj_getdata(_self, _args)
|
||||||
|
BitMapObject *_self;
|
||||||
|
PyObject *_args;
|
||||||
|
{
|
||||||
|
PyObject *_res = NULL;
|
||||||
|
|
||||||
|
int from, length;
|
||||||
|
char *cp;
|
||||||
|
|
||||||
|
if ( !PyArg_ParseTuple(_args, "ii", &from, &length) )
|
||||||
|
return NULL;
|
||||||
|
cp = _self->ob_itself->baseAddr+from;
|
||||||
|
return PyString_FromStringAndSize(cp, length);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *BMObj_putdata(_self, _args)
|
||||||
|
BitMapObject *_self;
|
||||||
|
PyObject *_args;
|
||||||
|
{
|
||||||
|
PyObject *_res = NULL;
|
||||||
|
|
||||||
|
int from, length;
|
||||||
|
char *cp, *icp;
|
||||||
|
|
||||||
|
if ( !PyArg_ParseTuple(_args, "is#", &from, &icp, &length) )
|
||||||
|
return NULL;
|
||||||
|
cp = _self->ob_itself->baseAddr+from;
|
||||||
|
memcpy(cp, icp, length);
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static PyMethodDef BMObj_methods[] = {
|
static PyMethodDef BMObj_methods[] = {
|
||||||
|
{"getdata", (PyCFunction)BMObj_getdata, 1,
|
||||||
|
"(int start, int size) -> string. Return bytes from the bitmap"},
|
||||||
|
{"putdata", (PyCFunction)BMObj_putdata, 1,
|
||||||
|
"(int start, string data). Store bytes into the bitmap"},
|
||||||
{NULL, NULL, 0}
|
{NULL, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -310,6 +310,36 @@ for f in functions: module.add(f)
|
||||||
##for f in r_methods: r_object.add(f)
|
##for f in r_methods: r_object.add(f)
|
||||||
##for f in po_methods: po_object.add(f)
|
##for f in po_methods: po_object.add(f)
|
||||||
|
|
||||||
|
# Manual generator: get data out of a bitmap
|
||||||
|
getdata_body = """
|
||||||
|
int from, length;
|
||||||
|
char *cp;
|
||||||
|
|
||||||
|
if ( !PyArg_ParseTuple(_args, "ii", &from, &length) )
|
||||||
|
return NULL;
|
||||||
|
cp = _self->ob_itself->baseAddr+from;
|
||||||
|
return PyString_FromStringAndSize(cp, length);
|
||||||
|
"""
|
||||||
|
f = ManualGenerator("getdata", getdata_body)
|
||||||
|
f.docstring = lambda: """(int start, int size) -> string. Return bytes from the bitmap"""
|
||||||
|
bm_object.add(f)
|
||||||
|
|
||||||
|
# Manual generator: store data in a bitmap
|
||||||
|
putdata_body = """
|
||||||
|
int from, length;
|
||||||
|
char *cp, *icp;
|
||||||
|
|
||||||
|
if ( !PyArg_ParseTuple(_args, "is#", &from, &icp, &length) )
|
||||||
|
return NULL;
|
||||||
|
cp = _self->ob_itself->baseAddr+from;
|
||||||
|
memcpy(cp, icp, length);
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
"""
|
||||||
|
f = ManualGenerator("putdata", putdata_body)
|
||||||
|
f.docstring = lambda: """(int start, string data). Store bytes into the bitmap"""
|
||||||
|
bm_object.add(f)
|
||||||
|
|
||||||
#
|
#
|
||||||
# We manually generate a routine to create a BitMap from python data.
|
# We manually generate a routine to create a BitMap from python data.
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue