Back to index

lightning-sunbird  0.9+nobinonly
Functions
PyIComponentManager.cpp File Reference
#include "PyXPCOM_std.h"

Go to the source code of this file.

Functions

static nsIComponentManagerGetI (PyObject *self)
static PyObject * PyCreateInstanceByContractID (PyObject *self, PyObject *args)
static PyObject * PyCreateInstance (PyObject *self, PyObject *args)

Function Documentation

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

Definition at line 50 of file PyIComponentManager.cpp.

                                                 {
       static const nsIID iid = NS_GET_IID(nsIComponentManager);

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 96 of file PyIComponentManager.cpp.

{
       char *notyet = NULL;
       PyObject *obClassID = NULL, *obIID = NULL;
       if (!PyArg_ParseTuple(args, "O|zO", &obClassID, &notyet, &obIID))
              return NULL;
       if (notyet != NULL) {
              PyErr_SetString(PyExc_ValueError, "2nd arg must be none");
              return NULL;
       }
       nsIComponentManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIID classID;
       if (!Py_nsIID::IIDFromPyObject(obClassID, &classID))
              return NULL;
       nsIID  iid;
       if (obIID==NULL)
              iid = NS_GET_IID(nsISupports);
       else
              if (!Py_nsIID::IIDFromPyObject(obIID, &iid))
                     return NULL;

       nsISupports *pis;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->CreateInstance(classID, NULL, iid, (void **)&pis);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       /* Return a type based on the IID (with no extra ref) */
       return Py_nsISupports::PyObjectFromInterface(pis, iid, PR_FALSE, PR_FALSE);
}

Here is the call graph for this function:

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

Definition at line 60 of file PyIComponentManager.cpp.

{
       // second arg to CreateInstanceByContractID is a "delegate" - we
       // aren't sure of the semantics of this yet and it seems rarely used,
       // so we just punt for now.
       char *pid, *notyet = NULL;
       PyObject *obIID = NULL;
       if (!PyArg_ParseTuple(args, "s|zO", &pid, &notyet, &obIID))
              return NULL;
       if (notyet != NULL) {
              PyErr_SetString(PyExc_ValueError, "2nd arg must be none");
              return NULL;
       }
       nsIComponentManager *pI = GetI(self);
       if (pI==NULL)
              return NULL;

       nsIID  iid;
       if (obIID==NULL)
              iid = NS_GET_IID(nsISupports);
       else
              if (!Py_nsIID::IIDFromPyObject(obIID, &iid))
                     return NULL;

       nsISupports *pis;
       nsresult r;
       Py_BEGIN_ALLOW_THREADS;
       r = pI->CreateInstanceByContractID(pid, NULL, iid, (void **)&pis);
       Py_END_ALLOW_THREADS;
       if ( NS_FAILED(r) )
              return PyXPCOM_BuildPyException(r);

       /* Return a type based on the IID (with no extra ref) */
       return Py_nsISupports::PyObjectFromInterface(pis, iid, PR_FALSE, PR_FALSE);
}

Here is the call graph for this function: