diff options
Diffstat (limited to 'matlab/src/IceMatlab/Communicator.cpp')
-rw-r--r-- | matlab/src/IceMatlab/Communicator.cpp | 81 |
1 files changed, 80 insertions, 1 deletions
diff --git a/matlab/src/IceMatlab/Communicator.cpp b/matlab/src/IceMatlab/Communicator.cpp index 0d4208bf9f9..a9a0b02c98f 100644 --- a/matlab/src/IceMatlab/Communicator.cpp +++ b/matlab/src/IceMatlab/Communicator.cpp @@ -13,6 +13,7 @@ #include <Ice/Proxy.h> #include <Ice/OutputStream.h> #include "icematlab.h" +#include "ObjectPrx.h" #include "Util.h" #define SELF (*(reinterpret_cast<shared_ptr<Ice::Communicator>*>(self))) @@ -31,12 +32,57 @@ Ice_Communicator__release(void* self) } EXPORTED_FUNCTION mxArray* +Ice_Communicator_identityToString(void* self, mxArray* id) +{ + try + { + Ice::Identity ident; + getIdentity(id, ident); + return createResultValue(createStringFromUTF8(SELF->identityToString(ident))); + } + catch(const std::exception& ex) + { + return createResultException(convertException(ex)); + } + return 0; +} + +EXPORTED_FUNCTION mxArray* Ice_Communicator_stringToProxy(void* self, const char* s, void** proxy) { try { shared_ptr<Ice::ObjectPrx> p = SELF->stringToProxy(s); - *proxy = new shared_ptr<Ice::ObjectPrx>(p); + if(p) + { + *proxy = new shared_ptr<Ice::ObjectPrx>(p); + } + else + { + *proxy = 0; + } + } + catch(const std::exception& ex) + { + return convertException(ex); + } + return 0; +} + +EXPORTED_FUNCTION mxArray* +Ice_Communicator_propertyToProxy(void* self, const char* prop, void** proxy) +{ + try + { + shared_ptr<Ice::ObjectPrx> p = SELF->propertyToProxy(prop); + if(p) + { + *proxy = new shared_ptr<Ice::ObjectPrx>(p); + } + else + { + *proxy = 0; + } } catch(const std::exception& ex) { @@ -46,6 +92,39 @@ Ice_Communicator_stringToProxy(void* self, const char* s, void** proxy) } EXPORTED_FUNCTION mxArray* +Ice_Communicator_proxyToProperty(void* self, void* proxy, const char* prop) +{ + assert(proxy); + try + { + shared_ptr<Ice::ObjectPrx> p = getProxy(proxy); + Ice::PropertyDict d = SELF->proxyToProperty(p, prop); + return createResultValue(createStringMap(d)); + } + catch(const std::exception& ex) + { + return createResultException(convertException(ex)); + } + return 0; +} + +EXPORTED_FUNCTION mxArray* +Ice_Communicator_proxyToString(void* self, void* proxy) +{ + assert(proxy); + try + { + shared_ptr<Ice::ObjectPrx> p = getProxy(proxy); + return createResultValue(createStringFromUTF8(SELF->proxyToString(p))); + } + catch(const std::exception& ex) + { + return createResultException(convertException(ex)); + } + return 0; +} + +EXPORTED_FUNCTION mxArray* Ice_Communicator_getProperties(void* self, void** props) { try |