summaryrefslogtreecommitdiff
path: root/matlab/src/IceMatlab/Communicator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'matlab/src/IceMatlab/Communicator.cpp')
-rw-r--r--matlab/src/IceMatlab/Communicator.cpp81
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