mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Merge branch 'py3' of https://github.com/eli-schwartz/calibre
This commit is contained in:
commit
9695a6e1cc
@ -111,8 +111,8 @@ def get_sip_dir():
|
|||||||
pyqt['pyqt_sip_dir'] = get_sip_dir()
|
pyqt['pyqt_sip_dir'] = get_sip_dir()
|
||||||
pyqt['sip_inc_dir'] = os.environ.get('SIP_INC_DIR', sysconfig.get_path('include'))
|
pyqt['sip_inc_dir'] = os.environ.get('SIP_INC_DIR', sysconfig.get_path('include'))
|
||||||
|
|
||||||
glib_flags = subprocess.check_output([PKGCONFIG, '--libs', 'glib-2.0']).strip() if islinux or ishaiku else ''
|
glib_flags = subprocess.check_output([PKGCONFIG, '--libs', 'glib-2.0']).decode('utf-8').strip() if islinux or ishaiku else ''
|
||||||
fontconfig_flags = subprocess.check_output([PKGCONFIG, '--libs', 'fontconfig']).strip() if islinux or ishaiku else ''
|
fontconfig_flags = subprocess.check_output([PKGCONFIG, '--libs', 'fontconfig']).decode('utf-8').strip() if islinux or ishaiku else ''
|
||||||
qt_inc = pyqt['inc']
|
qt_inc = pyqt['inc']
|
||||||
qt_lib = pyqt['lib']
|
qt_lib = pyqt['lib']
|
||||||
ft_lib_dirs = []
|
ft_lib_dirs = []
|
||||||
|
@ -87,7 +87,7 @@ else:
|
|||||||
filesystem_encoding = 'utf-8'
|
filesystem_encoding = 'utf-8'
|
||||||
|
|
||||||
|
|
||||||
DEBUG = b'CALIBRE_DEBUG' in os.environ
|
DEBUG = 'CALIBRE_DEBUG' in os.environ
|
||||||
|
|
||||||
|
|
||||||
def debug():
|
def debug():
|
||||||
|
@ -123,7 +123,7 @@ static uint16_t data_from_python(void *params, void *priv, uint32_t wantlen, uns
|
|||||||
static PyObject* build_file_metadata(LIBMTP_file_t *nf, uint32_t storage_id) {
|
static PyObject* build_file_metadata(LIBMTP_file_t *nf, uint32_t storage_id) {
|
||||||
PyObject *ans = NULL;
|
PyObject *ans = NULL;
|
||||||
|
|
||||||
ans = Py_BuildValue("{s:s, s:k, s:k, s:k, s:K, s:L, s:O}",
|
ans = Py_BuildValue("{s:s, s:k, s:k, s:k, s:K, s:L, s:O}",
|
||||||
"name", nf->filename,
|
"name", nf->filename,
|
||||||
"id", (unsigned long)nf->item_id,
|
"id", (unsigned long)nf->item_id,
|
||||||
"parent_id", (unsigned long)nf->parent_id,
|
"parent_id", (unsigned long)nf->parent_id,
|
||||||
@ -184,7 +184,7 @@ Device_dealloc(Device* self)
|
|||||||
Py_XDECREF(self->serial_number); self->serial_number = NULL;
|
Py_XDECREF(self->serial_number); self->serial_number = NULL;
|
||||||
Py_XDECREF(self->device_version); self->device_version = NULL;
|
Py_XDECREF(self->device_version); self->device_version = NULL;
|
||||||
|
|
||||||
self->ob_type->tp_free((PyObject*)self);
|
Py_TYPE(self)->tp_free((PyObject*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -225,9 +225,9 @@ Device_init(Device *self, PyObject *args, PyObject *kwds)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (rawdevs != NULL) free(rawdevs);
|
if (rawdevs != NULL) free(rawdevs);
|
||||||
if (dev == NULL) {
|
if (dev == NULL) {
|
||||||
if (tried_count == 0) PyErr_Format(MTPError, "No device with busnum=%lu and devnum=%u found", busnum, devnum);
|
if (tried_count == 0) PyErr_Format(MTPError, "No device with busnum=%lu and devnum=%u found", busnum, devnum);
|
||||||
else PyErr_Format(MTPError, "Unable to open MTP device with busnum=%lu and devnum=%u, tried %d such devices", busnum, devnum, tried_count);
|
else PyErr_Format(MTPError, "Unable to open MTP device with busnum=%lu and devnum=%u, tried %d such devices", busnum, devnum, tried_count);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,8 +341,8 @@ Device_storage_info(Device *self, void *closure) {
|
|||||||
// Check if read only storage
|
// Check if read only storage
|
||||||
if (storage->StorageType == ST_FixedROM || storage->StorageType == ST_RemovableROM || (storage->id & 0x0000FFFFU) == 0x00000000U || storage->AccessCapability == AC_ReadOnly || storage->AccessCapability == AC_ReadOnly_with_Object_Deletion) ro = 1;
|
if (storage->StorageType == ST_FixedROM || storage->StorageType == ST_RemovableROM || (storage->id & 0x0000FFFFU) == 0x00000000U || storage->AccessCapability == AC_ReadOnly || storage->AccessCapability == AC_ReadOnly_with_Object_Deletion) ro = 1;
|
||||||
|
|
||||||
loc = Py_BuildValue("{s:k,s:O,s:K,s:K,s:K,s:s,s:s,s:O}",
|
loc = Py_BuildValue("{s:k,s:O,s:K,s:K,s:K,s:s,s:s,s:O}",
|
||||||
"id", (unsigned long)storage->id,
|
"id", (unsigned long)storage->id,
|
||||||
"removable", ((storage->StorageType == ST_RemovableRAM) ? Py_True : Py_False),
|
"removable", ((storage->StorageType == ST_RemovableRAM) ? Py_True : Py_False),
|
||||||
"capacity", (unsigned long long)storage->MaxCapacity,
|
"capacity", (unsigned long long)storage->MaxCapacity,
|
||||||
"freespace_bytes", (unsigned long long)storage->FreeSpaceInBytes,
|
"freespace_bytes", (unsigned long long)storage->FreeSpaceInBytes,
|
||||||
@ -352,7 +352,7 @@ Device_storage_info(Device *self, void *closure) {
|
|||||||
"rw", (ro) ? Py_False : Py_True
|
"rw", (ro) ? Py_False : Py_True
|
||||||
);
|
);
|
||||||
|
|
||||||
if (loc == NULL) return NULL;
|
if (loc == NULL) return NULL;
|
||||||
if (PyList_Append(ans, loc) != 0) return NULL;
|
if (PyList_Append(ans, loc) != 0) return NULL;
|
||||||
Py_DECREF(loc);
|
Py_DECREF(loc);
|
||||||
|
|
||||||
@ -382,12 +382,12 @@ static int recursive_get_files(LIBMTP_mtpdevice_t *dev, uint32_t storage_id, uin
|
|||||||
recurse = (r != NULL && PyObject_IsTrue(r)) ? 1 : 0;
|
recurse = (r != NULL && PyObject_IsTrue(r)) ? 1 : 0;
|
||||||
Py_XDECREF(r);
|
Py_XDECREF(r);
|
||||||
if (PyList_Append(ans, entry) != 0) { ok = 0; }
|
if (PyList_Append(ans, entry) != 0) { ok = 0; }
|
||||||
Py_DECREF(entry);
|
Py_DECREF(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok && recurse && f->filetype == LIBMTP_FILETYPE_FOLDER) {
|
if (ok && recurse && f->filetype == LIBMTP_FILETYPE_FOLDER) {
|
||||||
if (!recursive_get_files(dev, storage_id, f->item_id, ans, errs, callback, level+1)) {
|
if (!recursive_get_files(dev, storage_id, f->item_id, ans, errs, callback, level+1)) {
|
||||||
ok = 0;
|
ok = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -409,7 +409,7 @@ Device_get_filesystem(Device *self, PyObject *args) {
|
|||||||
|
|
||||||
ENSURE_DEV(NULL); ENSURE_STORAGE(NULL);
|
ENSURE_DEV(NULL); ENSURE_STORAGE(NULL);
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "kO", &storage_id, &callback)) return NULL;
|
if (!PyArg_ParseTuple(args, "kO", &storage_id, &callback)) return NULL;
|
||||||
if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "callback is not a callable"); return NULL; }
|
if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "callback is not a callable"); return NULL; }
|
||||||
ans = PyList_New(0);
|
ans = PyList_New(0);
|
||||||
errs = PyList_New(0);
|
errs = PyList_New(0);
|
||||||
@ -439,7 +439,7 @@ Device_get_file(Device *self, PyObject *args) {
|
|||||||
ENSURE_DEV(NULL); ENSURE_STORAGE(NULL);
|
ENSURE_DEV(NULL); ENSURE_STORAGE(NULL);
|
||||||
|
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "kO|O", &fileid, &stream, &callback)) return NULL;
|
if (!PyArg_ParseTuple(args, "kO|O", &fileid, &stream, &callback)) return NULL;
|
||||||
errs = PyList_New(0);
|
errs = PyList_New(0);
|
||||||
if (errs == NULL) { PyErr_NoMemory(); return NULL; }
|
if (errs == NULL) { PyErr_NoMemory(); return NULL; }
|
||||||
if (callback == NULL || !PyCallable_Check(callback)) callback = NULL;
|
if (callback == NULL || !PyCallable_Check(callback)) callback = NULL;
|
||||||
@ -451,7 +451,7 @@ Device_get_file(Device *self, PyObject *args) {
|
|||||||
PyEval_RestoreThread(cb.state);
|
PyEval_RestoreThread(cb.state);
|
||||||
Py_XDECREF(callback); Py_DECREF(stream);
|
Py_XDECREF(callback); Py_DECREF(stream);
|
||||||
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
dump_errorstack(self->device, errs);
|
dump_errorstack(self->device, errs);
|
||||||
}
|
}
|
||||||
Py_XDECREF(PyObject_CallMethod(stream, "flush", NULL));
|
Py_XDECREF(PyObject_CallMethod(stream, "flush", NULL));
|
||||||
@ -472,7 +472,7 @@ Device_put_file(Device *self, PyObject *args) {
|
|||||||
|
|
||||||
ENSURE_DEV(NULL); ENSURE_STORAGE(NULL);
|
ENSURE_DEV(NULL); ENSURE_STORAGE(NULL);
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "kksOK|O", &storage_id, &parent_id, &name, &stream, &filesize, &callback)) return NULL;
|
if (!PyArg_ParseTuple(args, "kksOK|O", &storage_id, &parent_id, &name, &stream, &filesize, &callback)) return NULL;
|
||||||
errs = PyList_New(0);
|
errs = PyList_New(0);
|
||||||
if (errs == NULL) { PyErr_NoMemory(); return NULL; }
|
if (errs == NULL) { PyErr_NoMemory(); return NULL; }
|
||||||
if (callback == NULL || !PyCallable_Check(callback)) callback = NULL;
|
if (callback == NULL || !PyCallable_Check(callback)) callback = NULL;
|
||||||
@ -569,32 +569,32 @@ static PyMethodDef Device_methods[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static PyGetSetDef Device_getsetters[] = {
|
static PyGetSetDef Device_getsetters[] = {
|
||||||
{(char *)"friendly_name",
|
{(char *)"friendly_name",
|
||||||
(getter)Device_friendly_name, NULL,
|
(getter)Device_friendly_name, NULL,
|
||||||
(char *)"The friendly name of this device, can be None.",
|
(char *)"The friendly name of this device, can be None.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"manufacturer_name",
|
{(char *)"manufacturer_name",
|
||||||
(getter)Device_manufacturer_name, NULL,
|
(getter)Device_manufacturer_name, NULL,
|
||||||
(char *)"The manufacturer name of this device, can be None.",
|
(char *)"The manufacturer name of this device, can be None.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"model_name",
|
{(char *)"model_name",
|
||||||
(getter)Device_model_name, NULL,
|
(getter)Device_model_name, NULL,
|
||||||
(char *)"The model name of this device, can be None.",
|
(char *)"The model name of this device, can be None.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"serial_number",
|
{(char *)"serial_number",
|
||||||
(getter)Device_serial_number, NULL,
|
(getter)Device_serial_number, NULL,
|
||||||
(char *)"The serial number of this device, can be None.",
|
(char *)"The serial number of this device, can be None.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"device_version",
|
{(char *)"device_version",
|
||||||
(getter)Device_device_version, NULL,
|
(getter)Device_device_version, NULL,
|
||||||
(char *)"The device version of this device, can be None.",
|
(char *)"The device version of this device, can be None.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"ids",
|
{(char *)"ids",
|
||||||
(getter)Device_ids, NULL,
|
(getter)Device_ids, NULL,
|
||||||
(char *)"The ids of the device (busnum, devnum, vendor_id, product_id, usb_serialnum)",
|
(char *)"The ids of the device (busnum, devnum, vendor_id, product_id, usb_serialnum)",
|
||||||
NULL},
|
NULL},
|
||||||
@ -719,7 +719,7 @@ initlibmtp(void) {
|
|||||||
DeviceType.tp_new = PyType_GenericNew;
|
DeviceType.tp_new = PyType_GenericNew;
|
||||||
if (PyType_Ready(&DeviceType) < 0)
|
if (PyType_Ready(&DeviceType) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m = Py_InitModule3("libmtp", libmtp_methods, "Interface to libmtp.");
|
m = Py_InitModule3("libmtp", libmtp_methods, "Interface to libmtp.");
|
||||||
if (m == NULL) return;
|
if (m == NULL) return;
|
||||||
|
|
||||||
|
@ -21,10 +21,10 @@ dealloc(Device* self)
|
|||||||
|
|
||||||
if (self->bulk_properties != NULL) { self->bulk_properties->Release(); self->bulk_properties = NULL; }
|
if (self->bulk_properties != NULL) { self->bulk_properties->Release(); self->bulk_properties = NULL; }
|
||||||
|
|
||||||
if (self->device != NULL) {
|
if (self->device != NULL) {
|
||||||
Py_BEGIN_ALLOW_THREADS;
|
Py_BEGIN_ALLOW_THREADS;
|
||||||
self->device->Close(); self->device->Release();
|
self->device->Close(); self->device->Release();
|
||||||
self->device = NULL;
|
self->device = NULL;
|
||||||
Py_END_ALLOW_THREADS;
|
Py_END_ALLOW_THREADS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ dealloc(Device* self)
|
|||||||
|
|
||||||
Py_XDECREF(self->device_information); self->device_information = NULL;
|
Py_XDECREF(self->device_information); self->device_information = NULL;
|
||||||
|
|
||||||
self->ob_type->tp_free((PyObject*)self);
|
Py_TYPE(self)->tp_free((PyObject*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -74,7 +74,7 @@ update_data(Device *self, PyObject *args) {
|
|||||||
Py_XDECREF(self->device_information); self->device_information = di;
|
Py_XDECREF(self->device_information); self->device_information = di;
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
} // }}}
|
} // }}}
|
||||||
|
|
||||||
// get_filesystem() {{{
|
// get_filesystem() {{{
|
||||||
static PyObject*
|
static PyObject*
|
||||||
py_get_filesystem(Device *self, PyObject *args) {
|
py_get_filesystem(Device *self, PyObject *args) {
|
||||||
@ -194,7 +194,7 @@ Device_data(Device *self, void *closure) {
|
|||||||
|
|
||||||
|
|
||||||
static PyGetSetDef Device_getsetters[] = {
|
static PyGetSetDef Device_getsetters[] = {
|
||||||
{(char *)"data",
|
{(char *)"data",
|
||||||
(getter)Device_data, NULL,
|
(getter)Device_data, NULL,
|
||||||
(char *)"The basic device information.",
|
(char *)"The basic device information.",
|
||||||
NULL},
|
NULL},
|
||||||
@ -244,4 +244,3 @@ PyTypeObject wpd::DeviceType = { // {{{
|
|||||||
0, /* tp_alloc */
|
0, /* tp_alloc */
|
||||||
0, /* tp_new */
|
0, /* tp_new */
|
||||||
}; // }}}
|
}; // }}}
|
||||||
|
|
||||||
|
@ -48,7 +48,11 @@ PyObject* get_glyphs(const QPointF &p, const QTextItem &text_item) {
|
|||||||
indices = PyTuple_New(glyphs.count());
|
indices = PyTuple_New(glyphs.count());
|
||||||
if (indices == NULL) { Py_DECREF(points); return PyErr_NoMemory(); }
|
if (indices == NULL) { Py_DECREF(points); return PyErr_NoMemory(); }
|
||||||
for (int i = 0; i < glyphs.count(); i++) {
|
for (int i = 0; i < glyphs.count(); i++) {
|
||||||
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
temp = PyLong_FromLong((long)glyphs[i]);
|
||||||
|
#else
|
||||||
temp = PyInt_FromLong((long)glyphs[i]);
|
temp = PyInt_FromLong((long)glyphs[i]);
|
||||||
|
#endif
|
||||||
if (temp == NULL) { Py_DECREF(indices); Py_DECREF(points); return PyErr_NoMemory(); }
|
if (temp == NULL) { Py_DECREF(indices); Py_DECREF(points); return PyErr_NoMemory(); }
|
||||||
PyTuple_SET_ITEM(indices, i, temp); temp = NULL;
|
PyTuple_SET_ITEM(indices, i, temp); temp = NULL;
|
||||||
}
|
}
|
||||||
@ -74,10 +78,13 @@ PyObject* get_glyph_map(const QTextItem &text_item) {
|
|||||||
for (uint uc = 0; uc < 0x10000; ++uc) {
|
for (uint uc = 0; uc < 0x10000; ++uc) {
|
||||||
QChar ch(uc);
|
QChar ch(uc);
|
||||||
ti.fontEngine->stringToCMap(&ch, 1, &glyphs, &nglyphs, QFontEngine::GlyphIndicesOnly);
|
ti.fontEngine->stringToCMap(&ch, 1, &glyphs, &nglyphs, QFontEngine::GlyphIndicesOnly);
|
||||||
|
#if PY_MAJOR_VERSION >= 3
|
||||||
|
t = PyLong_FromLong(glyphs.glyphs[0]);
|
||||||
|
#else
|
||||||
t = PyInt_FromLong(glyphs.glyphs[0]);
|
t = PyInt_FromLong(glyphs.glyphs[0]);
|
||||||
|
#endif
|
||||||
if (t == NULL) { Py_DECREF(ans); return PyErr_NoMemory(); }
|
if (t == NULL) { Py_DECREF(ans); return PyErr_NoMemory(); }
|
||||||
PyTuple_SET_ITEM(ans, uc, t); t = NULL;
|
PyTuple_SET_ITEM(ans, uc, t); t = NULL;
|
||||||
}
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// Per python C-API docs, Python.h must always be the first header
|
||||||
|
#include <Python.h>
|
||||||
#include <QGlyphRun>
|
#include <QGlyphRun>
|
||||||
#include <QTextItem>
|
#include <QTextItem>
|
||||||
#include <QPointF>
|
#include <QPointF>
|
||||||
#include <Python.h>
|
|
||||||
|
|
||||||
PyObject* get_glyphs(const QPointF &p, const QTextItem &text_item);
|
PyObject* get_glyphs(const QPointF &p, const QTextItem &text_item);
|
||||||
|
|
||||||
PyObject* get_sfnt_table(const QTextItem &text_item, const char* tag_name);
|
PyObject* get_sfnt_table(const QTextItem &text_item, const char* tag_name);
|
||||||
|
|
||||||
PyObject* get_glyph_map(const QTextItem &text_item);
|
PyObject* get_glyph_map(const QTextItem &text_item);
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#define PY_SSIZE_T_CLEAN
|
#define PY_SSIZE_T_CLEAN
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_FREETYPE_H
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
static PyObject *FreeTypeError = NULL;
|
static PyObject *FreeTypeError = NULL;
|
||||||
@ -47,7 +47,7 @@ Face_dealloc(Face* self)
|
|||||||
Py_XDECREF(self->data);
|
Py_XDECREF(self->data);
|
||||||
self->data = NULL;
|
self->data = NULL;
|
||||||
|
|
||||||
self->ob_type->tp_free((PyObject*)self);
|
Py_TYPE(self)->tp_free((PyObject*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -84,12 +84,12 @@ Face_init(Face *self, PyObject *args, PyObject *kwds)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
family_name(Face *self, void *closure) {
|
family_name(Face *self, void *closure) {
|
||||||
return Py_BuildValue("s", self->face->family_name);
|
return Py_BuildValue("s", self->face->family_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
style_name(Face *self, void *closure) {
|
style_name(Face *self, void *closure) {
|
||||||
return Py_BuildValue("s", self->face->style_name);
|
return Py_BuildValue("s", self->face->style_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject*
|
static PyObject*
|
||||||
supports_text(Face *self, PyObject *args) {
|
supports_text(Face *self, PyObject *args) {
|
||||||
@ -124,12 +124,12 @@ glyph_id(Face *self, PyObject *args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static PyGetSetDef Face_getsetters[] = {
|
static PyGetSetDef Face_getsetters[] = {
|
||||||
{(char *)"family_name",
|
{(char *)"family_name",
|
||||||
(getter)family_name, NULL,
|
(getter)family_name, NULL,
|
||||||
(char *)"The family name of this font.",
|
(char *)"The family name of this font.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"style_name",
|
{(char *)"style_name",
|
||||||
(getter)style_name, NULL,
|
(getter)style_name, NULL,
|
||||||
(char *)"The style name of this font.",
|
(char *)"The style name of this font.",
|
||||||
NULL},
|
NULL},
|
||||||
@ -160,7 +160,7 @@ dealloc(FreeType* self)
|
|||||||
}
|
}
|
||||||
self->library = NULL;
|
self->library = NULL;
|
||||||
|
|
||||||
self->ob_type->tp_free((PyObject*)self);
|
Py_TYPE(self)->tp_free((PyObject*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -288,7 +288,7 @@ static PyTypeObject FreeTypeType = { // {{{
|
|||||||
0, /* tp_new */
|
0, /* tp_new */
|
||||||
}; // }}}
|
}; // }}}
|
||||||
|
|
||||||
static
|
static
|
||||||
PyMethodDef methods[] = {
|
PyMethodDef methods[] = {
|
||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
@ -319,4 +319,3 @@ initfreetype(void) {
|
|||||||
PyModule_AddObject(m, "FreeType", (PyObject *)&FreeTypeType);
|
PyModule_AddObject(m, "FreeType", (PyObject *)&FreeTypeType);
|
||||||
PyModule_AddObject(m, "Face", (PyObject *)&FaceType);
|
PyModule_AddObject(m, "Face", (PyObject *)&FaceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ static void
|
|||||||
PDFDoc_dealloc(PDFDoc* self)
|
PDFDoc_dealloc(PDFDoc* self)
|
||||||
{
|
{
|
||||||
if (self->doc != NULL) delete self->doc;
|
if (self->doc != NULL) delete self->doc;
|
||||||
self->ob_type->tp_free((PyObject*)self);
|
Py_TYPE(self)->tp_free((PyObject*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
@ -13,7 +13,7 @@ using namespace pdf;
|
|||||||
static void
|
static void
|
||||||
dealloc(PDFOutlineItem* self)
|
dealloc(PDFOutlineItem* self)
|
||||||
{
|
{
|
||||||
self->ob_type->tp_free((PyObject*)self);
|
Py_TYPE(self)->tp_free((PyObject*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
@ -138,5 +138,3 @@ PyTypeObject pdf::PDFOutlineItemType = {
|
|||||||
|
|
||||||
};
|
};
|
||||||
// }}}
|
// }}}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user