summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2016-06-20 23:59:08 +0000
committerBernard Normier <bernard@zeroc.com>2016-06-21 00:00:09 +0000
commit7cc7982f3cb6426812beb73584ffe0e4d7662a4a (patch)
tree22721f9c4b07b7e42f338937ac7e7e04dc6b954e
parentC++11 AMI custom mapping support (diff)
downloadice-7cc7982f3cb6426812beb73584ffe0e4d7662a4a.tar.bz2
ice-7cc7982f3cb6426812beb73584ffe0e4d7662a4a.tar.xz
ice-7cc7982f3cb6426812beb73584ffe0e4d7662a4a.zip
Improved InputStream and OutputStream in C++11
-rw-r--r--cpp/include/Ice/InputStream.h179
-rw-r--r--cpp/include/Ice/OutputStream.h38
-rw-r--r--cpp/include/Ice/StreamHelpers.h24
-rw-r--r--cpp/include/IceUtil/ScopedArray.h16
-rw-r--r--cpp/src/Ice/InputStream.cpp244
-rw-r--r--cpp/src/Slice/CPlusPlusUtil.cpp267
-rw-r--r--cpp/src/Slice/CPlusPlusUtil.h18
-rw-r--r--cpp/src/slice2cpp/Gen.cpp138
-rw-r--r--cpp/test/Ice/custom/AllTests.cpp149
-rw-r--r--cpp/test/Ice/custom/CustomBuffer.h23
-rw-r--r--cpp/test/Ice/custom/Makefile.mk2
-rw-r--r--cpp/test/Ice/custom/StringView.h25
-rw-r--r--cpp/test/Ice/custom/TestAMDI.cpp34
-rw-r--r--cpp/test/Ice/custom/TestAMDI.h20
-rw-r--r--cpp/test/Ice/custom/TestI.cpp73
-rw-r--r--cpp/test/Ice/custom/TestI.h38
-rw-r--r--cpp/test/Ice/custom/msbuild/client/client.vcxproj12
-rw-r--r--cpp/test/Ice/custom/msbuild/collocated/collocated.vcxproj12
-rw-r--r--cpp/test/Ice/custom/msbuild/server/server.vcxproj12
-rw-r--r--cpp/test/Ice/custom/msbuild/serveramd/serveramd.vcxproj12
20 files changed, 898 insertions, 438 deletions
diff --git a/cpp/include/Ice/InputStream.h b/cpp/include/Ice/InputStream.h
index b9525b385e4..062dfc850c0 100644
--- a/cpp/include/Ice/InputStream.h
+++ b/cpp/include/Ice/InputStream.h
@@ -97,6 +97,14 @@ public:
{
clear(); // Not inlined.
}
+
+#ifdef ICE_CPP11_MAPPING
+
+ for(auto d: _deleters)
+ {
+ d();
+ }
+#endif
}
//
@@ -386,6 +394,52 @@ public:
}
}
+#ifdef ICE_CPP11_MAPPING
+
+ template<typename T> void read(std::pair<const T*, const T*>& v)
+ {
+ auto holder = new std::vector<T>;
+ _deleters.push_back([holder] { delete holder; });
+ read(*holder);
+ if(holder->size() > 0)
+ {
+ v.first = holder->data();
+ v.second = holder->data() + holder->size();
+ }
+ else
+ {
+ v.first = 0;
+ v.second = 0;
+ }
+ }
+
+ template<typename T> void readAll(T& v)
+ {
+ read(v);
+ }
+
+ template<typename T, typename... Te> void readAll(T& v, Te&... ve)
+ {
+ read(v);
+ readAll(ve...);
+ }
+
+ template<typename T>
+ void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v)
+ {
+ read(*(tags.begin() + tags.size() - 1), v);
+ }
+
+ template<typename T, typename... Te>
+ void readAll(std::initializer_list<int> tags, IceUtil::Optional<T>& v, IceUtil::Optional<Te>&... ve)
+ {
+ size_t index = tags.size() - sizeof...(ve) - 1;
+ read(*(tags.begin() + index), v);
+ readAll(tags, ve...);
+ }
+
+#endif
+
// Read type and tag for optionals
bool readOptional(Int tag, OptionalFormat expectedFormat)
{
@@ -412,12 +466,14 @@ public:
void read(std::vector<Byte>&);
void read(std::pair<const Byte*, const Byte*>&);
+#ifndef ICE_CPP11_MAPPING
// This method is useful for generic stream helpers
void read(std::pair<const Byte*, const Byte*>& p, ::IceUtil::ScopedArray<Byte>& result)
{
result.reset();
read(p);
}
+#endif
// Bool
void read(bool& v)
@@ -429,12 +485,21 @@ public:
v = (0 != *i++);
}
void read(std::vector<bool>&);
+
+#ifdef ICE_CPP11_MAPPING
+ void read(std::pair<const bool*, const bool*>&);
+#else
void read(std::pair<const bool*, const bool*>&, ::IceUtil::ScopedArray<bool>&);
+#endif
// Short
void read(Short&);
void read(std::vector<Short>&);
+#ifdef ICE_CPP11_MAPPING
+ void read(std::pair<const short*, const short*>&);
+#else
void read(std::pair<const Short*, const Short*>&, ::IceUtil::ScopedArray<Short>&);
+#endif
// Int
void read(Int& v) // Inlined for performance reasons.
@@ -461,102 +526,52 @@ public:
}
void read(std::vector<Int>&);
+#ifdef ICE_CPP11_MAPPING
+ void read(std::pair<const int*, const int*>&);
+#else
void read(std::pair<const Int*, const Int*>&, ::IceUtil::ScopedArray<Int>&);
+#endif
// Long
void read(Long&);
void read(std::vector<Long>&);
+#ifdef ICE_CPP11_MAPPING
+ void read(std::pair<const long long*, const long long*>&);
+#else
void read(std::pair<const Long*, const Long*>&, ::IceUtil::ScopedArray<Long>&);
+#endif
// Float
void read(Float&);
void read(std::vector<Float>&);
+#ifdef ICE_CPP11_MAPPING
+ void read(std::pair<const float*, const float*>&);
+#else
void read(std::pair<const Float*, const Float*>&, ::IceUtil::ScopedArray<Float>&);
+#endif
// Double
void read(Double&);
void read(std::vector<Double>&);
+#ifdef ICE_CPP11_MAPPING
+ void read(std::pair<const double*, const double*>&);
+#else
void read(std::pair<const Double*, const Double*>&, ::IceUtil::ScopedArray<Double>&);
+#endif
// String
- void read(std::string& v, bool convert = true)
- {
- Int sz = readSize();
- if(sz > 0)
- {
- if(b.end() - i < sz)
- {
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
- }
- if(convert && _stringConverter)
- {
- readConverted(v, sz);
- }
- else
- {
- std::string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
- }
- i += sz;
- }
- else
- {
- v.clear();
- }
- }
+ void read(std::string& v, bool convert = true);
+#ifdef ICE_CPP11_MAPPING
+ void read(const char*& vdata, size_t& vsize, bool convert = true);
+#else
// For custom strings, convert = false
- void read(const char*& vdata, size_t& vsize)
- {
- Int sz = readSize();
- if(sz > 0)
- {
- if(b.end() - i < sz)
- {
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
- }
-
- vdata = reinterpret_cast<const char*>(&*i);
- vsize = static_cast<size_t>(sz);
- i += sz;
- }
- else
- {
- vdata = 0;
- vsize = 0;
- }
- }
+ void read(const char*& vdata, size_t& vsize);
// For custom strings, convert = true
- void read(const char*& vdata, size_t& vsize, std::string& holder)
- {
- if(!_stringConverter)
- {
- holder.clear();
- read(vdata, vsize);
- }
- else
- {
- Int sz = readSize();
- if(sz > 0)
- {
- if(b.end() - i < sz)
- {
- throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
- }
-
- readConverted(holder, sz);
- vdata = holder.data();
- vsize = holder.size();
- }
- else
- {
- holder.clear();
- vdata = 0;
- vsize = 0;
- }
- }
- }
+ void read(const char*& vdata, size_t& vsize, std::string& holder);
+#endif
void read(std::vector<std::string>&, bool = true);
@@ -692,12 +707,6 @@ private:
CompactIdResolverPtr compactIdResolver() const;
#endif
- //
- // Optimization. The instance may not be deleted while a
- // stack-allocated stream still holds it.
- //
- IceInternal::Instance* _instance;
-
typedef std::vector<ValuePtr> ValueList;
class ICE_API EncapsDecoder : private ::IceUtil::noncopyable
@@ -919,6 +928,13 @@ private:
Encaps* previous;
};
+
+ //
+ // Optimization. The instance may not be deleted while a
+ // stack-allocated stream still holds it.
+ //
+ IceInternal::Instance* _instance;
+
//
// The encoding version to use when there's no encapsulation to
// read from. This is for example used to read message headers.
@@ -953,6 +969,11 @@ private:
#else
CompactIdResolverPtr _compactIdResolver;
#endif
+
+#ifdef ICE_CPP11_MAPPING
+ std::vector<std::function<void()>> _deleters;
+#endif
+
};
} // End namespace Ice
diff --git a/cpp/include/Ice/OutputStream.h b/cpp/include/Ice/OutputStream.h
index db28f604b77..1a03c2e1737 100644
--- a/cpp/include/Ice/OutputStream.h
+++ b/cpp/include/Ice/OutputStream.h
@@ -289,6 +289,7 @@ public:
write(&v[0], &v[0] + v.size());
}
}
+
template<typename T> void write(const T* begin, const T* end)
{
writeSize(static_cast<Int>(end - begin));
@@ -298,6 +299,35 @@ public:
}
}
+#ifdef ICE_CPP11_MAPPING
+
+ template<typename T> void writeAll(const T& v)
+ {
+ write(v);
+ }
+
+ template<typename T, typename... Te> void writeAll(const T& v, const Te&... ve)
+ {
+ write(v);
+ writeAll(ve...);
+ }
+
+ template<typename T>
+ void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v)
+ {
+ write(*(tags.begin() + tags.size() - 1), v);
+ }
+
+ template<typename T, typename... Te>
+ void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v, const IceUtil::Optional<Te>&... ve)
+ {
+ size_t index = tags.size() - sizeof...(ve) - 1;
+ write(*(tags.begin() + index), v);
+ writeAll(tags, ve...);
+ }
+
+#endif
+
// Write type and tag for optionals
bool writeOptional(Int tag, OptionalFormat format)
{
@@ -358,13 +388,7 @@ public:
void write(const Int*, const Int*);
// Long
-
-#ifdef ICE_CPP11_MAPPING
- void write(long long int);
-#else
void write(Long);
-#endif
-
void write(const Long*, const Long*);
// Float
@@ -428,7 +452,7 @@ public:
// Proxy
#ifdef ICE_CPP11_MAPPING
- void writeProxy(const ObjectPrxPtr&);
+ void writeProxy(const ::std::shared_ptr<ObjectPrx>&);
template<typename T, typename ::std::enable_if<::std::is_base_of<ObjectPrx, T>::value>::type* = nullptr>
void write(const ::std::shared_ptr<T>& v)
diff --git a/cpp/include/Ice/StreamHelpers.h b/cpp/include/Ice/StreamHelpers.h
index 64023759f0c..9207b428b50 100644
--- a/cpp/include/Ice/StreamHelpers.h
+++ b/cpp/include/Ice/StreamHelpers.h
@@ -136,6 +136,17 @@ struct StreamableTraits<T, typename ::std::enable_if<::std::is_base_of<::Ice::Us
//
};
+//
+// StreamableTraits specialization for arrays (std::pair<const T*, const T*>).
+//
+template<typename T>
+struct StreamableTraits<std::pair<T*, T*>>
+{
+ static const StreamHelperCategory helper = StreamHelperCategorySequence;
+ static const int minWireSize = 1;
+ static const bool fixedLength = false;
+};
+
#else
//
@@ -175,7 +186,6 @@ struct StreamableTraits<UserException>
// and no optional UserException (so no need for fixedLength)
//
};
-#endif
//
// StreamableTraits specialization for array / range mapped sequences
@@ -189,6 +199,7 @@ struct StreamableTraits< ::std::pair<T, U> >
static const int minWireSize = 1;
static const bool fixedLength = false;
};
+#endif
//
// StreamableTraits specialization for builtins (these are needed for sequence
@@ -438,7 +449,7 @@ struct StreamHelper<T, StreamHelperCategorySequence>
}
};
-// Helper for array and range:array custom sequence parameters
+// Helper for array custom sequence parameters
template<typename T>
struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
{
@@ -455,6 +466,8 @@ struct StreamHelper<std::pair<const T*, const T*>, StreamHelperCategorySequence>
}
};
+#ifndef ICE_CPP11_MAPPING
+
// Helper for range custom sequence parameters
template<typename T>
struct StreamHelper<std::pair<T, T>, StreamHelperCategorySequence>
@@ -490,8 +503,6 @@ struct StreamHelper<std::pair< ::std::vector<bool>::const_iterator,
stream->write(static_cast<bool>(*p));
}
}
-
- // no read: only used for marshaling
};
// Helper for zero-copy array sequence parameters
@@ -506,6 +517,8 @@ struct StreamHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T*, const
// no write: only used for unmarshaling
};
+#endif
+
// Helper for dictionaries
template<typename T>
@@ -861,6 +874,8 @@ struct StreamOptionalHelper<std::pair<const T*, const T*>, StreamHelperCategoryS
}
};
+#ifndef ICE_CPP11_MAPPING
+
template<typename T>
struct StreamOptionalHelper<std::pair<T, T>, StreamHelperCategorySequence, false>
{
@@ -906,6 +921,7 @@ struct StreamOptionalHelper<std::pair<IceUtil::ScopedArray<T>, std::pair<const T
// no write: only used for unmarshaling
};
+#endif
//
// Helper to write dictionaries, delegates to the optional container
diff --git a/cpp/include/IceUtil/ScopedArray.h b/cpp/include/IceUtil/ScopedArray.h
index d3cc8dc59a5..594f9836a2e 100644
--- a/cpp/include/IceUtil/ScopedArray.h
+++ b/cpp/include/IceUtil/ScopedArray.h
@@ -12,15 +12,14 @@
#include <IceUtil/Config.h>
-namespace IceUtil
-{
-
-#ifdef ICE_CPP11_MAPPING
+#ifndef ICE_CPP11_MAPPING
-template<typename T>
-using ScopedArray = std::unique_ptr<T[]>;
+//
+// Only for the C++98 mapping
+//
-#else // C++98 mapping
+namespace IceUtil
+{
template<typename T>
class ScopedArray
@@ -99,8 +98,7 @@ private:
T* _ptr;
};
-#endif
-
} // End of namespace IceUtil
#endif
+#endif
diff --git a/cpp/src/Ice/InputStream.cpp b/cpp/src/Ice/InputStream.cpp
index bfba4b17eec..315de0e6c53 100644
--- a/cpp/src/Ice/InputStream.cpp
+++ b/cpp/src/Ice/InputStream.cpp
@@ -26,6 +26,12 @@
#include <IceUtil/StringConverter.h>
#include <iterator>
+#ifndef ICE_UNALIGNED
+# if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
+# define ICE_UNALIGNED
+# endif
+#endif
+
using namespace std;
using namespace Ice;
using namespace IceInternal;
@@ -500,6 +506,27 @@ struct ReadBoolHelper<1>
}
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(pair<const bool*, const bool*>& v)
+{
+ Int sz = readAndCheckSeqSize(1);
+ if(sz > 0)
+ {
+ auto boolArray = ReadBoolHelper<sizeof(bool)>::read(v, sz, i);
+ if(boolArray)
+ {
+ _deleters.push_back([boolArray] { delete[] boolArray; });
+ }
+ i += sz;
+ }
+ else
+ {
+ v.first = v.second = reinterpret_cast<bool*>(i);
+ }
+}
+
+#else
void
Ice::InputStream::read(pair<const bool*, const bool*>& v, IceUtil::ScopedArray<bool>& result)
{
@@ -515,6 +542,7 @@ Ice::InputStream::read(pair<const bool*, const bool*>& v, IceUtil::ScopedArray<b
v.first = v.second = reinterpret_cast<bool*>(i);
}
}
+#endif
void
Ice::InputStream::read(Short& v)
@@ -564,20 +592,32 @@ Ice::InputStream::read(vector<Short>& v)
}
}
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(pair<const short*, const short*>& v)
+#else
void
Ice::InputStream::read(pair<const Short*, const Short*>& v, IceUtil::ScopedArray<Short>& result)
+#endif
{
Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Short)));
if(sz > 0)
{
-#if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
+#ifdef ICE_UNALIGNED
v.first = reinterpret_cast<Short*>(i);
i += sz * static_cast<int>(sizeof(Short));
v.second = reinterpret_cast<Short*>(i);
#else
+# ifdef ICE_CPP11_MAPPING
+ auto result = new short[sz];
+ _deleters.push_back([result] { delete[] result; });
+ v.first = result;
+ v.second = result + sz;
+# else
result.reset(new Short[sz]);
v.first = result.get();
v.second = result.get() + sz;
+# endif
Container::iterator begin = i;
i += sz * static_cast<int>(sizeof(Short));
@@ -597,7 +637,9 @@ Ice::InputStream::read(pair<const Short*, const Short*>& v, IceUtil::ScopedArray
}
else
{
+#ifndef ICE_CPP11_MAPPING
result.reset();
+#endif
v.first = v.second = 0;
}
}
@@ -632,20 +674,33 @@ Ice::InputStream::read(vector<Int>& v)
}
}
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(pair<const Int*, const Int*>& v)
+#else
void
Ice::InputStream::read(pair<const Int*, const Int*>& v, ::IceUtil::ScopedArray<Int>& result)
+#endif
{
Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Int)));
if(sz > 0)
{
-#if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
+#ifdef ICE_UNALIGNED
v.first = reinterpret_cast<Int*>(i);
i += sz * static_cast<int>(sizeof(Int));
v.second = reinterpret_cast<Int*>(i);
#else
+
+# ifdef ICE_CPP11_MAPPING
+ auto result = new int[sz];
+ _deleters.push_back([result] { delete[] result; });
+ v.first = result;
+ v.second = result + sz;
+# else
result.reset(new Int[sz]);
v.first = result.get();
v.second = result.get() + sz;
+# endif
Container::iterator begin = i;
i += sz * static_cast<int>(sizeof(Int));
@@ -667,7 +722,9 @@ Ice::InputStream::read(pair<const Int*, const Int*>& v, ::IceUtil::ScopedArray<I
}
else
{
+#ifndef ICE_CPP11_MAPPING
result.reset();
+#endif
v.first = v.second = 0;
}
}
@@ -738,20 +795,33 @@ Ice::InputStream::read(vector<Long>& v)
}
}
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(pair<const Long*, const Long*>& v)
+#else
void
Ice::InputStream::read(pair<const Long*, const Long*>& v, IceUtil::ScopedArray<Long>& result)
+#endif
{
Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Long)));
if(sz > 0)
{
-#if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
+#ifdef ICE_UNALIGNED
v.first = reinterpret_cast<Long*>(i);
i += sz * static_cast<int>(sizeof(Long));
v.second = reinterpret_cast<Long*>(i);
#else
+
+# ifdef ICE_CPP11_MAPPING
+ auto result = new long long[sz];
+ _deleters.push_back([result] { delete[] result; });
+ v.first = result;
+ v.second = result + sz;
+# else
result.reset(new Long[sz]);
v.first = result.get();
v.second = result.get() + sz;
+# endif
Container::iterator begin = i;
i += sz * static_cast<int>(sizeof(Long));
@@ -777,7 +847,9 @@ Ice::InputStream::read(pair<const Long*, const Long*>& v, IceUtil::ScopedArray<L
}
else
{
+#ifndef ICE_CPP11_MAPPING
result.reset();
+#endif
v.first = v.second = 0;
}
}
@@ -836,20 +908,33 @@ Ice::InputStream::read(vector<Float>& v)
}
}
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(pair<const Float*, const Float*>& v)
+#else
void
Ice::InputStream::read(pair<const Float*, const Float*>& v, IceUtil::ScopedArray<Float>& result)
+#endif
{
Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Float)));
if(sz > 0)
{
-#if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
+#ifdef ICE_UNALIGNED
v.first = reinterpret_cast<Float*>(i);
i += sz * static_cast<int>(sizeof(Float));
v.second = reinterpret_cast<Float*>(i);
#else
+
+# ifdef ICE_CPP11_MAPPING
+ auto result = new float[sz];
+ _deleters.push_back([result] { delete[] result; });
+ v.first = result;
+ v.second = result + sz;
+# else
result.reset(new Float[sz]);
v.first = result.get();
v.second = result.get() + sz;
+# endif
Container::iterator begin = i;
i += sz * static_cast<int>(sizeof(Float));
@@ -871,7 +956,9 @@ Ice::InputStream::read(pair<const Float*, const Float*>& v, IceUtil::ScopedArray
}
else
{
+#ifndef ICE_CPP11_MAPPING
result.reset();
+#endif
v.first = v.second = 0;
}
}
@@ -968,20 +1055,34 @@ Ice::InputStream::read(vector<Double>& v)
}
}
+
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(pair<const Double*, const Double*>& v)
+#else
void
Ice::InputStream::read(pair<const Double*, const Double*>& v, IceUtil::ScopedArray<Double>& result)
+#endif
{
Int sz = readAndCheckSeqSize(static_cast<int>(sizeof(Double)));
if(sz > 0)
{
-#if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || defined(_M_X64)
+#ifdef ICE_UNALIGNED
v.first = reinterpret_cast<Double*>(i);
i += sz * static_cast<int>(sizeof(Double));
v.second = reinterpret_cast<Double*>(i);
#else
+
+# ifdef ICE_CPP11_MAPPING
+ auto result = new double[sz];
+ _deleters.push_back([result] { delete[] result; });
+ v.first = result;
+ v.second = result + sz;
+# else
result.reset(new Double[sz]);
v.first = result.get();
v.second = result.get() + sz;
+# endif
Container::iterator begin = i;
i += sz * static_cast<int>(sizeof(Double));
@@ -1023,12 +1124,145 @@ Ice::InputStream::read(pair<const Double*, const Double*>& v, IceUtil::ScopedArr
}
else
{
+#ifndef ICE_CPP11_MAPPING
result.reset();
+#endif
v.first = v.second = 0;
}
}
void
+Ice::InputStream::read(std::string& v, bool convert)
+{
+ Int sz = readSize();
+ if(sz > 0)
+ {
+ if(b.end() - i < sz)
+ {
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
+ }
+ if(convert && _stringConverter)
+ {
+ readConverted(v, sz);
+ }
+ else
+ {
+ string(reinterpret_cast<const char*>(&*i), reinterpret_cast<const char*>(&*i) + sz).swap(v);
+ }
+ i += sz;
+ }
+ else
+ {
+ v.clear();
+ }
+}
+
+#ifdef ICE_CPP11_MAPPING
+void
+Ice::InputStream::read(const char*& vdata, size_t& vsize, bool convert)
+{
+ int sz = readSize();
+ if(sz > 0)
+ {
+ if(b.end() - i < sz)
+ {
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
+ }
+
+ if(convert == false || !_stringConverter)
+ {
+ vdata = reinterpret_cast<const char*>(&*i);
+ vsize = static_cast<size_t>(sz);
+ i += sz;
+ }
+ else
+ {
+ string converted;
+ readConverted(converted, sz);
+ if(converted.size() <= static_cast<size_t>(sz))
+ {
+ //
+ // Write converted string directly into buffer
+ //
+ std::memcpy(i, converted.data(), converted.size());
+ vdata = reinterpret_cast<const char*>(&*i);
+ vsize = converted.size();
+ }
+ else
+ {
+ auto holder = new string(std::move(converted));
+ _deleters.push_back([holder] { delete holder; });
+ vdata = holder->data();
+ vsize = holder->size();
+ }
+ i += sz;
+ }
+ }
+ else
+ {
+ vdata = 0;
+ vsize = 0;
+ }
+}
+
+#else
+
+void
+Ice::InputStream::read(const char*& vdata, size_t& vsize)
+{
+ Int sz = readSize();
+ if(sz > 0)
+ {
+ if(b.end() - i < sz)
+ {
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
+ }
+
+ vdata = reinterpret_cast<const char*>(&*i);
+ vsize = static_cast<size_t>(sz);
+ i += sz;
+ }
+ else
+ {
+ vdata = 0;
+ vsize = 0;
+ }
+}
+
+void
+Ice::InputStream::read(const char*& vdata, size_t& vsize, string& holder)
+{
+ if(!_stringConverter)
+ {
+ holder.clear();
+ read(vdata, vsize);
+ }
+ else
+ {
+ Int sz = readSize();
+ if(sz > 0)
+ {
+ if(b.end() - i < sz)
+ {
+ throwUnmarshalOutOfBoundsException(__FILE__, __LINE__);
+ }
+
+ readConverted(holder, sz);
+ i += sz;
+ vdata = holder.data();
+ vsize = holder.size();
+ }
+ else
+ {
+ holder.clear();
+ vdata = 0;
+ vsize = 0;
+ }
+ }
+}
+#endif
+
+void
Ice::InputStream::readConverted(string& v, int sz)
{
if(!_stringConverter)
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp
index d1688074dcb..9375a4554fc 100644
--- a/cpp/src/Slice/CPlusPlusUtil.cpp
+++ b/cpp/src/Slice/CPlusPlusUtil.cpp
@@ -24,6 +24,12 @@ using namespace IceUtilInternal;
namespace
{
+string
+condString(bool ok, const string& str)
+{
+ return ok ? str : "";
+}
+
string toTemplateArg(const string& arg)
{
if(arg.empty())
@@ -143,16 +149,16 @@ dictionaryTypeToString(const DictionaryPtr& dict, const StringList& metaData, in
void
writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const string& fixedName,
- const StringList& metaData, int typeCtx, bool cpp11, bool endArg)
+ const StringList& metaData, int typeCtx, bool endArg)
{
- string s = typeToString(type, metaData, typeCtx, cpp11);
+ string s = typeToString(type, metaData, typeCtx);
if(optional)
{
s = "IceUtil::Optional<" + toTemplateArg(s) + '>';
}
out << nl << s << ' ' << fixedName << ';';
- if(!(typeCtx & TypeContextInParam) || !endArg)
+ if((typeCtx & TypeContextCpp11) || !(typeCtx & TypeContextInParam) || !endArg)
{
return; // We're done.
}
@@ -173,7 +179,7 @@ writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const st
string s;
if(seqType == "%array")
{
- s = typeToString(seq, metaData, TypeContextAMIPrivateEnd, cpp11);
+ s = typeToString(seq, metaData, TypeContextAMIPrivateEnd);
}
else if(seqType.find("%range") == 0)
{
@@ -182,7 +188,7 @@ writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const st
{
md.push_back("cpp:type:" + seqType.substr(strlen("%range:")));
}
- s = typeToString(seq, md, 0, cpp11);
+ s = typeToString(seq, md, 0);
}
if(!s.empty())
@@ -296,9 +302,14 @@ writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const Oper
string prefix = prepend ? paramPrefix : "";
string returnValueS = retP.empty() ? string("__ret") : retP;
+ string objPrefix = obj.empty() ? obj : obj + ".";
+
+ bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
+
//
// Marshal non optional parameters.
//
+ ParamDeclList requiredParams;
ParamDeclList optionals;
for(ParamDeclList::const_iterator p = params.begin(); p != params.end(); ++p)
{
@@ -308,54 +319,158 @@ writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const Oper
}
else
{
- writeMarshalUnmarshalCode(out, (*p)->type(), false, 0, fixKwd(prefix + (*p)->name()), marshal, (*p)->getMetaData(),
- typeCtx, "", true, obj);
+ requiredParams.push_back(*p);
}
}
- if(op && op->returnType())
+
+
+ if(!requiredParams.empty() || (op && op->returnType() && !op->returnIsOptional()))
{
- if(!op->returnIsOptional())
+ if(cpp11)
{
- writeMarshalUnmarshalCode(out, op->returnType(), false, 0, returnValueS, marshal, op->getMetaData(), typeCtx,
- "", true, obj);
+ out << nl;
+ if(marshal)
+ {
+ out << "__os->writeAll";
+ }
+ else
+ {
+ out << "__is->readAll";
+ }
+ out << spar;
+ for(ParamDeclList::const_iterator p = requiredParams.begin(); p != requiredParams.end(); ++p)
+ {
+ out << objPrefix + fixKwd(prefix + (*p)->name());
+ }
+ if(op && op->returnType() && !op->returnIsOptional())
+ {
+ out << objPrefix + returnValueS;
+ }
+ out << epar << ";";
+ }
+ else
+ {
+ for(ParamDeclList::const_iterator p = requiredParams.begin(); p != requiredParams.end(); ++p)
+ {
+ writeMarshalUnmarshalCode(out, (*p)->type(), false, 0, fixKwd(prefix + (*p)->name()), marshal, (*p)->getMetaData(),
+ typeCtx, "", true, obj);
+ }
+
+ if(op && op->returnType())
+ {
+ if(!op->returnIsOptional())
+ {
+ writeMarshalUnmarshalCode(out, op->returnType(), false, 0, returnValueS, marshal, op->getMetaData(), typeCtx,
+ "", true, obj);
+ }
+ }
}
}
- //
- // Sort optional parameters by tag.
- //
- class SortFn
+ if(!optionals.empty() || (op && op->returnType() && op->returnIsOptional()))
{
- public:
- static bool compare(const ParamDeclPtr& lhs, const ParamDeclPtr& rhs)
+ //
+ // Sort optional parameters by tag.
+ //
+ class SortFn
{
- return lhs->tag() < rhs->tag();
- }
- };
- optionals.sort(SortFn::compare);
+ public:
+ static bool compare(const ParamDeclPtr& lhs, const ParamDeclPtr& rhs)
+ {
+ return lhs->tag() < rhs->tag();
+ }
+ };
+ optionals.sort(SortFn::compare);
- //
- // Marshal optional parameters.
- //
- bool checkReturnType = op && op->returnIsOptional();
- for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
- {
- if(checkReturnType && op->returnTag() < (*p)->tag())
+ if(cpp11)
+ {
+ out << nl;
+ if(marshal)
+ {
+ out << "__os->writeAll";
+ }
+ else
+ {
+ out << "__is->readAll";
+ }
+ out << spar;
+
+ {
+ //
+ // Tags
+ //
+ ostringstream os;
+ os << '{';
+ bool checkReturnType = op && op->returnIsOptional();
+ bool insertComma = false;
+ for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
+ {
+ if(checkReturnType && op->returnTag() < (*p)->tag())
+ {
+ os << condString(insertComma, ", ") << op->returnTag();
+ checkReturnType = false;
+ insertComma = true;
+ }
+ os << condString(insertComma, ", ") << (*p)->tag();
+ insertComma = true;
+ }
+ if(checkReturnType)
+ {
+ os << condString(insertComma, ", ") << op->returnTag();
+ }
+ os << '}';
+ out << os.str();
+ }
+
+ {
+ //
+ // Parameters
+ //
+ bool checkReturnType = op && op->returnIsOptional();
+ for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
+ {
+ if(checkReturnType && op->returnTag() < (*p)->tag())
+ {
+ out << objPrefix + returnValueS;
+ checkReturnType = false;
+ }
+ out << objPrefix + fixKwd(prefix + (*p)->name());
+ }
+ if(checkReturnType)
+ {
+ out << objPrefix + returnValueS;
+ }
+ }
+ out << epar << ";";
+ }
+ else
{
- writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), returnValueS, marshal,
- op->getMetaData(), typeCtx, "", true, obj);
- checkReturnType = false;
+
+ //
+ // Marshal optional parameters.
+ //
+
+ bool checkReturnType = op && op->returnIsOptional();
+ for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
+ {
+ if(checkReturnType && op->returnTag() < (*p)->tag())
+ {
+ writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), returnValueS, marshal,
+ op->getMetaData(), typeCtx, "", true, obj);
+
+ checkReturnType = false;
+ }
+ writeMarshalUnmarshalCode(out, (*p)->type(), true, (*p)->tag(), fixKwd(prefix + (*p)->name()), marshal,
+ (*p)->getMetaData(), typeCtx, "", true, obj);
+ }
+ if(checkReturnType)
+ {
+ writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), returnValueS, marshal, op->getMetaData(),
+ typeCtx, "", true, obj);
+ }
}
- writeMarshalUnmarshalCode(out, (*p)->type(), true, (*p)->tag(), fixKwd(prefix + (*p)->name()), marshal,
- (*p)->getMetaData(), typeCtx, "", true, obj);
- }
- if(checkReturnType)
- {
- writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), returnValueS, marshal, op->getMetaData(),
- typeCtx, "", true, obj);
}
}
-
}
Slice::FeatureProfile Slice::featureProfile = Slice::Ice;
@@ -474,8 +589,10 @@ Slice::isMovable(const TypePtr& type)
}
string
-Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx, bool cpp11)
+Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx)
{
+ bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
+
static const char* builtinTable[] =
{
"::Ice::Byte",
@@ -563,7 +680,7 @@ Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx
if(st)
{
//
- // C++11 mapping doesn't accept cpp:class metdata
+ // C++11 mapping doesn't accept cpp:class metadata
//
if(!cpp11 && findMetaData(st->getMetaData()) == "%class")
{
@@ -625,20 +742,20 @@ Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx
}
string
-Slice::typeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx, bool cpp11)
+Slice::typeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx)
{
if(optional)
{
- return "IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx, cpp11)) + ">";
+ return "IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx)) + ">";
}
else
{
- return typeToString(type, metaData, typeCtx, cpp11);
+ return typeToString(type, metaData, typeCtx);
}
}
string
-Slice::returnTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx, bool cpp11)
+Slice::returnTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx)
{
if(!type)
{
@@ -647,15 +764,17 @@ Slice::returnTypeToString(const TypePtr& type, bool optional, const StringList&
if(optional)
{
- return "IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx, cpp11)) + ">";
+ return "IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx)) + ">";
}
- return typeToString(type, metaData, typeCtx, cpp11);
+ return typeToString(type, metaData, typeCtx);
}
string
-Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx, bool cpp11)
+Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx)
{
+ bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
+
static const char* cpp98InputBuiltinTable[] =
{
"::Ice::Byte",
@@ -692,7 +811,7 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& m
if(optional)
{
- return "const IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx, cpp11)) +">&";
+ return "const IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx)) +">&";
}
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
@@ -729,7 +848,7 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& m
{
if(cl->definition() && cl->definition()->isDelegate())
{
- return classDefToDelegateString(cl->definition(), typeCtx, cpp11);
+ return classDefToDelegateString(cl->definition(), typeCtx);
}
else if(cl->isInterface() && !cl->isLocal())
{
@@ -815,8 +934,10 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& m
}
string
-Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx, bool cpp11)
+Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx)
{
+ bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
+
static const char* outputBuiltinTable[] =
{
"::Ice::Byte&",
@@ -851,7 +972,7 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList&
if(optional)
{
- return "IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx, cpp11)) +">&";
+ return "IceUtil::Optional<" + toTemplateArg(typeToString(type, metaData, typeCtx)) +">&";
}
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
@@ -888,7 +1009,7 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList&
{
if(cl->definition() && cl->definition()->isDelegate())
{
- return classDefToDelegateString(cl->definition(), typeCtx, cpp11) + "&";
+ return classDefToDelegateString(cl->definition(), typeCtx) + "&";
}
else if(cl->isInterface() && !cl->isLocal())
{
@@ -1191,8 +1312,7 @@ Slice::writeUnmarshalCode(Output& out, const ParamDeclList& params, const Operat
}
void
-Slice::writeAllocateCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx,
- bool cpp11)
+Slice::writeAllocateCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx)
{
string prefix = prepend ? paramPrefix : "";
string returnValueS = "__ret";
@@ -1200,12 +1320,12 @@ Slice::writeAllocateCode(Output& out, const ParamDeclList& params, const Operati
for(ParamDeclList::const_iterator p = params.begin(); p != params.end(); ++p)
{
writeParamAllocateCode(out, (*p)->type(), (*p)->optional(), fixKwd(prefix + (*p)->name()), (*p)->getMetaData(),
- typeCtx, cpp11, getEndArg((*p)->type(),(*p)->getMetaData(), (*p)->name()) != (*p)->name());
+ typeCtx, getEndArg((*p)->type(), (*p)->getMetaData(), (*p)->name()) != (*p)->name());
}
if(op && op->returnType())
{
- writeParamAllocateCode(out, op->returnType(), op->returnIsOptional(), returnValueS, op->getMetaData(), typeCtx, cpp11,
+ writeParamAllocateCode(out, op->returnType(), op->returnIsOptional(), returnValueS, op->getMetaData(), typeCtx,
getEndArg(op->returnType(), op->getMetaData(), returnValueS) != returnValueS);
}
@@ -1379,28 +1499,23 @@ Slice::findMetaData(const StringList& metaData, int typeCtx)
// the return value is % followed by the string after cpp:.
//
// The priority of the metadata is as follows:
- // 1: protobuf
- // 2: array, range, view-type for "view" parameters
- // 3: class
+ // 1: array, range (C++98 only), view-type for "view" parameters
+ // 2: class (C++98 only), unscoped (C++11 only)
+ //
if(pos != string::npos)
{
string ss = str.substr(prefix.size());
- if(ss.find("protobuf:") == 0)
- {
- return str.substr(pos + 1);
- }
-
if(typeCtx & (TypeContextInParam | TypeContextAMIPrivateEnd))
{
- if(ss.find("range:") == 0)
+ if(ss.find("view-type:") == 0)
{
- return string("%") + str.substr(prefix.size());
+ return str.substr(pos + 1);
}
- else if(ss.find("view-type:") == 0)
+ else if(ss.find("range:") == 0 && !(typeCtx & TypeContextCpp11))
{
- return str.substr(pos + 1);
+ return string("%") + str.substr(prefix.size());
}
}
@@ -1416,7 +1531,7 @@ Slice::findMetaData(const StringList& metaData, int typeCtx)
{
return "%array";
}
- else if(ss == "range")
+ else if(ss == "range" && !(typeCtx & TypeContextCpp11))
{
return "%range";
}
@@ -1427,11 +1542,11 @@ Slice::findMetaData(const StringList& metaData, int typeCtx)
else
{
string ss = str.substr(prefix.size());
- if(ss == "class")
+ if(ss == "class" && !(typeCtx & TypeContextCpp11))
{
return "%class";
}
- else if(ss == "unscoped")
+ else if(ss == "unscoped" && (typeCtx & TypeContextCpp11))
{
return "%unscoped";
}
@@ -1488,7 +1603,7 @@ Slice::getDataMemberRef(const DataMemberPtr& p)
}
string
-Slice::classDefToDelegateString(const ClassDefPtr& cl, int typeCtx, bool cpp11)
+Slice::classDefToDelegateString(const ClassDefPtr& cl, int typeCtx)
{
assert(cl->isDelegate());
@@ -1496,7 +1611,7 @@ Slice::classDefToDelegateString(const ClassDefPtr& cl, int typeCtx, bool cpp11)
OperationPtr op = cl->allOperations().front();
TypePtr ret = op->returnType();
- string retS = returnTypeToString(ret, op->returnIsOptional(), op->getMetaData(), typeCtx, cpp11);
+ string retS = returnTypeToString(ret, op->returnIsOptional(), op->getMetaData(), typeCtx);
string t = "::std::function<" + retS + "(";
@@ -1505,11 +1620,11 @@ Slice::classDefToDelegateString(const ClassDefPtr& cl, int typeCtx, bool cpp11)
{
if((*q)->isOutParam())
{
- t += outputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx, cpp11);
+ t += outputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx);
}
else
{
- t += inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx, cpp11);
+ t += inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx);
}
t += distance(q, paramList.end()) == 1 ? "" : ", ";
diff --git a/cpp/src/Slice/CPlusPlusUtil.h b/cpp/src/Slice/CPlusPlusUtil.h
index b60d6036c2f..da430845e30 100644
--- a/cpp/src/Slice/CPlusPlusUtil.h
+++ b/cpp/src/Slice/CPlusPlusUtil.h
@@ -34,15 +34,16 @@ const int TypeContextAMIPrivateEnd = 4;
const int TypeContextAMICallPrivateEnd = 8;
const int TypeContextUseWstring = 16;
const int TypeContextLocal = 32;
+const int TypeContextCpp11 = 64;
bool isMovable(const TypePtr&);
-std::string typeToString(const TypePtr&, const StringList& = StringList(), int = 0, bool = false);
-std::string typeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0, bool = false);
-std::string returnTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0, bool = false);
-std::string inputTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0, bool = false);
-std::string outputTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0, bool = false);
-std::string operationModeToString(Operation::Mode, bool cpp11 = false);
+std::string typeToString(const TypePtr&, const StringList& = StringList(), int = 0);
+std::string typeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0);
+std::string returnTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0);
+std::string inputTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0);
+std::string outputTypeToString(const TypePtr&, bool, const StringList& = StringList(), int = 0);
+std::string operationModeToString(Operation::Mode, bool = false);
std::string opFormatTypeToString(const OperationPtr&);
std::string fixKwd(const std::string&);
@@ -54,8 +55,7 @@ void writeMarshalUnmarshalCode(::IceUtilInternal::Output&, const TypePtr&, bool,
void writeMarshalCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0);
void writeUnmarshalCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0,
const std::string& = "", const std::string& = "");
-void writeAllocateCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0,
- bool = false);
+void writeAllocateCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0);
std::string getEndArg(const TypePtr&, const StringList&, const std::string&);
void writeEndCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool = false);
@@ -69,7 +69,7 @@ bool inWstringModule(const SequencePtr&);
std::string getDataMemberRef(const DataMemberPtr&);
-std::string classDefToDelegateString(const ClassDefPtr&, int = 0, bool = false);
+std::string classDefToDelegateString(const ClassDefPtr&, int = 0);
}
#endif
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index c7eef696620..645aea8a316 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -400,7 +400,7 @@ writeConstantValue(IceUtilInternal::Output& out, const TypePtr& type, const Synt
EnumPtr ep = EnumPtr::dynamicCast(type);
if(ep)
{
- bool unscoped = findMetaData(ep->getMetaData()) == "%unscoped";
+ bool unscoped = findMetaData(ep->getMetaData(), cpp11 ? TypeContextCpp11 : 0) == "%unscoped";
if(!cpp11 || unscoped)
{
out << fixKwd(value);
@@ -4144,7 +4144,7 @@ Slice::Gen::ImplVisitor::defaultValue(const TypePtr& type, const StringList& met
SequencePtr seq = SequencePtr::dynamicCast(type);
if(seq)
{
- return typeToString(seq, metaData, _useWstring, true) + "()";
+ return typeToString(seq, metaData, _useWstring | TypeContextCpp11) + "()";
}
DictionaryPtr dict = DictionaryPtr::dynamicCast(type);
@@ -5665,7 +5665,8 @@ Slice::Gen::Cpp11TypesVisitor::visitExceptionStart(const ExceptionPtr& p)
for(DataMemberList::const_iterator q = allDataMembers.begin(); q != allDataMembers.end(); ++q)
{
- string typeName = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring, true);
+ string typeName = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11);
allTypes.push_back(typeName);
allParamDecls.push_back(typeName + " " + fixKwd("__ice_" + (*q)->name()));
}
@@ -6010,7 +6011,8 @@ void
Slice::Gen::Cpp11TypesVisitor::visitDataMember(const DataMemberPtr& p)
{
string name = fixKwd(p->name());
- H << nl << typeToString(p->type(), p->optional(), p->getMetaData(), _useWstring, true) << ' ' << name;
+ H << nl << typeToString(p->type(), p->optional(), p->getMetaData(), _useWstring | TypeContextCpp11)
+ << ' ' << name;
string defaultValue = p->defaultValue();
if(!defaultValue.empty())
@@ -6028,7 +6030,7 @@ Slice::Gen::Cpp11TypesVisitor::visitSequence(const SequencePtr& p)
string name = fixKwd(p->name());
TypePtr type = p->type();
int typeCtx = p->isLocal() ? (_useWstring | TypeContextLocal) : _useWstring;
- string s = typeToString(type, p->typeMetaData(), typeCtx, true);
+ string s = typeToString(type, p->typeMetaData(), typeCtx | TypeContextCpp11);
StringList metaData = p->getMetaData();
string seqType = findMetaData(metaData, _useWstring);
@@ -6058,12 +6060,12 @@ Slice::Gen::Cpp11TypesVisitor::visitDictionary(const DictionaryPtr& p)
TypePtr keyType = p->keyType();
TypePtr valueType = p->valueType();
- string ks = typeToString(keyType, p->keyMetaData(), typeCtx, true);
+ string ks = typeToString(keyType, p->keyMetaData(), typeCtx | TypeContextCpp11);
if(ks[0] == ':')
{
ks.insert(0, " ");
}
- string vs = typeToString(valueType, p->valueMetaData(), typeCtx, true);
+ string vs = typeToString(valueType, p->valueMetaData(), typeCtx | TypeContextCpp11);
H << sp << nl << "typedef ::std::map<" << ks << ", " << vs << "> " << name << ';';
}
@@ -6198,7 +6200,7 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
TypePtr ret = p->returnType();
bool retIsOpt = p->returnIsOptional();
- string retS = returnTypeToString(ret, retIsOpt, p->getMetaData(), _useWstring, true);
+ string retS = returnTypeToString(ret, retIsOpt, p->getMetaData(), _useWstring | TypeContextCpp11);
ContainerPtr container = p->container();
ClassDefPtr cl = ClassDefPtr::dynamicCast(container);
@@ -6221,10 +6223,10 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
if(ret)
{
- futureOutParams.push_back(typeToString(ret, retIsOpt, p->getMetaData(), _useWstring, true));
+ futureOutParams.push_back(typeToString(ret, retIsOpt, p->getMetaData(), _useWstring | TypeContextCpp11));
lambdaOutParams.push_back(
- typeToString(ret, retIsOpt, p->getMetaData(), _useWstring | TypeContextInParam, true));
+ typeToString(ret, retIsOpt, p->getMetaData(), _useWstring | TypeContextInParam | TypeContextCpp11));
outParamsHasOpt |= p->returnIsOptional();
}
@@ -6236,11 +6238,13 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
if((*q)->isOutParam())
{
- futureOutParams.push_back(typeToString((*q)->type(), (*q)->optional(), metaData, _useWstring, true));
- lambdaOutParams.push_back(
- typeToString((*q)->type(), (*q)->optional(), metaData, _useWstring | TypeContextInParam, true));
+ futureOutParams.push_back(typeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextCpp11));
+ lambdaOutParams.push_back(typeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextInParam | TypeContextCpp11));
- string outputTypeString = outputTypeToString((*q)->type(), (*q)->optional(), metaData, _useWstring, true);
+ string outputTypeString = outputTypeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextCpp11);
params.push_back(outputTypeString);
paramsDecl.push_back(outputTypeString + ' ' + paramName);
@@ -6255,7 +6259,8 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
}
else
{
- string typeString = inputTypeToString((*q)->type(), (*q)->optional(), metaData, _useWstring, true);
+ string typeString = inputTypeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextCpp11);
params.push_back(typeString);
paramsDecl.push_back(typeString + ' ' + paramName);
@@ -6427,8 +6432,8 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
C << nl << "__read = [__response](::Ice::InputStream* __is)";
C << sb;
C << nl << "__is->startEncapsulation();";
- writeAllocateCode(C, outParams, p, true, _useWstring | TypeContextInParam, true);
- writeUnmarshalCode(C, outParams, p, true, _useWstring | TypeContextInParam);
+ writeAllocateCode(C, outParams, p, true, _useWstring | TypeContextInParam | TypeContextCpp11);
+ writeUnmarshalCode(C, outParams, p, true, _useWstring | TypeContextInParam | TypeContextCpp11);
if(p->returnsClasses(false))
{
@@ -6471,7 +6476,7 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
{
C << "[&](::Ice::OutputStream* __os)";
C << sb;
- writeMarshalCode(C, inParams, 0, true, TypeContextInParam);
+ writeMarshalCode(C, inParams, 0, true, TypeContextInParam | TypeContextCpp11);
if(p->sendsClasses(false))
{
C << nl << "__os->writePendingValues();";
@@ -6595,7 +6600,7 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
{
C << "[&](::Ice::OutputStream* __os)";
C << sb;
- writeMarshalCode(C, inParams, 0, true, TypeContextInParam);
+ writeMarshalCode(C, inParams, 0, true, TypeContextInParam | TypeContextCpp11);
if(p->sendsClasses(false))
{
C << nl << "__os->writePendingValues();";
@@ -6655,7 +6660,7 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
C << "," << nl << "[](::Ice::InputStream* __is)";
C << sb;
C << nl << futureT << " v;";
- writeUnmarshalCode(C, outParams, p, false, _useWstring, returnValueS, "v");
+ writeUnmarshalCode(C, outParams, p, false, _useWstring | TypeContextCpp11, returnValueS, "v");
if(p->returnsClasses(false))
{
@@ -6674,8 +6679,8 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
C << "," << nl << "[](::Ice::InputStream* __is)";
C << sb;
- writeAllocateCode(C, outParams, p, true, _useWstring, true);
- writeUnmarshalCode(C, outParams, p, true, _useWstring);
+ writeAllocateCode(C, outParams, p, true, _useWstring | TypeContextCpp11);
+ writeUnmarshalCode(C, outParams, p, true, _useWstring | TypeContextCpp11);
if(p->returnsClasses(false))
{
@@ -6700,7 +6705,7 @@ Slice::Gen::Cpp11ProxyVisitor::visitOperation(const OperationPtr& p)
void
Slice::Gen::Cpp11TypesVisitor::visitEnum(const EnumPtr& p)
{
- bool unscoped = findMetaData(p->getMetaData()) == "%unscoped";
+ bool unscoped = findMetaData(p->getMetaData(), TypeContextCpp11) == "%unscoped";
H << sp << nl << "enum ";
if(!unscoped)
{
@@ -6741,7 +6746,8 @@ void
Slice::Gen::Cpp11TypesVisitor::visitConst(const ConstPtr& p)
{
H << sp;
- H << nl << (isConstexprType(p->type()) ? "constexpr " : "const ") << typeToString(p->type(), p->typeMetaData(), _useWstring, true) << " " << fixKwd(p->name())
+ H << nl << (isConstexprType(p->type()) ? "constexpr " : "const ")
+ << typeToString(p->type(), p->typeMetaData(), _useWstring | TypeContextCpp11) << " " << fixKwd(p->name())
<< " = ";
writeConstantValue(H, p->type(), p->valueType(), p->value(), _useWstring, p->typeMetaData(), true);
H << ';';
@@ -6769,7 +6775,8 @@ void
Slice::Gen::Cpp11ObjectVisitor::emitDataMember(const DataMemberPtr& p)
{
string name = fixKwd(p->name());
- H << sp << nl << typeToString(p->type(), p->optional(), p->getMetaData(), _useWstring, true) << ' ' << name;
+ H << sp << nl << typeToString(p->type(), p->optional(), p->getMetaData(),
+ _useWstring | TypeContextCpp11) << ' ' << name;
string defaultValue = p->defaultValue();
if(!defaultValue.empty())
@@ -6903,7 +6910,7 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
{
H << sp << nl << name << "() :";
H.inc();
- writeDataMemberInitializers(H, dataMembers, _useWstring, true);
+ writeDataMemberInitializers(H, dataMembers, _useWstring | TypeContextCpp11);
H.dec();
H << sb;
H << eb;
@@ -7005,9 +7012,10 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitOperation(const OperationPtr& p)
string scoped = fixKwd(p->scoped());
string scope = fixKwd(p->scope());
- int typeCtx = _useWstring | TypeContextLocal;
+ int typeCtx = _useWstring | TypeContextLocal | TypeContextCpp11;
TypePtr ret = p->returnType();
- string retS = returnTypeToString(ret, p->returnIsOptional(), p->getMetaData(), typeCtx, true);
+ string retS = returnTypeToString(ret, p->returnIsOptional(), p->getMetaData(),
+ typeCtx | TypeContextCpp11);
string params = "(";
string paramsDecl = "(";
@@ -7030,12 +7038,12 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitOperation(const OperationPtr& p)
if(isOutParam)
{
outParams.push_back(*q);
- typeString = outputTypeToString(type, (*q)->optional(), (*q)->getMetaData(), typeCtx, true);
+ typeString = outputTypeToString(type, (*q)->optional(), (*q)->getMetaData(), typeCtx);
}
else
{
inParams.push_back(*q);
- typeString = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx, true);
+ typeString = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx);
}
if(q != paramList.begin())
@@ -7082,7 +7090,7 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitOperation(const OperationPtr& p)
string typeString;
if(!(*r)->isOutParam())
{
- typeString = inputTypeToString((*r)->type(), (*r)->optional(), metaData, typeCtx, true);
+ typeString = inputTypeToString((*r)->type(), (*r)->optional(), metaData, typeCtx);
paramsDeclAMI.push_back(typeString + ' ' + paramName);
}
}
@@ -7364,7 +7372,7 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
string name = p->name();
TypePtr ret = p->returnType();
- string retS = returnTypeToString(ret, p->returnIsOptional(), p->getMetaData(), _useWstring, true);
+ string retS = returnTypeToString(ret, p->returnIsOptional(), p->getMetaData(), _useWstring | TypeContextCpp11);
string params = "(";
string paramsDecl = "(";
@@ -7397,14 +7405,16 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
if(isOutParam)
{
outParams.push_back(*q);
- typeString = outputTypeToString(type, (*q)->optional(), (*q)->getMetaData(), _useWstring, true);
- outDecls.push_back(inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring, true));
+ typeString = outputTypeToString(type, (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11);
+ outDecls.push_back(inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11));
}
else
{
inParams.push_back(*q);
typeString = typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
- _useWstring | TypeContextInParam, true);
+ _useWstring | TypeContextInParam | TypeContextCpp11);
}
if(q != paramList.begin())
@@ -7431,8 +7441,8 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
for(ParamDeclList::iterator q = outParams.begin(); q != outParams.end(); ++q)
{
- string typeString
- = typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring, true);
+ string typeString = typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11);
dataMembers.push_back(typeString + " " + fixKwd((*q)->name()));
@@ -7477,7 +7487,7 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
argsAMD += ", ";
}
paramsAMD += typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
- _useWstring | TypeContextInParam, true);
+ _useWstring | TypeContextInParam | TypeContextCpp11);
if(isMovable((*q)->type()))
{
argsAMD += "::std::move(" + fixKwd(string(paramPrefix) + (*q)->name()) + ")";
@@ -7490,7 +7500,8 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
if(ret)
{
- string typeString = inputTypeToString(ret, p->returnIsOptional(), p->getMetaData(), _useWstring, true);
+ string typeString = inputTypeToString(ret, p->returnIsOptional(), p->getMetaData(),
+ _useWstring | TypeContextCpp11);
responseParams = typeString;
responseParamsDecl = typeString + " __ret";
if(!outParams.empty())
@@ -7507,7 +7518,8 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
responseParams += ", ";
responseParamsDecl += ", ";
}
- string typeString = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring, true);
+ string typeString = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11);
responseParams += typeString;
responseParamsDecl += typeString + " " + fixKwd(string(paramPrefix) + (*q)->name());
}
@@ -7562,9 +7574,9 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
if(!inParams.empty())
{
- C << nl << "::Ice::InputStream* __is = __inS.startReadParams();";
- writeAllocateCode(C, inParams, 0, true, _useWstring | TypeContextInParam, true);
- writeUnmarshalCode(C, inParams, 0, true, TypeContextInParam);
+ C << nl << "auto __is = __inS.startReadParams();";
+ writeAllocateCode(C, inParams, 0, true, _useWstring | TypeContextInParam | TypeContextCpp11);
+ writeUnmarshalCode(C, inParams, 0, true, _useWstring | TypeContextInParam | TypeContextCpp11);
if(p->sendsClasses(false))
{
C << nl << "__is->readPendingValues();";
@@ -7578,7 +7590,7 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
if(!amd)
{
- writeAllocateCode(C, outParams, 0, true, _useWstring, true);
+ writeAllocateCode(C, outParams, 0, true, _useWstring | TypeContextCpp11);
if(!throws.empty())
{
C << nl << "try";
@@ -7593,7 +7605,7 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
if(ret || !outParams.empty())
{
C << nl << "auto __os = __inS.__startWriteParams(" << opFormatTypeToString(p) << ");";
- writeMarshalCode(C, outParams, p, true);
+ writeMarshalCode(C, outParams, p, true, TypeContextCpp11);
if(p->returnsClasses(false))
{
C << nl << "__os->writePendingValues();";
@@ -7668,7 +7680,7 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
if(ret || !outParams.empty())
{
C << nl << "auto __os = inS->__startWriteParams(" << opFormatTypeToString(p) << ");";
- writeMarshalCode(C, outParams, p, true);
+ writeMarshalCode(C, outParams, p, true, TypeContextCpp11);
if(p->returnsClasses(false))
{
C << nl << "__os->writePendingValues();";
@@ -7981,7 +7993,8 @@ Slice::Gen::Cpp11ObjectVisitor::emitOneShotConstructor(const ClassDefPtr& p)
for(DataMemberList::const_iterator q = allDataMembers.begin(); q != allDataMembers.end(); ++q)
{
- string typeName = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring, true);
+ string typeName = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11);
allParamDecls.push_back(typeName + " __ice_" + (*q)->name());
}
@@ -8264,7 +8277,7 @@ Slice::Gen::Cpp11ImplVisitor::defaultValue(const TypePtr& type, const StringList
SequencePtr seq = SequencePtr::dynamicCast(type);
if(seq)
{
- return typeToString(seq, metaData, _useWstring, true) + "()";
+ return typeToString(seq, metaData, _useWstring | TypeContextCpp11) + "()";
}
DictionaryPtr dict = DictionaryPtr::dynamicCast(type);
@@ -8353,7 +8366,8 @@ Slice::Gen::Cpp11ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
string opName = op->name();
TypePtr ret = op->returnType();
- string retS = returnTypeToString(ret, op->returnIsOptional(), op->getMetaData(), _useWstring, true);
+ string retS = returnTypeToString(ret, op->returnIsOptional(), op->getMetaData(),
+ _useWstring | TypeContextCpp11);
ParamDeclList params = op->parameters();
ParamDeclList outParams;
@@ -8380,12 +8394,14 @@ Slice::Gen::Cpp11ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
for(ParamDeclList::const_iterator q = inParams.begin(); q != inParams.end(); ++q)
{
H << typeToString((*q)->type(), (*q)->optional(),
- (*q)->getMetaData(), _useWstring | TypeContextInParam, true) << "," << nl;
+ (*q)->getMetaData(), _useWstring | TypeContextInParam | TypeContextCpp11)
+ << "," << nl;
}
if(ret)
{
- string typeS = inputTypeToString(ret, op->returnIsOptional(), op->getMetaData(), _useWstring, true);
+ string typeS = inputTypeToString(ret, op->returnIsOptional(), op->getMetaData(),
+ _useWstring | TypeContextCpp11);
responseParams = typeS;
responseParamsDecl = typeS + " __ret";
if(!outParams.empty())
@@ -8402,7 +8418,8 @@ Slice::Gen::Cpp11ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
responseParams += ", ";
responseParamsDecl += ", ";
}
- string typeS = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring, true);
+ string typeS = inputTypeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextCpp11);
responseParams += typeS;
responseParamsDecl += typeS + " " + fixKwd(string(paramPrefix) + (*q)->name());
}
@@ -8418,7 +8435,8 @@ Slice::Gen::Cpp11ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
C.useCurrentPosAsIndent();
for(ParamDeclList::const_iterator q = inParams.begin(); q != inParams.end(); ++q)
{
- C << typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), _useWstring | TypeContextInParam, true);
+ C << typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(),
+ _useWstring | TypeContextInParam | TypeContextCpp11);
C << ' ' << fixKwd((*q)->name()) << "," << nl;
}
@@ -8470,11 +8488,13 @@ Slice::Gen::Cpp11ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
string typeString;
if((*q)->isOutParam())
{
- typeString = outputTypeToString((*q)->type(), (*q)->optional(), metaData, _useWstring, true);
+ typeString = outputTypeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextCpp11);
}
else
{
- typeString = typeToString((*q)->type(), (*q)->optional(), metaData, _useWstring | TypeContextInParam, true);
+ typeString = typeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextInParam | TypeContextCpp11);
}
H << typeString;
}
@@ -8505,13 +8525,15 @@ Slice::Gen::Cpp11ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
string typeString;
if((*q)->isOutParam())
{
- C << outputTypeToString((*q)->type(), (*q)->optional(), metaData, _useWstring, true) << " "
+ C << outputTypeToString((*q)->type(), (*q)->optional(), metaData, _useWstring | TypeContextCpp11)
+ << " "
<< fixKwd((*q)->name());
}
else
{
- C << typeToString((*q)->type(), (*q)->optional(), metaData, _useWstring | TypeContextInParam, true) << " /*"
- << fixKwd((*q)->name()) << "*/";
+ C << typeToString((*q)->type(), (*q)->optional(), metaData,
+ _useWstring | TypeContextInParam | TypeContextCpp11)
+ << " /*" << fixKwd((*q)->name()) << "*/";
}
}
if(!p->isLocal())
diff --git a/cpp/test/Ice/custom/AllTests.cpp b/cpp/test/Ice/custom/AllTests.cpp
index a674024fde4..4137ad68f30 100644
--- a/cpp/test/Ice/custom/AllTests.cpp
+++ b/cpp/test/Ice/custom/AllTests.cpp
@@ -424,8 +424,6 @@ public:
called();
}
-#ifndef ICE_CPP11_MAPPING
-
void opClassStruct(const ::Test::ClassStructPtr& ret,
const ::Test::ClassStructPtr& cs1,
const ::Test::ClassStructSeq& seq,
@@ -438,7 +436,6 @@ public:
test(seq == in.second);
called();
}
-#endif
void opString(const wstring& ret, const wstring& out, const InParamPtr& cookie)
{
@@ -642,8 +639,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
string out;
string ret = t->opString(in, out);
+ test(ret == out);
+#ifdef ICE_CPP11_MAPPING
+ test(ret == in);
+#else
//
- // TODO: improve test
// When a parameter is mapped as a string_view on both sides,
// no conversion occurs, and all is good
// However, when a parameter is mapped as a string on one side and
@@ -651,8 +651,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
// the string converter converts the string but not the string_view,
// and we have a mismatch
//
- test(ret == out);
test(ret.size() == in.size());
+#endif
}
cout << "ok" << endl;
@@ -747,10 +747,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
in[2] = true;
in[3] = false;
in[4] = true;
- pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> inPair(in.begin(), in.end());
-
Test::BoolSeq out;
+#ifdef ICE_CPP11_MAPPING
+ Test::BoolSeq ret = t->opBoolRange(in, out);
+#else
+ pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> inPair(in.begin(), in.end());
Test::BoolSeq ret = t->opBoolRange(inPair, out);
+#endif
test(out == in);
test(ret == in);
}
@@ -762,10 +765,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back('3');
in.push_back('4');
in.push_back('5');
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
-
Test::ByteList out;
+#ifdef ICE_CPP11_MAPPING
+ Test::ByteList ret = t->opByteRange(in, out);
+#else
+ pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
Test::ByteList ret = t->opByteRange(inPair, out);
+#endif
test(out == in);
test(ret == in);
}
@@ -783,10 +789,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back(v);
v.s = "strings.";
in.push_back(v);
- pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> inPair(in.begin(), in.end());
-
Test::VariableList out;
+#ifdef ICE_CPP11_MAPPING
+ Test::VariableList ret = t->opVariableRange(in, out);
+#else
+ pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> inPair(in.begin(), in.end());
Test::VariableList ret = t->opVariableRange(inPair, out);
+#endif
test(out == in);
test(ret == in);
}
@@ -798,10 +807,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back('3');
in.push_back('4');
in.push_back('5');
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
-
Test::ByteList out;
+#ifdef ICE_CPP11_MAPPING
+ Test::ByteList ret = t->opByteRangeType(in, out);
+#else
+ pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
Test::ByteList ret = t->opByteRangeType(inPair, out);
+#endif
test(out == in);
test(ret == in);
}
@@ -825,11 +837,14 @@ allTests(const Ice::CommunicatorPtr& communicator)
v.s = "strings.";
in.push_back(v);
inSeq.push_back(v);
+ Test::VariableList out;
+#ifdef ICE_CPP11_MAPPING
+ Test::VariableList ret = t->opVariableRangeType(in, out);
+#else
pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator>
inPair(inSeq.begin(), inSeq.end());
-
- Test::VariableList out;
Test::VariableList ret = t->opVariableRangeType(inPair, out);
+#endif
test(out == in);
test(ret == in);
}
@@ -1205,8 +1220,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
for(std::map<int, Util::string_view>::const_iterator p = idict.begin();
p != idict.end(); ++p)
{
+#ifdef ICE_CPP11_MAPPING
+ test(out[p->first] == p->second.to_string());
+#else
test(out[p->first].size() == p->second.size());
- // test(out[p->first] == p->second.to_string()); does not always work due to string converter
+#endif
}
}
@@ -1264,7 +1282,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
auto r = t->opStringAsync(in).get();
test(r.returnValue == r.outString);
- test(r.returnValue.size() == in.size());
+ test(r.returnValue == in);
#else
Ice::AsyncResultPtr r = t->begin_opString(in);
@@ -1397,13 +1415,12 @@ allTests(const Ice::CommunicatorPtr& communicator)
in[2] = true;
in[3] = false;
in[4] = true;
- pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> inPair(in.begin(), in.end());
-
#ifdef ICE_CPP11_MAPPING
- auto r = t->opBoolRangeAsync(inPair).get();
+ auto r = t->opBoolRangeAsync(in).get();
test(r.outSeq == in);
test(r.returnValue == in);
#else
+ pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> inPair(in.begin(), in.end());
Test::BoolSeq out;
Ice::AsyncResultPtr r = t->begin_opBoolRange(inPair);
Test::BoolSeq ret = t->end_opBoolRange(out, r);
@@ -1419,13 +1436,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back('3');
in.push_back('4');
in.push_back('5');
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
#ifdef ICE_CPP11_MAPPING
- auto r = t->opByteRangeAsync(inPair).get();
+ auto r = t->opByteRangeAsync(in).get();
test(r.outSeq == in);
test(r.returnValue == in);
#else
+ pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
Test::ByteList out;
Ice::AsyncResultPtr r = t->begin_opByteRange(inPair);
Test::ByteList ret = t->end_opByteRange(out, r);
@@ -1447,13 +1464,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back(v);
v.s = "strings.";
in.push_back(v);
- pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> inPair(in.begin(), in.end());
#ifdef ICE_CPP11_MAPPING
- auto r = t->opVariableRangeAsync(inPair).get();
+ auto r = t->opVariableRangeAsync(in).get();
test(r.outSeq == in);
test(r.returnValue == in);
#else
+ pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> inPair(in.begin(), in.end());
Test::VariableList out;
Ice::AsyncResultPtr r = t->begin_opVariableRange(inPair);
Test::VariableList ret = t->end_opVariableRange(out, r);
@@ -1469,13 +1486,12 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back('3');
in.push_back('4');
in.push_back('5');
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
-
#ifdef ICE_CPP11_MAPPING
- auto r = t->opByteRangeTypeAsync(inPair).get();
+ auto r = t->opByteRangeTypeAsync(in).get();
test(r.outSeq == in);
test(r.returnValue == in);
#else
+ pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
Test::ByteList out;
Ice::AsyncResultPtr r = t->begin_opByteRangeType(inPair);
Test::ByteList ret = t->end_opByteRangeType(out, r);
@@ -1503,14 +1519,14 @@ allTests(const Ice::CommunicatorPtr& communicator)
v.s = "strings.";
in.push_back(v);
inSeq.push_back(v);
- pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator>
- inPair(inSeq.begin(), inSeq.end());
#ifdef ICE_CPP11_MAPPING
- auto r = t->opVariableRangeTypeAsync(inPair).get();
+ auto r = t->opVariableRangeTypeAsync(in).get();
test(r.outSeq == in);
test(r.returnValue == in);
#else
+ pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator>
+ inPair(inSeq.begin(), inSeq.end());
Test::VariableList out;
Ice::AsyncResultPtr r = t->begin_opVariableRangeType(inPair);
Test::VariableList ret = t->end_opVariableRangeType(out, r);
@@ -2040,7 +2056,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
[&](Util::string_view ret, Util::string_view out)
{
test(out == ret);
- test(in.size() == out.size());
+ test(in == out);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -2231,18 +2247,16 @@ allTests(const Ice::CommunicatorPtr& communicator)
in[2] = true;
in[3] = false;
in[4] = true;
- pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> inPair(in.begin(), in.end());
#ifdef ICE_CPP11_MAPPING
promise<bool> done;
- t->opBoolRangeAsync(inPair,
- [&](pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> ret,
- pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> out)
+ t->opBoolRangeAsync(in,
+ [&](Test::BoolSeq ret, Test::BoolSeq out)
{
- test(equal(out.first, out.second, inPair.first));
- test(equal(ret.first, ret.second, inPair.first));
+ test(ret == in);
+ test(out == in);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -2252,6 +2266,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(done.get_future().get());
#else
+ pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> inPair(in.begin(), in.end());
CallbackPtr cb = new Callback();
Test::Callback_TestIntf_opBoolRangePtr callback =
@@ -2269,18 +2284,16 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back('3');
in.push_back('4');
in.push_back('5');
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
#ifdef ICE_CPP11_MAPPING
promise<bool> done;
- t->opByteRangeAsync(inPair,
- [&](pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> ret,
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> out)
+ t->opByteRangeAsync(in,
+ [&](Test::ByteList ret, Test::ByteList out)
{
- test(equal(out.first, out.second, inPair.first));
- test(equal(ret.first, ret.second, inPair.first));
+ test(ret == in);
+ test(out == in);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -2290,7 +2303,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(done.get_future().get());
#else
-
+ pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
CallbackPtr cb = new Callback();
Test::Callback_TestIntf_opByteRangePtr callback =
Test::newCallback_TestIntf_opByteRange(cb, &Callback::opByteRange, &Callback::noEx);
@@ -2312,18 +2325,16 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back(v);
v.s = "strings.";
in.push_back(v);
- pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> inPair(in.begin(), in.end());
#ifdef ICE_CPP11_MAPPING
promise<bool> done;
- t->opVariableRangeAsync(inPair,
- [&](pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> ret,
- pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> out)
+ t->opVariableRangeAsync(in,
+ [&](Test::VariableList ret, Test::VariableList out)
{
- test(equal(out.first, out.second, inPair.first));
- test(equal(ret.first, ret.second, inPair.first));
+ test(ret == in);
+ test(out == in);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -2333,7 +2344,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(done.get_future().get());
#else
-
+ pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator> inPair(in.begin(), in.end());
CallbackPtr cb = new Callback();
Test::Callback_TestIntf_opVariableRangePtr callback =
Test::newCallback_TestIntf_opVariableRange(cb, &Callback::opVariableRange, &Callback::noEx);
@@ -2349,18 +2360,16 @@ allTests(const Ice::CommunicatorPtr& communicator)
in.push_back('3');
in.push_back('4');
in.push_back('5');
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
#ifdef ICE_CPP11_MAPPING
promise<bool> done;
- t->opByteRangeTypeAsync(inPair,
- [&](pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> ret,
- pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> out)
+ t->opByteRangeTypeAsync(in,
+ [&](Test::ByteList ret, Test::ByteList out)
{
- test(equal(out.first, out.second, inPair.first));
- test(equal(ret.first, ret.second, inPair.first));
+ test(ret == in);
+ test(out == in);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -2370,7 +2379,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(done.get_future().get());
#else
-
+ pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> inPair(in.begin(), in.end());
CallbackPtr cb = new Callback();
Test::Callback_TestIntf_opByteRangeTypePtr callback =
Test::newCallback_TestIntf_opByteRangeType(cb, &Callback::opByteRangeType, &Callback::noEx);
@@ -2398,19 +2407,15 @@ allTests(const Ice::CommunicatorPtr& communicator)
v.s = "strings.";
in.push_back(v);
inSeq.push_back(v);
- pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator> inPair(inSeq.begin(),
- inSeq.end());
-
#ifdef ICE_CPP11_MAPPING
promise<bool> done;
- t->opVariableRangeTypeAsync(inPair,
- [&](pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator> ret,
- pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator> out)
+ t->opVariableRangeTypeAsync(in,
+ [&](Test::VariableList ret, Test::VariableList out)
{
- test(equal(out.first, out.second, inPair.first));
- test(equal(ret.first, ret.second, inPair.first));
+ test(ret == in);
+ test(out == in);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -2420,7 +2425,8 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(done.get_future().get());
#else
-
+ pair<deque<Test::Variable>::const_iterator, deque<Test::Variable>::const_iterator> inPair(inSeq.begin(),
+ inSeq.end());
CallbackPtr cb = new Callback();
Test::Callback_TestIntf_opVariableRangeTypePtr callback =
Test::newCallback_TestIntf_opVariableRangeType(cb, &Callback::opVariableRangeType, &Callback::noEx);
@@ -3147,9 +3153,9 @@ allTests(const Ice::CommunicatorPtr& communicator)
promise<bool> done;
t->opOutRangeByteSeqAsync(in,
- [&](pair<vector<Ice::Byte>::const_iterator, vector<Ice::Byte>::const_iterator> out)
+ [&](Test::ByteSeq out)
{
- test(in == vector<Ice::Byte>(out.first, out.second));
+ test(out == in);
done.set_value(true);
},
[&](std::exception_ptr)
@@ -3243,7 +3249,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
for(auto i: idict)
{
- test(r.odict[i.first].size() == i.second.size());
+ test(r.odict[i.first] == i.second);
}
#else
Test::IntStringDict out;
@@ -3358,8 +3364,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
test(ret == out);
for(auto i: idict)
{
- // TODO: have to compare size not strings because of string converter
- test(ret[i.first].size() == i.second.size());
+ test(ret[i.first] == i.second);
}
done.set_value(true);
diff --git a/cpp/test/Ice/custom/CustomBuffer.h b/cpp/test/Ice/custom/CustomBuffer.h
index 072896bc78b..146266670fc 100644
--- a/cpp/test/Ice/custom/CustomBuffer.h
+++ b/cpp/test/Ice/custom/CustomBuffer.h
@@ -10,7 +10,7 @@
#ifndef CUSTOM_BUFFER_H
#define CUSTOM_BUFFER_H
-#include <IceUtil/Config.h>
+#include <Ice/Ice.h>
#if defined(_MSC_VER)
# pragma warning( disable : 4800 )
@@ -166,12 +166,30 @@ struct StreamHelper< ::Test::CustomBuffer<T>, StreamHelperCategorySequence>
template<class S> static inline void
read(S* stream, ::Test::CustomBuffer<T>& v)
{
+#ifdef ICE_CPP11_MAPPING
+ std::pair<const T*, const T*> a;
+ stream->read(a);
+ size_t count = a.second - a.first;
+ if(count > 0)
+ {
+ auto b = new T[count];
+ for(size_t i = 0; i < count; ++i)
+ {
+ b[i] = a.first[i];
+ }
+ v.set(b, count);
+ }
+ else
+ {
+ v.set(0, 0);
+ }
+#else
IceUtil::ScopedArray<T> p;
std::pair<const T*, const T*> a;
stream->read(a, p);
T* b = p.release();
size_t count = a.second - a.first;
- if(b == 0)
+ if(b == 0 && count > 0)
{
b = new T[count];
for(size_t i = 0; i < count; ++i)
@@ -180,6 +198,7 @@ struct StreamHelper< ::Test::CustomBuffer<T>, StreamHelperCategorySequence>
}
}
v.set(b, count);
+#endif
}
};
diff --git a/cpp/test/Ice/custom/Makefile.mk b/cpp/test/Ice/custom/Makefile.mk
index 38cf212f515..49421d060f8 100644
--- a/cpp/test/Ice/custom/Makefile.mk
+++ b/cpp/test/Ice/custom/Makefile.mk
@@ -7,8 +7,6 @@
#
# **********************************************************************
-$(test)_cppflags = -DSTRING_VIEW_IGNORE_STRING_CONVERTER
-
$(test)_client_sources = Client.cpp \
AllTests.cpp \
Test.ice \
diff --git a/cpp/test/Ice/custom/StringView.h b/cpp/test/Ice/custom/StringView.h
index 8dd1d7d6f73..43e5bf74bb7 100644
--- a/cpp/test/Ice/custom/StringView.h
+++ b/cpp/test/Ice/custom/StringView.h
@@ -153,11 +153,13 @@ struct StreamHelper<Util::string_view, StreamHelperCategoryBuiltin>
template<class S> static inline void
write(S* stream, const Util::string_view& v)
{
-
-#ifdef STRING_VIEW_IGNORE_STRING_CONVERTER
- stream->write(v.data(), v.size(), false);
+#ifdef ICE_CPP11_MAPPING
+ stream->write(v.data(), v.size());
#else
- stream->write(v.data(), v.size(), true);
+ //
+ // In C++98, for consistency with the read, we don't string-convert
+ //
+ stream->write(v.data(), v.size(), false);
#endif
}
@@ -167,19 +169,10 @@ struct StreamHelper<Util::string_view, StreamHelperCategoryBuiltin>
const char* vdata = 0;
size_t vsize = 0;
-#ifdef STRING_VIEW_IGNORE_STRING_CONVERTER
+ //
+ // In C++98, we ignore the string converter
+ //
stream->read(vdata, vsize);
-#else
- std::string holder;
- stream->read(vdata, vsize, holder);
-
- // If holder is not empty, a string conversion occured, and we can't return a
- // string_view since it does not hold the memory
- if(!holder.empty())
- {
- throw Ice::MarshalException(__FILE__, __LINE__, "string conversion not supported");
- }
-#endif
if(vsize > 0)
{
diff --git a/cpp/test/Ice/custom/TestAMDI.cpp b/cpp/test/Ice/custom/TestAMDI.cpp
index 62f26631b26..31f3d5d58ea 100644
--- a/cpp/test/Ice/custom/TestAMDI.cpp
+++ b/cpp/test/Ice/custom/TestAMDI.cpp
@@ -54,54 +54,45 @@ TestIntfI::opVariableArrayAsync(std::pair<const Test::Variable*, const Test::Var
}
void
-TestIntfI::opBoolRangeAsync(std::pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator> in,
+TestIntfI::opBoolRangeAsync(Test::BoolSeq in,
std::function<void(const Test::BoolSeq&, const Test::BoolSeq&)> response,
std::function<void(std::exception_ptr)>, const Ice::Current&)
{
- Test::BoolSeq out(in.first, in.second);
- response(out, out);
+ response(in, in);
}
void
-TestIntfI::opByteRangeAsync(std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> in,
- std::function<void(const std::pair<Test::ByteList::const_iterator,
- Test::ByteList::const_iterator>&,
- const std::pair<Test::ByteList::const_iterator,
- Test::ByteList::const_iterator>&)> response,
+TestIntfI::opByteRangeAsync(Test::ByteList in,
+ std::function<void(const Test::ByteList&, const Test::ByteList&)> response,
std::function<void(std::exception_ptr)>, const Ice::Current&)
{
response(in, in);
}
void
-TestIntfI::opVariableRangeAsync(std::pair<Test::VariableList::const_iterator,
- Test::VariableList::const_iterator> in,
+TestIntfI::opVariableRangeAsync(Test::VariableList in,
std::function<void(const Test::VariableList&, const Test::VariableList&)> response,
std::function<void(std::exception_ptr)>, const Ice::Current&)
{
- Test::VariableList out(in.first, in.second);
- response(out, out);
+ response(in, in);
}
void
-TestIntfI::opByteRangeTypeAsync(std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator> in,
+TestIntfI::opByteRangeTypeAsync(Test::ByteList in,
std::function<void(const Test::ByteList&, const Test::ByteList&)> response,
std::function<void(std::exception_ptr)>, const Ice::Current&)
{
- Test::ByteList out(in.first, in.second);
- response(out, out);
+ response(in, in);
}
void
-TestIntfI::opVariableRangeTypeAsync(std::pair<std::deque<Test::Variable>::const_iterator,
- std::deque<Test::Variable>::const_iterator> in,
+TestIntfI::opVariableRangeTypeAsync(Test::VariableList in,
std::function<void(const Test::VariableList&,
const Test::VariableList&)> response,
std::function<void(std::exception_ptr)>, const Ice::Current&)
{
- Test::VariableList out(in.first, in.second);
- response(out, out);
+ response(in, in);
}
void
@@ -291,11 +282,10 @@ TestIntfI::opOutArrayByteSeqAsync(Test::ByteSeq in,
void
TestIntfI::opOutRangeByteSeqAsync(Test::ByteSeq in,
- std::function<void(const std::pair<Test::ByteSeq::const_iterator,
- Test::ByteSeq::const_iterator>&)> response,
+ std::function<void(const Test::ByteSeq&)> response,
std::function<void(std::exception_ptr)>, const Ice::Current&)
{
- response(std::make_pair(in.begin(), in.end()));
+ response(in);
}
void
diff --git a/cpp/test/Ice/custom/TestAMDI.h b/cpp/test/Ice/custom/TestAMDI.h
index 095af0a68c4..1198e7b02b7 100644
--- a/cpp/test/Ice/custom/TestAMDI.h
+++ b/cpp/test/Ice/custom/TestAMDI.h
@@ -39,31 +39,26 @@ public:
std::function<void(const ::Test::VariableList&, const ::Test::VariableList&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
- void opBoolRangeAsync(std::pair< ::Test::BoolSeq::const_iterator, ::Test::BoolSeq::const_iterator>,
+ void opBoolRangeAsync(Test::BoolSeq,
std::function<void(const ::Test::BoolSeq&, const ::Test::BoolSeq&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
- void opByteRangeAsync(std::pair< ::Test::ByteList::const_iterator, ::Test::ByteList::const_iterator>,
- std::function<void(const std::pair< ::Test::ByteList::const_iterator,
- ::Test::ByteList::const_iterator>&,
- const std::pair< ::Test::ByteList::const_iterator,
- ::Test::ByteList::const_iterator>&)>,
+ void opByteRangeAsync(Test::ByteList,
+ std::function<void(const Test::ByteList&, const Test::ByteList&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
- void opVariableRangeAsync(std::pair< ::Test::VariableList::const_iterator,
- ::Test::VariableList::const_iterator>,
+ void opVariableRangeAsync(Test::VariableList,
std::function<void(const ::Test::VariableList&, const ::Test::VariableList&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
- void opByteRangeTypeAsync(std::pair< ::Test::ByteList::const_iterator, ::Test::ByteList::const_iterator>,
+ void opByteRangeTypeAsync(Test::ByteList,
std::function<void(const ::Test::ByteList&, const ::Test::ByteList&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
- void opVariableRangeTypeAsync(std::pair<std::deque< ::Test::Variable>::const_iterator,
- std::deque< ::Test::Variable>::const_iterator>,
+ void opVariableRangeTypeAsync(Test::VariableList,
std::function<void(const ::Test::VariableList&,
const ::Test::VariableList&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
@@ -185,8 +180,7 @@ public:
void opOutRangeByteSeqAsync(::Test::ByteSeq,
- std::function<void(const std::pair< ::Test::ByteSeq::const_iterator,
- ::Test::ByteSeq::const_iterator>&)>,
+ std::function<void(const Test::ByteSeq&)>,
std::function<void(std::exception_ptr)>, const Ice::Current&) override;
diff --git a/cpp/test/Ice/custom/TestI.cpp b/cpp/test/Ice/custom/TestI.cpp
index 5c0c31ef218..e7c254605a2 100644
--- a/cpp/test/Ice/custom/TestI.cpp
+++ b/cpp/test/Ice/custom/TestI.cpp
@@ -51,8 +51,48 @@ TestIntfI::opVariableArray(ICE_IN(std::pair<const Test::Variable*, const Test::V
return outSeq;
}
+#ifdef ICE_CPP11_MAPPING
+
+Test::BoolSeq
+TestIntfI::opBoolRange(Test::BoolSeq inSeq, Test::BoolSeq& outSeq, const Ice::Current&)
+{
+ outSeq.swap(inSeq);
+ return outSeq;
+}
+
+Test::ByteList
+TestIntfI::opByteRange(Test::ByteList inSeq, Test::ByteList& outSeq, const Ice::Current&)
+{
+ outSeq.swap(inSeq);
+ return outSeq;
+}
+
+Test::VariableList
+TestIntfI::opVariableRange(Test::VariableList inSeq, Test::VariableList& outSeq, const Ice::Current&)
+{
+ outSeq.swap(inSeq);
+ return outSeq;
+}
+
+
+Test::ByteList
+TestIntfI::opByteRangeType(Test::ByteList inSeq, Test::ByteList& outSeq, const Ice::Current&)
+{
+ outSeq.swap(inSeq);
+ return outSeq;
+}
+
+Test::VariableList
+TestIntfI::opVariableRangeType(Test::VariableList inSeq, Test::VariableList& outSeq, const Ice::Current&)
+{
+ outSeq.swap(inSeq);
+ return outSeq;
+}
+
+#else
+
Test::BoolSeq
-TestIntfI::opBoolRange(ICE_IN(std::pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator>) inSeq,
+TestIntfI::opBoolRange(const std::pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator>& inSeq,
Test::BoolSeq& outSeq,
const Ice::Current&)
{
@@ -61,7 +101,7 @@ TestIntfI::opBoolRange(ICE_IN(std::pair<Test::BoolSeq::const_iterator, Test::Boo
}
Test::ByteList
-TestIntfI::opByteRange(ICE_IN(std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>) inSeq,
+TestIntfI::opByteRange(const std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>& inSeq,
Test::ByteList& outSeq,
const Ice::Current&)
{
@@ -71,7 +111,7 @@ TestIntfI::opByteRange(ICE_IN(std::pair<Test::ByteList::const_iterator, Test::By
Test::VariableList
TestIntfI::opVariableRange(
- ICE_IN(std::pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator>) inSeq,
+ const std::pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator>& inSeq,
Test::VariableList& outSeq,
const Ice::Current&)
{
@@ -79,17 +119,9 @@ TestIntfI::opVariableRange(
return outSeq;
}
-Test::BoolSeq
-TestIntfI::opBoolRangeType(ICE_IN(std::pair<const bool*, const bool*>) inSeq,
- Test::BoolSeq& outSeq,
- const Ice::Current&)
-{
- Test::BoolSeq(inSeq.first, inSeq.second).swap(outSeq);
- return outSeq;
-}
Test::ByteList
-TestIntfI::opByteRangeType(ICE_IN(std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>) inSeq,
+TestIntfI::opByteRangeType(const std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>& inSeq,
Test::ByteList& outSeq,
const Ice::Current&)
{
@@ -99,7 +131,7 @@ TestIntfI::opByteRangeType(ICE_IN(std::pair<Test::ByteList::const_iterator, Test
Test::VariableList
TestIntfI::opVariableRangeType(
- ICE_IN(std::pair<std::deque<Test::Variable>::const_iterator, std::deque<Test::Variable>::const_iterator>) inSeq,
+ const std::pair<std::deque<Test::Variable>::const_iterator, std::deque<Test::Variable>::const_iterator>& inSeq,
Test::VariableList& outSeq,
const Ice::Current&)
{
@@ -110,6 +142,8 @@ TestIntfI::opVariableRangeType(
return outSeq;
}
+#endif
+
std::deque<bool>
TestIntfI::opBoolSeq(ICE_IN(std::deque<bool>) inSeq,
std::deque<bool>& outSeq,
@@ -147,9 +181,17 @@ TestIntfI::opBoolDequeListArray(ICE_IN(::std::pair<const std::deque<bool>*, cons
return outSeq;
}
+#ifdef ICE_CPP11_MAPPING
+Test::BoolDequeList
+TestIntfI::opBoolDequeListRange(Test::BoolDequeList inSeq, Test::BoolDequeList& outSeq, const ::Ice::Current&)
+{
+ outSeq.swap(inSeq);
+ return outSeq;
+}
+#else
::Test::BoolDequeList
-TestIntfI::opBoolDequeListRange(ICE_IN(::std::pair< ::Test::BoolDequeList::const_iterator,
- ::Test::BoolDequeList::const_iterator>) inSeq,
+TestIntfI::opBoolDequeListRange(const ::std::pair< ::Test::BoolDequeList::const_iterator,
+ ::Test::BoolDequeList::const_iterator>& inSeq,
::Test::BoolDequeList& outSeq,
const ::Ice::Current&)
{
@@ -159,6 +201,7 @@ TestIntfI::opBoolDequeListRange(ICE_IN(::std::pair< ::Test::BoolDequeList::const
}
return outSeq;
}
+#endif
std::deque< ::Ice::Byte>
TestIntfI::opByteSeq(ICE_IN(std::deque< ::Ice::Byte>) inSeq,
diff --git a/cpp/test/Ice/custom/TestI.h b/cpp/test/Ice/custom/TestI.h
index c45bcb76def..f0cf2cbd7ae 100644
--- a/cpp/test/Ice/custom/TestI.h
+++ b/cpp/test/Ice/custom/TestI.h
@@ -45,31 +45,44 @@ public:
Test::VariableList&,
const Ice::Current&);
- virtual Test::BoolSeq opBoolRange(ICE_IN(std::pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator>),
+#ifdef ICE_CPP11_MAPPING
+ virtual Test::BoolSeq opBoolRange(Test::BoolSeq, Test::BoolSeq&, const Ice::Current&);
+
+ virtual Test::ByteList opByteRange(Test::ByteList, Test::ByteList&, const Ice::Current&);
+
+ virtual Test::VariableList
+ opVariableRange(Test::VariableList, Test::VariableList&, const Ice::Current&);
+
+
+ virtual Test::ByteList opByteRangeType(Test::ByteList, Test::ByteList&, const Ice::Current&);
+
+ virtual Test::VariableList
+ opVariableRangeType(Test::VariableList, Test::VariableList&, const Ice::Current&);
+
+#else
+ virtual Test::BoolSeq opBoolRange(const std::pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator>&,
Test::BoolSeq&,
const Ice::Current&);
- virtual Test::ByteList opByteRange(ICE_IN(std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>),
+ virtual Test::ByteList opByteRange(const std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>&,
Test::ByteList&,
const Ice::Current&);
virtual Test::VariableList
- opVariableRange(ICE_IN(std::pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator>),
+ opVariableRange(const std::pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator>&,
Test::VariableList&,
const Ice::Current&);
- virtual Test::BoolSeq opBoolRangeType(ICE_IN(std::pair<const bool*, const bool*>),
- Test::BoolSeq&,
- const Ice::Current&);
- virtual Test::ByteList opByteRangeType(ICE_IN(std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>),
+ virtual Test::ByteList opByteRangeType(const std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>&,
Test::ByteList&,
const Ice::Current&);
virtual Test::VariableList
- opVariableRangeType(ICE_IN(std::pair<std::deque<Test::Variable>::const_iterator, std::deque<Test::Variable>::const_iterator>),
+ opVariableRangeType(const std::pair<std::deque<Test::Variable>::const_iterator, std::deque<Test::Variable>::const_iterator>&,
Test::VariableList&,
const Ice::Current&);
+#endif
virtual std::deque<bool> opBoolSeq(ICE_IN(std::deque<bool>),
std::deque<bool>&,
@@ -87,11 +100,18 @@ public:
::Test::BoolDequeList&,
const ::Ice::Current&);
+#ifdef ICE_CPP11_MAPPING
+ virtual ::Test::BoolDequeList opBoolDequeListRange(::Test::BoolDequeList,
+ ::Test::BoolDequeList&, const ::Ice::Current&);
+
+#else
virtual ::Test::BoolDequeList opBoolDequeListRange(
- ICE_IN(::std::pair< ::Test::BoolDequeList::const_iterator, ::Test::BoolDequeList::const_iterator>),
+ const ::std::pair< ::Test::BoolDequeList::const_iterator, ::Test::BoolDequeList::const_iterator>&,
::Test::BoolDequeList&,
const ::Ice::Current&);
+#endif
+
virtual std::deque< ::Ice::Byte> opByteSeq(ICE_IN(std::deque< ::Ice::Byte>),
std::deque< ::Ice::Byte>&,
const Ice::Current&);
diff --git a/cpp/test/Ice/custom/msbuild/client/client.vcxproj b/cpp/test/Ice/custom/msbuild/client/client.vcxproj
index 97dc60e59e6..6474195efa6 100644
--- a/cpp/test/Ice/custom/msbuild/client/client.vcxproj
+++ b/cpp/test/Ice/custom/msbuild/client/client.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Cpp11-Debug|Win32">
@@ -115,49 +115,41 @@
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">
<ClCompile>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
@@ -465,4 +457,4 @@
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Project="$(IceBuilderCppTargets)" Condition="Exists('$(IceBuilderCppTargets)')" />
-</Project> \ No newline at end of file
+</Project>
diff --git a/cpp/test/Ice/custom/msbuild/collocated/collocated.vcxproj b/cpp/test/Ice/custom/msbuild/collocated/collocated.vcxproj
index a0ee56db1fc..1bedb71a08a 100644
--- a/cpp/test/Ice/custom/msbuild/collocated/collocated.vcxproj
+++ b/cpp/test/Ice/custom/msbuild/collocated/collocated.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Cpp11-Debug|Win32">
@@ -115,49 +115,41 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
@@ -469,4 +461,4 @@
<PropertyGroup Label="UserMacros" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Project="$(IceBuilderCppTargets)" Condition="Exists('$(IceBuilderCppTargets)')" />
-</Project> \ No newline at end of file
+</Project>
diff --git a/cpp/test/Ice/custom/msbuild/server/server.vcxproj b/cpp/test/Ice/custom/msbuild/server/server.vcxproj
index 26c6da6951f..410fc59423f 100644
--- a/cpp/test/Ice/custom/msbuild/server/server.vcxproj
+++ b/cpp/test/Ice/custom/msbuild/server/server.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Cpp11-Debug|Win32">
@@ -115,49 +115,41 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
@@ -468,4 +460,4 @@
<PropertyGroup Label="UserMacros" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Project="$(IceBuilderCppTargets)" Condition="Exists('$(IceBuilderCppTargets)')" />
-</Project> \ No newline at end of file
+</Project>
diff --git a/cpp/test/Ice/custom/msbuild/serveramd/serveramd.vcxproj b/cpp/test/Ice/custom/msbuild/serveramd/serveramd.vcxproj
index 0ec804bde59..d3e6d8817b8 100644
--- a/cpp/test/Ice/custom/msbuild/serveramd/serveramd.vcxproj
+++ b/cpp/test/Ice/custom/msbuild/serveramd/serveramd.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Cpp11-Debug|Win32">
@@ -115,49 +115,41 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>STRING_VIEW_IGNORE_STRING_CONVERTER;ICE_AMD_TEST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
@@ -468,4 +460,4 @@
<PropertyGroup Label="UserMacros" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Project="$(IceBuilderCppTargets)" Condition="Exists('$(IceBuilderCppTargets)')" />
-</Project> \ No newline at end of file
+</Project>