diff options
author | Mark Spruiell <mes@zeroc.com> | 2005-02-08 22:10:01 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2005-02-08 22:10:01 +0000 |
commit | c79a843b280cb8cc9559126b76e4f8b8ee3a651c (patch) | |
tree | 5618e1380944dc1fb564f4cc5d67189fd44ee037 /py/modules/IcePy/ObjectAdapter.cpp | |
parent | removing Slice translation for Glacier (diff) | |
download | ice-c79a843b280cb8cc9559126b76e4f8b8ee3a651c.tar.bz2 ice-c79a843b280cb8cc9559126b76e4f8b8ee3a651c.tar.xz ice-c79a843b280cb8cc9559126b76e4f8b8ee3a651c.zip |
updating Ice::Connection for bidir
Diffstat (limited to 'py/modules/IcePy/ObjectAdapter.cpp')
-rw-r--r-- | py/modules/IcePy/ObjectAdapter.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/py/modules/IcePy/ObjectAdapter.cpp b/py/modules/IcePy/ObjectAdapter.cpp index 4c5477d7919..c1299178cd6 100644 --- a/py/modules/IcePy/ObjectAdapter.cpp +++ b/py/modules/IcePy/ObjectAdapter.cpp @@ -1431,3 +1431,44 @@ IcePy::createObjectAdapter(const Ice::ObjectAdapterPtr& adapter) } return (PyObject*)obj; } + +Ice::ObjectAdapterPtr +IcePy::getObjectAdapter(PyObject* obj) +{ + assert(PyObject_IsInstance(obj, (PyObject*)&ObjectAdapterType)); + ObjectAdapterObject* oaobj = (ObjectAdapterObject*)obj; + return *oaobj->adapter; +} + +PyObject* +IcePy::wrapObjectAdapter(const Ice::ObjectAdapterPtr& adapter) +{ + // + // Create an Ice.ObjectAdapter wrapper for IcePy.ObjectAdapter. + // + PyObjectHandle adapterI = createObjectAdapter(adapter); + if(adapterI.get() == NULL) + { + return NULL; + } + PyObject* wrapperType = lookupType("Ice.ObjectAdapterI"); + assert(wrapperType != NULL); + PyObjectHandle args = PyTuple_New(1); + if(args.get() == NULL) + { + return NULL; + } + PyTuple_SET_ITEM(args.get(), 0, adapterI.release()); + return PyObject_Call(wrapperType, args.get(), NULL); +} + +Ice::ObjectAdapterPtr +IcePy::unwrapObjectAdapter(PyObject* obj) +{ + PyObject* wrapperType = lookupType("Ice.ObjectAdapterI"); + assert(wrapperType != NULL); + assert(PyObject_IsInstance(obj, wrapperType)); + PyObjectHandle impl = PyObject_GetAttrString(obj, "_impl"); + assert(impl.get() != NULL); + return getObjectAdapter(impl.get()); +} |