summaryrefslogtreecommitdiff
path: root/matlab/src
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2018-02-08 17:23:26 +0100
committerJose <jose@zeroc.com>2018-02-08 17:23:26 +0100
commit41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c (patch)
tree92eda1d6156d91d4bfce18f8fc06820af1e401ff /matlab/src
parentRemove old files (diff)
parentFixed matlab check for testing (diff)
downloadice-41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c.tar.bz2
ice-41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c.tar.xz
ice-41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c.zip
Merge branch '3.7' of github.com:zeroc-ice/ice into 3.7
Diffstat (limited to 'matlab/src')
-rw-r--r--matlab/src/ObjectPrx.cpp45
-rw-r--r--matlab/src/Util.cpp15
-rw-r--r--matlab/src/Util.h1
-rw-r--r--matlab/src/ice.h3
4 files changed, 64 insertions, 0 deletions
diff --git a/matlab/src/ObjectPrx.cpp b/matlab/src/ObjectPrx.cpp
index f7b2a5e842c..d6261c9269d 100644
--- a/matlab/src/ObjectPrx.cpp
+++ b/matlab/src/ObjectPrx.cpp
@@ -966,6 +966,20 @@ Ice_ObjectPrx_ice_compress(void* self, void** r, unsigned char b)
}
mxArray*
+Ice_ObjectPrx_ice_getCompress(void* self)
+{
+ auto v = deref<Ice::ObjectPrx>(self)->ice_getCompress();
+ if(v.has_value())
+ {
+ return createResultValue(createOptionalValue(true, createBool(v.value())));
+ }
+ else
+ {
+ return createResultValue(createOptionalValue(false, 0));
+ }
+}
+
+mxArray*
Ice_ObjectPrx_ice_timeout(void* self, void** r, int t)
{
try
@@ -982,6 +996,37 @@ Ice_ObjectPrx_ice_timeout(void* self, void** r, int t)
}
mxArray*
+Ice_ObjectPrx_ice_getTimeout(void* self)
+{
+ auto v = deref<Ice::ObjectPrx>(self)->ice_getTimeout();
+ if(v.has_value())
+ {
+ return createResultValue(createOptionalValue(true, createInt(v.value())));
+ }
+ else
+ {
+ return createResultValue(createOptionalValue(false, 0));
+ }
+}
+
+mxArray*
+Ice_ObjectPrx_ice_fixed(void* self, void** r, void* connection)
+{
+ assert(connection); // Wrapper only calls this function for non-nil arguments.
+ try
+ {
+ auto proxy = deref<Ice::ObjectPrx>(self);
+ auto newProxy = proxy->ice_fixed(deref<Ice::Connection>(connection));
+ *r = newProxy == proxy ? 0 : new shared_ptr<Ice::ObjectPrx>(move(newProxy));
+ }
+ catch(const std::exception& ex)
+ {
+ return convertException(ex);
+ }
+ return 0;
+}
+
+mxArray*
Ice_ObjectPrx_ice_getConnection(void* self, void** r)
{
*r = 0;
diff --git a/matlab/src/Util.cpp b/matlab/src/Util.cpp
index 2ddc7e6dc1d..3e1e92998ac 100644
--- a/matlab/src/Util.cpp
+++ b/matlab/src/Util.cpp
@@ -535,6 +535,21 @@ IceMatlab::createResultException(mxArray* ex)
return r;
}
+static const char* optionalFields[] = {"hasValue", "value"};
+
+mxArray*
+IceMatlab::createOptionalValue(bool hasValue, mxArray* value)
+{
+ mwSize dims[2] = {1, 1};
+ auto r = mxCreateStructArray(2, dims, 2, optionalFields);
+ mxSetFieldByNumber(r, 0, 0, createBool(hasValue));
+ if(hasValue)
+ {
+ mxSetFieldByNumber(r, 0, 1, value);
+ }
+ return r;
+}
+
mxArray*
IceMatlab::createStringList(const vector<string>& v)
{
diff --git a/matlab/src/Util.h b/matlab/src/Util.h
index a29b3c78987..89b5f38e30f 100644
--- a/matlab/src/Util.h
+++ b/matlab/src/Util.h
@@ -39,6 +39,7 @@ void getEncodingVersion(mxArray*, Ice::EncodingVersion&);
mxArray* convertException(const std::exception&);
mxArray* createResultValue(mxArray*);
mxArray* createResultException(mxArray*);
+mxArray* createOptionalValue(bool, mxArray*);
mxArray* createStringList(const std::vector<std::string>&);
void getStringList(mxArray*, std::vector<std::string>&);
mxArray* createByteArray(const Ice::Byte*, const Ice::Byte*);
diff --git a/matlab/src/ice.h b/matlab/src/ice.h
index 08a4ddb4947..7d47d4ed5f0 100644
--- a/matlab/src/ice.h
+++ b/matlab/src/ice.h
@@ -103,7 +103,10 @@ ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_datagram(void*, void**);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_isBatchDatagram(void*);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_batchDatagram(void*, void**);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_compress(void*, void**, unsigned char);
+ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_getCompress(void*);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_timeout(void*, void**, int);
+ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_getTimeout(void*);
+ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_fixed(void*, void**, void*);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_getConnection(void*, void**);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_getConnectionAsync(void*, void**);
ICE_MATLAB_API mxArray* Ice_ObjectPrx_ice_getCachedConnection(void*, void**);