| 165 | |
| 166 | |
| 167 | BOOL PyCom_InterfaceFromPyInstanceOrObject(PyObject *ob, REFIID iid, LPVOID *ppv, BOOL bNoneOK /* = TRUE */) |
| 168 | { |
| 169 | if (ob == Py_None){ |
| 170 | *ppv = NULL; |
| 171 | if (bNoneOK) |
| 172 | return TRUE; |
| 173 | PyErr_SetString(PyExc_TypeError, "None is not a valid interface object in this context"); |
| 174 | return FALSE; |
| 175 | } |
| 176 | |
| 177 | if (PyObject_IsInstance(ob, (PyObject *)&PyIUnknown::type)) |
| 178 | return PyCom_InterfaceFromPyObject(ob, iid, ppv, bNoneOK ); |
| 179 | |
| 180 | ob = PyObject_GetAttrString(ob, "_oleobj_"); |
| 181 | if (ob==NULL) { |
| 182 | PyErr_Clear(); |
| 183 | PyErr_SetString(PyExc_TypeError, "The Python instance can not be converted to a COM object"); |
| 184 | return FALSE; |
| 185 | } |
| 186 | BOOL rc = PyCom_InterfaceFromPyObject(ob, iid, ppv, bNoneOK ); |
| 187 | Py_DECREF(ob); |
| 188 | return rc; |
| 189 | } |
| 190 | |
| 191 | BOOL PyCom_InterfaceFromPyObject(PyObject *ob, REFIID iid, LPVOID *ppv, BOOL bNoneOK /* = TRUE */) |
| 192 | { |
no test coverage detected