summaryrefslogtreecommitdiff
path: root/matlab/src/IceMatlab/InputStream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'matlab/src/IceMatlab/InputStream.cpp')
-rw-r--r--matlab/src/IceMatlab/InputStream.cpp224
1 files changed, 13 insertions, 211 deletions
diff --git a/matlab/src/IceMatlab/InputStream.cpp b/matlab/src/IceMatlab/InputStream.cpp
index 83c7173bcc5..afbc2d147a4 100644
--- a/matlab/src/IceMatlab/InputStream.cpp
+++ b/matlab/src/IceMatlab/InputStream.cpp
@@ -15,7 +15,7 @@
#include "InputStream.h"
#include "Util.h"
-#define SELF (reinterpret_cast<IceMatlab::InputStreamData*>(self))
+#define SELF (reinterpret_cast<InputStreamData*>(self))
using namespace std;
using namespace IceMatlab;
@@ -23,6 +23,12 @@ using namespace IceMatlab;
namespace
{
+struct InputStreamData
+{
+ std::vector<Ice::Byte> data;
+ Ice::InputStream* in;
+};
+
template<typename T>
mxArray*
readSeq(Ice::InputStream* in, mxClassID cls)
@@ -46,51 +52,6 @@ readSeq(Ice::InputStream* in, mxClassID cls)
return 0;
}
-template<typename T>
-mxArray*
-readOpt(Ice::InputStream* in, int tag, mxClassID cls)
-{
- try
- {
- Ice::optional<T> opt;
- in->read(tag, opt);
- if(opt.has_value())
- {
- mxArray* r = mxCreateUninitNumericMatrix(1, 1, cls, mxREAL);
- *(reinterpret_cast<T*>(mxGetData(r))) = opt.value();
- return createResultValue(r);
- }
- }
- catch(const std::exception& ex)
- {
- return createResultException(convertException(ex));
- }
- return 0;
-}
-
-template<typename T>
-mxArray*
-readSeqOpt(Ice::InputStream* in, int tag, mxClassID cls)
-{
- try
- {
- Ice::optional<pair<const T*, const T*>> opt;
- in->read(tag, opt);
- const size_t sz = opt.value().second - opt.value().first;
- if(opt.has_value() && sz > 0)
- {
- mxArray* r = mxCreateUninitNumericMatrix(1, sz / sizeof(T), cls, mxREAL);
- memcpy(reinterpret_cast<T*>(mxGetData(r)), opt.value().first, sz);
- return createResultValue(r);
- }
- }
- catch(const std::exception& ex)
- {
- return createResultException(convertException(ex));
- }
- return 0;
-}
-
}
void*
@@ -153,47 +114,6 @@ Ice_InputStream_readBoolSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readBoolOpt(void* self, int tag)
-{
- try
- {
- Ice::optional<bool> opt;
- SELF->in->read(tag, opt);
- if(opt.has_value())
- {
- return createResultValue(mxCreateLogicalScalar(opt.value()));
- }
- }
- catch(const std::exception& ex)
- {
- return createResultException(convertException(ex));
- }
- return 0;
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readBoolSeqOpt(void* self, int tag)
-{
- try
- {
- Ice::optional<pair<const bool*, const bool*>> opt;
- SELF->in->read(tag, opt);
- const size_t sz = opt.value().second - opt.value().first;
- if(opt.has_value() && sz > 0)
- {
- mxArray* r = mxCreateLogicalMatrix(1, sz);
- memcpy(mxGetLogicals(r), opt.value().first, sz);
- return createResultValue(r);
- }
- }
- catch(const std::exception& ex)
- {
- return createResultException(convertException(ex));
- }
- return 0;
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readByte(void* self, unsigned char* v)
{
try
@@ -216,18 +136,6 @@ Ice_InputStream_readByteSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readByteOpt(void* self, int tag)
-{
- return readOpt<Ice::Byte>(SELF->in, tag, mxUINT8_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readByteSeqOpt(void* self, int tag)
-{
- return readSeqOpt<Ice::Byte>(SELF->in, tag, mxUINT8_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readShort(void* self, short* v)
{
try
@@ -248,18 +156,6 @@ Ice_InputStream_readShortSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readShortOpt(void* self, int tag)
-{
- return readOpt<short>(SELF->in, tag, mxINT16_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readShortSeqOpt(void* self, int tag)
-{
- return readSeqOpt<short>(SELF->in, tag, mxINT16_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readInt(void* self, int* v)
{
try
@@ -280,18 +176,6 @@ Ice_InputStream_readIntSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readIntOpt(void* self, int tag)
-{
- return readOpt<int>(SELF->in, tag, mxINT32_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readIntSeqOpt(void* self, int tag)
-{
- return readSeqOpt<int>(SELF->in, tag, mxINT32_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readLong(void* self, long long* v)
{
try
@@ -312,18 +196,6 @@ Ice_InputStream_readLongSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readLongOpt(void* self, int tag)
-{
- return readOpt<long long>(SELF->in, tag, mxINT64_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readLongSeqOpt(void* self, int tag)
-{
- return readSeqOpt<long long>(SELF->in, tag, mxINT64_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readFloat(void* self, float* v)
{
try
@@ -344,18 +216,6 @@ Ice_InputStream_readFloatSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readFloatOpt(void* self, int tag)
-{
- return readOpt<float>(SELF->in, tag, mxSINGLE_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readFloatSeqOpt(void* self, int tag)
-{
- return readSeqOpt<float>(SELF->in, tag, mxSINGLE_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readDouble(void* self, double* v)
{
try
@@ -376,18 +236,6 @@ Ice_InputStream_readDoubleSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readDoubleOpt(void* self, int tag)
-{
- return readOpt<double>(SELF->in, tag, mxDOUBLE_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readDoubleSeqOpt(void* self, int tag)
-{
- return readSeqOpt<double>(SELF->in, tag, mxDOUBLE_CLASS);
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_readString(void* self)
{
string s;
@@ -419,43 +267,6 @@ Ice_InputStream_readStringSeq(void* self)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readStringOpt(void* self, int tag)
-{
- try
- {
- Ice::optional<string> opt;
- SELF->in->read(tag, opt);
- if(opt.has_value())
- {
- return createResultValue(createStringFromUTF8(opt.value()));
- }
- }
- catch(const std::exception& ex)
- {
- return createResultException(convertException(ex));
- }
- return 0;
-}
-
-EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readStringSeqOpt(void* self, int tag)
-{
- try
- {
- if(SELF->in->readOptional(tag, Ice::OptionalFormat::FSize))
- {
- SELF->in->skip(4);
- return Ice_InputStream_readStringSeq(self);
- }
- }
- catch(const std::exception& ex)
- {
- return createResultException(convertException(ex));
- }
- return 0;
-}
-
-EXPORTED_FUNCTION mxArray*
Ice_InputStream_skip(void* self, int n)
{
try
@@ -535,20 +346,11 @@ Ice_InputStream_readProxy(void* self, void** r)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readProxyOpt(void* self, int tag, void** r)
+Ice_InputStream_readEnum(void* self, int maxValue, int* r)
{
try
{
- Ice::optional<shared_ptr<Ice::ObjectPrx>> opt;
- SELF->in->readAll({tag}, opt);
- if(opt.has_value())
- {
- *r = new shared_ptr<Ice::ObjectPrx>(opt.value());
- }
- else
- {
- *r = 0;
- }
+ *r = SELF->in->readEnum(maxValue);
}
catch(const std::exception& ex)
{
@@ -558,11 +360,11 @@ Ice_InputStream_readProxyOpt(void* self, int tag, void** r)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_readEnum(void* self, int maxValue, int* r)
+Ice_InputStream_pos(void* self, unsigned int* pos)
{
try
{
- *r = SELF->in->readEnum(maxValue);
+ *pos = SELF->in->pos();
}
catch(const std::exception& ex)
{
@@ -572,11 +374,11 @@ Ice_InputStream_readEnum(void* self, int maxValue, int* r)
}
EXPORTED_FUNCTION mxArray*
-Ice_InputStream_pos(void* self, unsigned int* pos)
+Ice_InputStream_setPos(void* self, unsigned int pos)
{
try
{
- *pos = SELF->in->pos();
+ SELF->in->pos(pos);
}
catch(const std::exception& ex)
{