/*[clinic end generated code: output=da39a3ee5e6b4b0d input=305a76dfdd24b99c]*/
#undef clinic_get_state
+#define _MultibyteCodec_CAST(op) ((MultibyteCodec *)(op))
+#define _MultibyteCodecObject_CAST(op) ((MultibyteCodecObject *)(op))
+
+#define _MultibyteStatefulCodecContext_CAST(op) \
+ ((MultibyteStatefulCodecContext *)(op))
+
+#define _MultibyteStatefulEncoderContext_CAST(op) \
+ ((MultibyteStatefulEncoderContext *)(op))
+#define _MultibyteStatefulDecoderContext_CAST(op) \
+ ((MultibyteStatefulDecoderContext *)(op))
+
+#define _MultibyteIncrementalEncoderObject_CAST(op) \
+ ((MultibyteIncrementalEncoderObject *)(op))
+#define _MultibyteIncrementalDecoderObject_CAST(op) \
+ ((MultibyteIncrementalDecoderObject *)(op))
+
+#define _MultibyteStreamReaderObject_CAST(op) \
+ ((MultibyteStreamReaderObject *)(op))
+#define _MultibyteStreamWriterObject_CAST(op) \
+ ((MultibyteStreamWriterObject *)(op))
+
typedef struct {
PyObject *inobj;
Py_ssize_t inpos, inlen;
}
static PyObject *
-codecctx_errors_get(MultibyteStatefulCodecContext *self, void *Py_UNUSED(ignored))
+codecctx_errors_get(PyObject *op, void *Py_UNUSED(closure))
{
const char *errors;
+ MultibyteStatefulCodecContext *self = _MultibyteStatefulCodecContext_CAST(op);
if (self->errors == ERROR_STRICT)
errors = "strict";
}
static int
-codecctx_errors_set(MultibyteStatefulCodecContext *self, PyObject *value,
- void *closure)
+codecctx_errors_set(PyObject *op, PyObject *value, void *Py_UNUSED(closure))
{
PyObject *cb;
const char *str;
+ MultibyteStatefulCodecContext *self = _MultibyteStatefulCodecContext_CAST(op);
if (value == NULL) {
PyErr_SetString(PyExc_AttributeError, "cannot delete attribute");
/* This getset handlers list is used by all the stateful codec objects */
static PyGetSetDef codecctx_getsets[] = {
- {"errors", (getter)codecctx_errors_get,
- (setter)codecctx_errors_set,
- PyDoc_STR("how to treat errors")},
+ {"errors", codecctx_errors_get, codecctx_errors_set,
+ PyDoc_STR("how to treat errors")},
{NULL,}
};
};
static int
-multibytecodec_clear(MultibyteCodecObject *self)
+multibytecodec_clear(PyObject *op)
{
+ MultibyteCodecObject *self = _MultibyteCodecObject_CAST(op);
Py_CLEAR(self->cjk_module);
return 0;
}
static int
-multibytecodec_traverse(MultibyteCodecObject *self, visitproc visit, void *arg)
+multibytecodec_traverse(PyObject *op, visitproc visit, void *arg)
{
+ MultibyteCodecObject *self = _MultibyteCodecObject_CAST(op);
Py_VISIT(Py_TYPE(self));
Py_VISIT(self->cjk_module);
return 0;
}
static void
-multibytecodec_dealloc(MultibyteCodecObject *self)
+multibytecodec_dealloc(PyObject *self)
{
PyObject_GC_UnTrack(self);
PyTypeObject *tp = Py_TYPE(self);
}
static int
-mbiencoder_traverse(MultibyteIncrementalEncoderObject *self,
- visitproc visit, void *arg)
+mbiencoder_traverse(PyObject *op, visitproc visit, void *arg)
{
+ MultibyteIncrementalEncoderObject *self = _MultibyteIncrementalEncoderObject_CAST(op);
if (ERROR_ISCUSTOM(self->errors))
Py_VISIT(self->errors);
return 0;
}
static void
-mbiencoder_dealloc(MultibyteIncrementalEncoderObject *self)
+mbiencoder_dealloc(PyObject *op)
{
+ MultibyteIncrementalEncoderObject *self = _MultibyteIncrementalEncoderObject_CAST(op);
PyTypeObject *tp = Py_TYPE(self);
PyObject_GC_UnTrack(self);
ERROR_DECREF(self->errors);
}
static int
-mbidecoder_traverse(MultibyteIncrementalDecoderObject *self,
- visitproc visit, void *arg)
+mbidecoder_traverse(PyObject *op, visitproc visit, void *arg)
{
+ MultibyteIncrementalDecoderObject *self = _MultibyteIncrementalDecoderObject_CAST(op);
if (ERROR_ISCUSTOM(self->errors))
Py_VISIT(self->errors);
return 0;
}
static void
-mbidecoder_dealloc(MultibyteIncrementalDecoderObject *self)
+mbidecoder_dealloc(PyObject *op)
{
+ MultibyteIncrementalDecoderObject *self = _MultibyteIncrementalDecoderObject_CAST(op);
PyTypeObject *tp = Py_TYPE(self);
PyObject_GC_UnTrack(self);
ERROR_DECREF(self->errors);
}
static int
-mbstreamreader_traverse(MultibyteStreamReaderObject *self,
- visitproc visit, void *arg)
+mbstreamreader_traverse(PyObject *op, visitproc visit, void *arg)
{
+ MultibyteStreamReaderObject *self = _MultibyteStreamReaderObject_CAST(op);
if (ERROR_ISCUSTOM(self->errors))
Py_VISIT(self->errors);
Py_VISIT(self->stream);
}
static void
-mbstreamreader_dealloc(MultibyteStreamReaderObject *self)
+mbstreamreader_dealloc(PyObject *op)
{
+ MultibyteStreamReaderObject *self = _MultibyteStreamReaderObject_CAST(op);
PyTypeObject *tp = Py_TYPE(self);
PyObject_GC_UnTrack(self);
ERROR_DECREF(self->errors);
}
static int
-mbstreamwriter_traverse(MultibyteStreamWriterObject *self,
- visitproc visit, void *arg)
+mbstreamwriter_traverse(PyObject *op, visitproc visit, void *arg)
{
+ MultibyteStreamWriterObject *self = _MultibyteStreamWriterObject_CAST(op);
if (ERROR_ISCUSTOM(self->errors))
Py_VISIT(self->errors);
Py_VISIT(self->stream);
}
static void
-mbstreamwriter_dealloc(MultibyteStreamWriterObject *self)
+mbstreamwriter_dealloc(PyObject *op)
{
+ MultibyteStreamWriterObject *self = _MultibyteStreamWriterObject_CAST(op);
PyTypeObject *tp = Py_TYPE(self);
PyObject_GC_UnTrack(self);
ERROR_DECREF(self->errors);
static void
_multibytecodec_free(void *mod)
{
- _multibytecodec_clear((PyObject *)mod);
+ (void)_multibytecodec_clear((PyObject *)mod);
}
#define CREATE_TYPE(module, type, spec) \