[pywin32-checkins] pywin32/com/win32com/src/extensions PyIGlobalInterfaceTable.cpp,NONE,1.1
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Mark H. <mha...@us...> - 2006-01-10 04:04:11
|
Update of /cvsroot/pywin32/pywin32/com/win32com/src/extensions In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1539/win32com/src/extensions Added Files: PyIGlobalInterfaceTable.cpp Log Message: Patch from Stefan Schukat for IGlobalInterfaceTable. --- NEW FILE: PyIGlobalInterfaceTable.cpp --- // This file implements the IGlobalInterfaceTable Interface for Python. // Generated by makegw.py #include "stdafx.h" #include "PythonCOM.h" #include "PyIGlobalInterfaceTable.h" // --------------------------------------------------- // // Interface Implementation PyIGlobalInterfaceTable::PyIGlobalInterfaceTable(IUnknown *pdisp): PyIUnknown(pdisp) { ob_type = &type; } PyIGlobalInterfaceTable::~PyIGlobalInterfaceTable() { } IGlobalInterfaceTable *PyIGlobalInterfaceTable::GetI(PyObject *self) { return (IGlobalInterfaceTable *)PyIUnknown::GetI(self); } PyObject *PyIGlobalInterfaceTable::RegisterInterfaceInGlobal(PyObject *self, PyObject *args) { PyObject *obpUnk = NULL; PyObject *obriid = NULL; IUnknown * pUnk; IID riid; DWORD pdwCookie; PyObject *ppyobRetval = NULL; HRESULT hr; IGlobalInterfaceTable *pIGIT = GetI(self); if ( pIGIT == NULL ) { return NULL; } if (!PyArg_ParseTuple(args, "OO:RegisterInterfaceInGlobal", &obpUnk, &obriid) ) { return NULL; } BOOL bPythonIsHappy = TRUE; if (!PyCom_InterfaceFromPyInstanceOrObject(obpUnk, IID_IUnknown, (void **)&pUnk, TRUE /* bNoneOK */)) bPythonIsHappy = FALSE; if (!PyWinObject_AsIID(obriid, &riid)) bPythonIsHappy = FALSE; if(!bPythonIsHappy) { return NULL; } PY_INTERFACE_PRECALL; hr = pIGIT->RegisterInterfaceInGlobal( pUnk, riid, &pdwCookie ); if (pUnk) pUnk->Release(); PY_INTERFACE_POSTCALL; if ( FAILED(hr) ) { return PyCom_BuildPyException(hr, pIGIT, IID_IGlobalInterfaceTable ); } ppyobRetval = Py_BuildValue("l", pdwCookie); return ppyobRetval; } PyObject *PyIGlobalInterfaceTable::RevokeInterfaceFromGlobal(PyObject *self, PyObject *args) { DWORD dwCookie; HRESULT hr; IGlobalInterfaceTable *pIGIT = GetI(self); if ( pIGIT == NULL ) { return NULL; } if (!PyArg_ParseTuple(args, "l:RevokeInterfaceFromGlobal", &dwCookie) ) { return NULL; } PY_INTERFACE_PRECALL; hr = pIGIT->RevokeInterfaceFromGlobal( dwCookie ); PY_INTERFACE_POSTCALL; if ( FAILED(hr) ) { return PyCom_BuildPyException(hr, pIGIT, IID_IGlobalInterfaceTable ); } Py_INCREF(Py_None); return Py_None; } PyObject *PyIGlobalInterfaceTable::GetInterfaceFromGlobal(PyObject *self, PyObject *args) { PyObject *obriid = NULL; DWORD dwCookie; IID riid; void* ppv; HRESULT hr; IGlobalInterfaceTable *pIGIT = GetI(self); if ( pIGIT == NULL ) { return NULL; } if (!PyArg_ParseTuple(args, "lO:GetInterfaceFromGlobal", &dwCookie, &obriid) ) { return NULL; } BOOL bPythonIsHappy = TRUE; if (!PyWinObject_AsIID(obriid, &riid)) bPythonIsHappy = FALSE; if(!bPythonIsHappy) { return NULL; } PY_INTERFACE_PRECALL; hr = pIGIT->GetInterfaceFromGlobal( dwCookie, riid, &ppv ); PY_INTERFACE_POSTCALL; if ( FAILED(hr) ) { return PyCom_BuildPyException(hr, pIGIT, IID_IGlobalInterfaceTable ); } return PyCom_PyObjectFromIUnknown((IUnknown*)ppv, riid, FALSE); } static struct PyMethodDef PyIGlobalInterfaceTable_methods[] = { { "RegisterInterfaceInGlobal", PyIGlobalInterfaceTable::RegisterInterfaceInGlobal, 1 }, { "RevokeInterfaceFromGlobal", PyIGlobalInterfaceTable::RevokeInterfaceFromGlobal, 1 }, { "GetInterfaceFromGlobal", PyIGlobalInterfaceTable::GetInterfaceFromGlobal, 1 }, { NULL } }; PyComTypeObject PyIGlobalInterfaceTable::type("PyIGlobalInterfaceTable", &PyIUnknown::type, sizeof(PyIGlobalInterfaceTable), PyIGlobalInterfaceTable_methods, GET_PYCOM_CTOR(PyIGlobalInterfaceTable)); |