Skip to content

Commit 7f475ed

Browse files
author
Arzaroth Lekva
committed
parent getter
1 parent 7d976c3 commit 7f475ed

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

rapidxml/c_ext/src/base_object.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,33 @@ static int rapidxml_BaseObject_setvalue(rapidxml_BaseObject* self,
163163
return 0;
164164
}
165165

166+
static PyObject* rapidxml_BaseObject_getparent(rapidxml_BaseObject* self,
167+
void* closure) {
168+
rapidxml::xml_node<>* parent;
169+
170+
if (self->underlying_obj == NULL || self->document == NULL) {
171+
PyErr_SetString(rapidxml_RapidXmlError,
172+
"underlying mechanism failed");
173+
return NULL;
174+
}
175+
parent = self->underlying_obj->parent();
176+
if (parent == NULL) {
177+
Py_INCREF(Py_None);
178+
return Py_None;
179+
}
180+
return _bind_result(self, parent, &rapidxml_NodeType);
181+
}
182+
166183
static PyGetSetDef rapidxml_BaseObject_getseters[] = {
167184
{"name",
168185
(getter)rapidxml_BaseObject_getname, (setter)rapidxml_BaseObject_setname,
169186
"name of xml entity"},
170187
{"value",
171188
(getter)rapidxml_BaseObject_getvalue, (setter)rapidxml_BaseObject_setvalue,
172189
"value of xml entity"},
190+
{"parent",
191+
(getter)rapidxml_BaseObject_getparent, NULL,
192+
"gets node parent"},
173193
{NULL}
174194
};
175195

0 commit comments

Comments
 (0)