Fix bug 347865 (PyXPCOM fails to build on alpha) on trunk.

Not part of the default build.


git-svn-id: svn://10.0.0.236/trunk@206970 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mhammond%skippinet.com.au 2006-08-09 13:37:38 +00:00
parent a6a536f245
commit 12cadc12fc
2 changed files with 0 additions and 100 deletions

View File

@ -603,101 +603,6 @@ nsresult PyG_Base::InvokeNativeViaPolicy(
return nr == NS_OK ? NS_OK : HandleNativeGatewayError(szMethodName);
}
nsresult PyG_Base::InvokeNativeGetViaPolicy(
const char *szPropertyName,
PyObject **ppResult /* = NULL */
)
{
PyObject *ob_ret = NULL;
nsresult ret = NS_OK;
PyObject *real_ob = NULL;
if ( m_pPyObject == NULL || szPropertyName == NULL )
return NS_ERROR_NULL_POINTER;
// First see if we have a method of that name.
char buf[256];
strcpy(buf, "get_");
strncat(buf, szPropertyName, sizeof(buf)*sizeof(buf[0])-strlen(buf)-1);
buf[sizeof(buf)/sizeof(buf[0])-1] = '\0';
ret = InvokeNativeViaPolicyInternal(buf, ppResult, nsnull, nsnull);
if (ret == NS_PYXPCOM_NO_SUCH_METHOD) {
// No method of that name - just try a property.
// Bit to a hack here to maintain the use of a policy.
// We actually get the policies underlying object
// to make the call on.
real_ob = PyObject_GetAttrString(m_pPyObject, "_obj_");
if (real_ob == NULL) {
PyErr_Format(PyExc_AttributeError, "The policy object does not have an '_obj_' attribute.");
ret = HandleNativeGatewayError(szPropertyName);
goto done;
}
ob_ret = PyObject_GetAttrString(real_ob, (char *)szPropertyName);
if (ob_ret==NULL) {
PyErr_Format(PyExc_AttributeError,
"The object does not have a 'get_%s' function, or a '%s attribute.",
szPropertyName, szPropertyName);
} else {
ret = NS_OK;
if (ppResult)
*ppResult = ob_ret;
else
Py_XDECREF(ob_ret);
}
}
if (ret != NS_OK)
ret = HandleNativeGatewayError(szPropertyName);
done:
Py_XDECREF(real_ob);
return ret;
}
nsresult PyG_Base::InvokeNativeSetViaPolicy(
const char *szPropertyName,
...
)
{
if ( m_pPyObject == NULL || szPropertyName == NULL )
return NS_ERROR_NULL_POINTER;
nsresult ret = NS_OK;
PyObject *real_ob = NULL;
char buf[256];
strcpy(buf, "set_");
strncat(buf, szPropertyName, sizeof(buf)*sizeof(buf[0])-strlen(buf)-1);
buf[sizeof(buf)/sizeof(buf[0])-1] = '\0';
va_list va;
va_start(va, szPropertyName);
ret = InvokeNativeViaPolicyInternal(buf, NULL, "O", va);
va_end(va);
if (ret == NS_PYXPCOM_NO_SUCH_METHOD) {
// No method of that name - just try a property.
// Bit to a hack here to maintain the use of a policy.
// We actually get the policies underlying object
// to make the call on.
real_ob = PyObject_GetAttrString(m_pPyObject, "_obj_");
if (real_ob == NULL) {
PyErr_Format(PyExc_AttributeError, "The policy object does not have an '_obj_' attribute.");
ret = HandleNativeGatewayError(szPropertyName);
goto done;
}
va_list va2;
va_start(va2, szPropertyName);
PyObject *arg = va_arg( va2, PyObject *);
va_end(va2);
if (PyObject_SetAttrString(real_ob, (char *)szPropertyName, arg) == 0)
ret = NS_OK;
else {
PyErr_Format(PyExc_AttributeError,
"The object does not have a 'set_%s' function, or a '%s attribute.",
szPropertyName, szPropertyName);
}
}
if (ret != NS_OK)
ret = HandleNativeGatewayError(szPropertyName);
done:
Py_XDECREF(real_ob);
return ret;
}
// Get at the underlying Python object.
PyObject *PyG_Base::UnwrapPythonObject(void)
{

View File

@ -478,11 +478,6 @@ protected:
PyObject **ppResult,
const char *szFormat,
va_list va);
nsresult InvokeNativeGetViaPolicy(const char *szPropertyName,
PyObject **ppResult = NULL
);
nsresult InvokeNativeSetViaPolicy(const char *szPropertyName,
...);
};
class PYXPCOM_EXPORT PyXPCOM_XPTStub : public PyG_Base, public nsXPTCStubBase