return -1;
// Create the AS object
- int r = loc_as_new(loc_ctx, NULL, &self->as, number);
+ int r = loc_as_new(loc_ctx, &self->as, number);
if (r)
return -1;
return PyUnicode_FromFormat("<AS %d>", number);
}
+static PyObject* AS_str(ASObject* self) {
+ uint32_t number = loc_as_get_number(self->as);
+ const char* name = loc_as_get_name(self->as);
+
+ if (name)
+ return PyUnicode_FromFormat("AS%d (%s)", number, name);
+
+ return PyUnicode_FromFormat("AS%d", number);
+}
+
static PyObject* AS_get_number(ASObject* self) {
uint32_t number = loc_as_get_number(self->as);
return PyUnicode_FromString(name);
}
+static int AS_set_name(ASObject* self, PyObject* value) {
+ const char* name = PyUnicode_AsUTF8(value);
+
+ int r = loc_as_set_name(self->as, name);
+ if (r) {
+ PyErr_Format(PyExc_ValueError, "Could not set name: %s", name);
+ return r;
+ }
+
+ return 0;
+}
+
static PyObject* AS_richcompare(ASObject* self, ASObject* other, int op) {
int r = loc_as_cmp(self->as, other->as);
{
"name",
(getter)AS_get_name,
- NULL,
+ (setter)AS_set_name,
NULL,
NULL,
},
PyTypeObject ASType = {
PyVarObject_HEAD_INIT(NULL, 0)
- tp_name: "location.AS",
- tp_basicsize: sizeof(ASObject),
- tp_flags: Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,
- tp_new: AS_new,
- tp_dealloc: (destructor)AS_dealloc,
- tp_init: (initproc)AS_init,
- tp_doc: "AS object",
- tp_getset: AS_getsetters,
- tp_repr: (reprfunc)AS_repr,
- tp_richcompare: (richcmpfunc)AS_richcompare,
+ .tp_name = "location.AS",
+ .tp_basicsize = sizeof(ASObject),
+ .tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,
+ .tp_new = AS_new,
+ .tp_dealloc = (destructor)AS_dealloc,
+ .tp_init = (initproc)AS_init,
+ .tp_doc = "AS object",
+ .tp_getset = AS_getsetters,
+ .tp_repr = (reprfunc)AS_repr,
+ .tp_str = (reprfunc)AS_str,
+ .tp_richcompare = (richcmpfunc)AS_richcompare,
};