diff options
author | Jose <jose@zeroc.com> | 2018-02-08 17:23:26 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2018-02-08 17:23:26 +0100 |
commit | 41a4ea50bba42cd4585244f5a8e3ccbc6c20da4c (patch) | |
tree | 92eda1d6156d91d4bfce18f8fc06820af1e401ff /matlab/src | |
parent | Remove old files (diff) | |
parent | Fixed matlab check for testing (diff) | |
download | ice-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.cpp | 45 | ||||
-rw-r--r-- | matlab/src/Util.cpp | 15 | ||||
-rw-r--r-- | matlab/src/Util.h | 1 | ||||
-rw-r--r-- | matlab/src/ice.h | 3 |
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**); |