Back to index

lightning-sunbird  0.9+nobinonly
Functions | Variables
PyIInterfaceInfoManager.cpp File Reference
#include "PyXPCOM_std.h"
#include <nsIInterfaceInfoManager.h>

Go to the source code of this file.

Functions

static nsIInterfaceInfoManagerGetI (PyObject *self)
static PyObject * PyGetInfoForIID (PyObject *self, PyObject *args)
static PyObject * PyGetInfoForName (PyObject *self, PyObject *args)
static PyObject * PyGetNameForIID (PyObject *self, PyObject *args)
static PyObject * PyGetIIDForName (PyObject *self, PyObject *args)
static PyObject * PyEnumerateInterfaces (PyObject *self, PyObject *args)

Variables

PyMethodDef PyMethods_IInterfaceInfoManager []

Function Documentation

static nsIInterfaceInfoManager* GetI ( PyObject *  self) [static]

Definition at line 52 of file PyIInterfaceInfoManager.cpp.

                                                     {
       nsIID iid = NS_GET_IID(nsIInterfaceInfoManager);

       if (!Py_nsISupports::Check(self, iid)) {
              PyErr_SetString(PyExc_TypeError, "This object is not the correct interface");
              return NULL;
       }
       return (nsIInterfaceInfoManager *)Py_nsISupports::GetI(self);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static PyObject* PyEnumerateInterfaces ( PyObject *  self,
PyObject *  args 
) [static]

Definition at line 165 of file PyIInterfaceInfoManager.cpp.

{
       if (!PyArg_ParseTuple(args, ""))
              return NULL;

       nsIInterfaceInfoManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIEnumerator *pRet;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->EnumerateInterfaces(&pRet);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       return Py_nsISupports::PyObjectFromInterface(pRet, NS_GET_IID(nsIEnumerator), PR_FALSE);
}

Here is the call graph for this function:

static PyObject* PyGetIIDForName ( PyObject *  self,
PyObject *  args 
) [static]

Definition at line 142 of file PyIInterfaceInfoManager.cpp.

{
       char *name;
       if (!PyArg_ParseTuple(args, "s", &name))
              return NULL;

       nsIInterfaceInfoManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIID *iid_ret;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->GetIIDForName(name, &iid_ret);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       PyObject *ret = Py_nsIID::PyObjectFromIID(*iid_ret);
       nsMemory::Free(iid_ret);
       return ret;
}

Here is the call graph for this function:

static PyObject* PyGetInfoForIID ( PyObject *  self,
PyObject *  args 
) [static]

Definition at line 62 of file PyIInterfaceInfoManager.cpp.

{
       PyObject *obIID = NULL;
       if (!PyArg_ParseTuple(args, "O", &obIID))
              return NULL;

       nsIInterfaceInfoManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIID iid;
       if (!Py_nsIID::IIDFromPyObject(obIID, &iid))
              return NULL;

       nsIInterfaceInfo *pi;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->GetInfoForIID(&iid, &pi);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       /* Return a type based on the IID (with no extra ref) */
       nsIID new_iid = NS_GET_IID(nsIInterfaceInfo);
       // Can not auto-wrap the interface info manager as it is critical to
       // building the support we need for autowrap.
       return Py_nsISupports::PyObjectFromInterface(pi, new_iid, PR_FALSE, PR_FALSE);
}

Here is the call graph for this function:

static PyObject* PyGetInfoForName ( PyObject *  self,
PyObject *  args 
) [static]

Definition at line 91 of file PyIInterfaceInfoManager.cpp.

{
       char *name;
       if (!PyArg_ParseTuple(args, "s", &name))
              return NULL;

       nsIInterfaceInfoManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIInterfaceInfo *pi;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->GetInfoForName(name, &pi);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       /* Return a type based on the IID (with no extra ref) */
       // Can not auto-wrap the interface info manager as it is critical to
       // building the support we need for autowrap.
       return Py_nsISupports::PyObjectFromInterface(pi, NS_GET_IID(nsIInterfaceInfo), PR_FALSE, PR_FALSE);
}

Here is the call graph for this function:

static PyObject* PyGetNameForIID ( PyObject *  self,
PyObject *  args 
) [static]

Definition at line 115 of file PyIInterfaceInfoManager.cpp.

{
       PyObject *obIID = NULL;
       if (!PyArg_ParseTuple(args, "O", &obIID))
              return NULL;

       nsIInterfaceInfoManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIID iid;
       if (!Py_nsIID::IIDFromPyObject(obIID, &iid))
              return NULL;

       char *ret_name = NULL;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->GetNameForIID(&iid, &ret_name);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       PyObject *ret = PyString_FromString(ret_name);
       nsMemory::Free(ret_name);
       return ret;
}

Here is the call graph for this function:


Variable Documentation

Initial value:
{
       { "GetInfoForIID", PyGetInfoForIID, 1},
       { "getInfoForIID", PyGetInfoForIID, 1},
       { "GetInfoForName", PyGetInfoForName, 1},
       { "getInfoForName", PyGetInfoForName, 1},
       { "GetIIDForName", PyGetIIDForName, 1},
       { "getIIDForName", PyGetIIDForName, 1},
       { "GetNameForIID", PyGetNameForIID, 1},
       { "getNameForIID", PyGetNameForIID, 1},
       { "EnumerateInterfaces", PyEnumerateInterfaces, 1},
       { "enumerateInterfaces", PyEnumerateInterfaces, 1},
       {NULL}
}

Definition at line 189 of file PyIInterfaceInfoManager.cpp.