@@ -62,13 +62,12 @@ static PyObject* AdjacencyListGraph_new(PyTypeObject* type, PyObject* args, PyOb
6262 Py_ssize_t num_args = PyTuple_Size (args);
6363 for (Py_ssize_t i = 0 ; i < num_args; ++i) {
6464 PyObject* node_obj = PyTuple_GetItem (args, i);
65- if (!PyObject_IsInstance (node_obj, (PyObject*)&AdjacencyListGraphNodeType)) {
65+ AdjacencyListGraphNode* node = reinterpret_cast <AdjacencyListGraphNode*>(node_obj);
66+ if (node->type_tag != NodeType::AdjacencyListGraphNode) {
6667 PyErr_SetString (PyExc_TypeError, " All arguments must be AdjacencyListGraphNode instances" );
6768 return NULL ;
6869 }
6970
70- AdjacencyListGraphNode* node = reinterpret_cast <AdjacencyListGraphNode*>(node_obj);
71-
7271 if (self->node_map .find (node->name ) != self->node_map .end ()) {
7372 PyErr_Format (PyExc_ValueError, " Duplicate node with name '%s'" , node->name .c_str ());
7473 return NULL ;
@@ -107,13 +106,12 @@ static PyObject* AdjacencyListGraph_add_vertex(AdjacencyListGraph* self, PyObjec
107106 return NULL ;
108107 }
109108
110- if (!PyObject_IsInstance (node_obj, (PyObject*)&AdjacencyListGraphNodeType)) {
109+ AdjacencyListGraphNode* node = reinterpret_cast <AdjacencyListGraphNode*>(node_obj);
110+ if (node->type_tag != NodeType::AdjacencyListGraphNode) {
111111 PyErr_SetString (PyExc_TypeError, " Object is not an AdjacencyListGraphNode" );
112112 return NULL ;
113113 }
114114
115- AdjacencyListGraphNode* node = reinterpret_cast <AdjacencyListGraphNode*>(node_obj);
116-
117115 if (self->node_map .find (node->name ) != self->node_map .end ()) {
118116 PyErr_SetString (PyExc_ValueError, " Node with this name already exists" );
119117 return NULL ;
0 commit comments