mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-28 19:51:58 +01:00
Merge branch 'poco-1.10.0' into devel
This commit is contained in:
@@ -4,6 +4,9 @@ Release 1.10.0 (2020-01-xx)
|
|||||||
==========================
|
==========================
|
||||||
|
|
||||||
- This release now requires a C++14 compiler (GCC 5, Clang 3.4, Visual C++ 2015).
|
- This release now requires a C++14 compiler (GCC 5, Clang 3.4, Visual C++ 2015).
|
||||||
|
- Visual Studio project and solution files for versions prior to 2015 have
|
||||||
|
been removed. Furthermore, the separate projects and solutions for 64-bit builds
|
||||||
|
have been removed and configurations have been merged in a single project file.
|
||||||
- POCO's fixed-size integer types are now based on <cstdint> types. This changes
|
- POCO's fixed-size integer types are now based on <cstdint> types. This changes
|
||||||
the definition of Poco::Int64 and Poco::UInt64 on some platforms.
|
the definition of Poco::Int64 and Poco::UInt64 on some platforms.
|
||||||
- Many methods exposing raw pointers have been changed to use smart pointers
|
- Many methods exposing raw pointers have been changed to use smart pointers
|
||||||
@@ -86,6 +89,7 @@ Release 1.10.0 (2020-01-xx)
|
|||||||
- GH #2408: add ordered containers
|
- GH #2408: add ordered containers
|
||||||
- GH #2042: Android abstract namespace local socket address
|
- GH #2042: Android abstract namespace local socket address
|
||||||
- GH #2088: Fix race condition in TCPServerDispatcher.cpp
|
- GH #2088: Fix race condition in TCPServerDispatcher.cpp
|
||||||
|
- GH #2892: SocketImpl::bind --> bind wrong config
|
||||||
|
|
||||||
|
|
||||||
Release 1.9.4 (2019-09-18)
|
Release 1.9.4 (2019-09-18)
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ std::string Foundation_API format(const std::string& fmt, const Any& value);
|
|||||||
/// * - left align the result within the given field width
|
/// * - left align the result within the given field width
|
||||||
/// * + prefix the output value with a sign (+ or -) if the output value is of a signed type
|
/// * + prefix the output value with a sign (+ or -) if the output value is of a signed type
|
||||||
/// * 0 if width is prefixed with 0, zeros are added until the minimum width is reached
|
/// * 0 if width is prefixed with 0, zeros are added until the minimum width is reached
|
||||||
/// * # For o, x, X, the # flag prefixes any nonzero output value with 0, 0x, or 0X, respectively;
|
/// * # For o, x, X, the # flag prefixes any nonzero output value with 0, 0x, or 0X, respectively;
|
||||||
/// for e, E, f, the # flag forces the output value to contain a decimal point in all cases.
|
/// for e, E, f, the # flag forces the output value to contain a decimal point in all cases.
|
||||||
///
|
///
|
||||||
/// The following modifiers are supported:
|
/// The following modifiers are supported:
|
||||||
@@ -93,9 +93,9 @@ std::string Foundation_API format(const std::string& fmt, const Any& value);
|
|||||||
/// Throws an InvalidArgumentException if an argument index is out of range.
|
/// Throws an InvalidArgumentException if an argument index is out of range.
|
||||||
///
|
///
|
||||||
/// Starting with release 1.4.3, an argument that does not match the format
|
/// Starting with release 1.4.3, an argument that does not match the format
|
||||||
/// specifier no longer results in a BadCastException. The string [ERRFMT] is
|
/// specifier no longer results in a BadCastException. The string [ERRFMT] is
|
||||||
/// written to the result string instead.
|
/// written to the result string instead.
|
||||||
///
|
///
|
||||||
/// If there are more format specifiers than values, the format specifiers without a corresponding value
|
/// If there are more format specifiers than values, the format specifiers without a corresponding value
|
||||||
/// are copied verbatim to output.
|
/// are copied verbatim to output.
|
||||||
///
|
///
|
||||||
@@ -115,9 +115,9 @@ void Foundation_API format(std::string& result, const std::string& fmt, const st
|
|||||||
|
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename T,
|
typename T,
|
||||||
typename... Args>
|
typename... Args>
|
||||||
void format(std::string &result, const std::string &fmt, T arg1, Args... args)
|
void format(std::string& result, const std::string& fmt, T arg1, Args... args)
|
||||||
/// Appends the formatted string to result.
|
/// Appends the formatted string to result.
|
||||||
{
|
{
|
||||||
std::vector<Any> values;
|
std::vector<Any> values;
|
||||||
@@ -126,14 +126,42 @@ void format(std::string &result, const std::string &fmt, T arg1, Args... args)
|
|||||||
values.insert(values.end(), { args... });
|
values.insert(values.end(), { args... });
|
||||||
format(result, fmt, values);
|
format(result, fmt, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename FMT,
|
typename T,
|
||||||
typename T,
|
typename... Args>
|
||||||
typename... Args,
|
void format(std::string& result, const char* fmt, T arg1, Args... args)
|
||||||
typename std::enable_if<std::is_const<typename std::remove_reference<FMT>::type>::value, int>::type = 0>
|
/// Appends the formatted string to result.
|
||||||
std::string format(FMT &fmt, T arg1, Args... args)
|
{
|
||||||
|
std::vector<Any> values;
|
||||||
|
values.reserve(sizeof...(Args) + 1);
|
||||||
|
values.emplace_back(arg1);
|
||||||
|
values.insert(values.end(), { args... });
|
||||||
|
format(result, fmt, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <
|
||||||
|
typename T,
|
||||||
|
typename... Args>
|
||||||
|
std::string format(const std::string& fmt, T arg1, Args... args)
|
||||||
|
/// Returns the formatted string.
|
||||||
|
{
|
||||||
|
std::vector<Any> values;
|
||||||
|
values.reserve(sizeof...(Args) + 1);
|
||||||
|
values.emplace_back(arg1);
|
||||||
|
values.insert(values.end(), { args... });
|
||||||
|
std::string result;
|
||||||
|
format(result, fmt, values);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <
|
||||||
|
typename T,
|
||||||
|
typename... Args>
|
||||||
|
std::string format(const char* fmt, T arg1, Args... args)
|
||||||
/// Returns the formatted string.
|
/// Returns the formatted string.
|
||||||
{
|
{
|
||||||
std::vector<Any> values;
|
std::vector<Any> values;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class MongoDB_API Array: public Document
|
|||||||
/// This class represents a BSON Array.
|
/// This class represents a BSON Array.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<Array> Ptr;
|
using Ptr = SharedPtr<Array>;
|
||||||
|
|
||||||
Array();
|
Array();
|
||||||
/// Creates an empty Array.
|
/// Creates an empty Array.
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class MongoDB_API Binary
|
|||||||
/// A Binary stores its data in a Poco::Buffer<unsigned char>.
|
/// A Binary stores its data in a Poco::Buffer<unsigned char>.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<Binary> Ptr;
|
using Ptr = SharedPtr<Binary>;
|
||||||
|
|
||||||
Binary();
|
Binary();
|
||||||
/// Creates an empty Binary with subtype 0.
|
/// Creates an empty Binary with subtype 0.
|
||||||
@@ -48,12 +48,12 @@ public:
|
|||||||
|
|
||||||
Binary(const UUID& uuid);
|
Binary(const UUID& uuid);
|
||||||
/// Creates a Binary containing an UUID.
|
/// Creates a Binary containing an UUID.
|
||||||
|
|
||||||
Binary(const std::string& data, unsigned char subtype = 0);
|
Binary(const std::string& data, unsigned char subtype = 0);
|
||||||
/// Creates a Binary with the contents of the given string and the given subtype.
|
/// Creates a Binary with the contents of the given string and the given subtype.
|
||||||
|
|
||||||
Binary(const void* data, Poco::Int32 size, unsigned char subtype = 0);
|
Binary(const void* data, Poco::Int32 size, unsigned char subtype = 0);
|
||||||
/// Creates a Binary with the contents of the given buffer and the given subtype.
|
/// Creates a Binary with the contents of the given buffer and the given subtype.
|
||||||
|
|
||||||
virtual ~Binary();
|
virtual ~Binary();
|
||||||
/// Destroys the Binary.
|
/// Destroys the Binary.
|
||||||
@@ -69,7 +69,7 @@ public:
|
|||||||
|
|
||||||
std::string toString(int indent = 0) const;
|
std::string toString(int indent = 0) const;
|
||||||
/// Returns the contents of the Binary as Base64-encoded string.
|
/// Returns the contents of the Binary as Base64-encoded string.
|
||||||
|
|
||||||
std::string toRawString() const;
|
std::string toRawString() const;
|
||||||
/// Returns the raw content of the Binary as a string.
|
/// Returns the raw content of the Binary as a string.
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ inline void BSONReader::read<Binary::Ptr>(Binary::Ptr& to)
|
|||||||
unsigned char subtype;
|
unsigned char subtype;
|
||||||
_reader >> subtype;
|
_reader >> subtype;
|
||||||
to->subtype(subtype);
|
to->subtype(subtype);
|
||||||
|
|
||||||
_reader.readRaw((char*) to->buffer().begin(), size);
|
_reader.readRaw((char*) to->buffer().begin(), size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class MongoDB_API Connection
|
|||||||
/// for more information on the wire protocol.
|
/// for more information on the wire protocol.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef Poco::SharedPtr<Connection> Ptr;
|
using Ptr = Poco::SharedPtr<Connection>;
|
||||||
|
|
||||||
class MongoDB_API SocketFactory
|
class MongoDB_API SocketFactory
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace MongoDB {
|
|||||||
class ElementFindByName
|
class ElementFindByName
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ElementFindByName(const std::string& name):
|
ElementFindByName(const std::string& name):
|
||||||
_name(name)
|
_name(name)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -52,8 +52,8 @@ class MongoDB_API Document
|
|||||||
/// Represents a MongoDB (BSON) document.
|
/// Represents a MongoDB (BSON) document.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<Document> Ptr;
|
using Ptr = SharedPtr<Document>;
|
||||||
typedef std::vector<Document::Ptr> Vector;
|
using Vector = std::vector<Document::Ptr>;
|
||||||
|
|
||||||
Document();
|
Document();
|
||||||
/// Creates an empty Document.
|
/// Creates an empty Document.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class MongoDB_API Element
|
|||||||
/// Represents an Element of a Document or an Array.
|
/// Represents an Element of a Document or an Array.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef Poco::SharedPtr<Element> Ptr;
|
using Ptr = Poco::SharedPtr<Element>;
|
||||||
|
|
||||||
explicit Element(const std::string& name);
|
explicit Element(const std::string& name);
|
||||||
/// Creates the Element with the given name.
|
/// Creates the Element with the given name.
|
||||||
@@ -78,10 +78,10 @@ inline const std::string& Element::name() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef std::list<Element::Ptr> ElementSet;
|
using ElementSet = std::list<Element::Ptr>;
|
||||||
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct ElementTraits
|
struct ElementTraits
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
@@ -259,7 +259,7 @@ inline void BSONWriter::write<Timestamp>(Timestamp& from)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef Nullable<unsigned char> NullValue;
|
using NullValue = Nullable<unsigned char>;
|
||||||
|
|
||||||
|
|
||||||
// BSON Null Value
|
// BSON Null Value
|
||||||
@@ -288,7 +288,7 @@ inline void BSONWriter::write<NullValue>(NullValue& from)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct BSONTimestamp
|
struct BSONTimestamp
|
||||||
{
|
{
|
||||||
Poco::Timestamp ts;
|
Poco::Timestamp ts;
|
||||||
Poco::Int32 inc;
|
Poco::Int32 inc;
|
||||||
@@ -355,7 +355,7 @@ class ConcreteElement: public Element
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ConcreteElement(const std::string& name, const T& init):
|
ConcreteElement(const std::string& name, const T& init):
|
||||||
Element(name),
|
Element(name),
|
||||||
_value(init)
|
_value(init)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -364,7 +364,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
T value() const
|
T value() const
|
||||||
{
|
{
|
||||||
return _value;
|
return _value;
|
||||||
@@ -376,7 +376,7 @@ public:
|
|||||||
return ElementTraits<T>::toString(_value, indent);
|
return ElementTraits<T>::toString(_value, indent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int type() const
|
int type() const
|
||||||
{
|
{
|
||||||
return ElementTraits<T>::TypeId;
|
return ElementTraits<T>::TypeId;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class MongoDB_API JavaScriptCode
|
|||||||
/// Represents JavaScript type in BSON.
|
/// Represents JavaScript type in BSON.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<JavaScriptCode> Ptr;
|
using Ptr = SharedPtr<JavaScriptCode>;
|
||||||
|
|
||||||
JavaScriptCode();
|
JavaScriptCode();
|
||||||
/// Creates an empty JavaScriptCode object.
|
/// Creates an empty JavaScriptCode object.
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ class MongoDB_API ObjectId
|
|||||||
/// as its value.
|
/// as its value.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<ObjectId> Ptr;
|
using Ptr = SharedPtr<ObjectId>;
|
||||||
|
|
||||||
explicit ObjectId(const std::string& id);
|
explicit ObjectId(const std::string& id);
|
||||||
/// Creates an ObjectId from a string.
|
/// Creates an ObjectId from a string.
|
||||||
///
|
///
|
||||||
/// The string must contain a hexadecimal representation
|
/// The string must contain a hexadecimal representation
|
||||||
/// of an object ID. This means a string of 24 characters.
|
/// of an object ID. This means a string of 24 characters.
|
||||||
@@ -61,15 +61,15 @@ public:
|
|||||||
|
|
||||||
std::string toString(const std::string& fmt = "%02x") const;
|
std::string toString(const std::string& fmt = "%02x") const;
|
||||||
/// Returns the id in string format. The fmt parameter
|
/// Returns the id in string format. The fmt parameter
|
||||||
/// specifies the formatting used for individual members
|
/// specifies the formatting used for individual members
|
||||||
/// of the ID char array.
|
/// of the ID char array.
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ObjectId();
|
ObjectId();
|
||||||
|
|
||||||
static int fromHex(char c);
|
static int fromHex(char c);
|
||||||
static char fromHex(const char* c);
|
static char fromHex(const char* c);
|
||||||
|
|
||||||
unsigned char _id[12];
|
unsigned char _id[12];
|
||||||
|
|
||||||
friend class BSONWriter;
|
friend class BSONWriter;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class MongoDB_API RegularExpression
|
|||||||
/// Represents a regular expression in BSON format.
|
/// Represents a regular expression in BSON format.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<RegularExpression> Ptr;
|
using Ptr = SharedPtr<RegularExpression>;
|
||||||
|
|
||||||
RegularExpression();
|
RegularExpression();
|
||||||
/// Creates an empty RegularExpression.
|
/// Creates an empty RegularExpression.
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ void SocketImpl::bind(const SocketAddress& address, bool reuseAddress, bool reus
|
|||||||
|
|
||||||
void SocketImpl::bind6(const SocketAddress& address, bool reuseAddress, bool ipV6Only)
|
void SocketImpl::bind6(const SocketAddress& address, bool reuseAddress, bool ipV6Only)
|
||||||
{
|
{
|
||||||
bind6(address, reuseAddress, true, ipV6Only);
|
bind6(address, reuseAddress, reuseAddress, ipV6Only);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -278,14 +278,6 @@ protected:
|
|||||||
Environment::set("PATH", path);
|
Environment::set("PATH", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger().debug("exec " + exec);
|
|
||||||
logger().debug("path " + path);
|
|
||||||
for (int no = 0; no < args.size(); ++no)
|
|
||||||
{
|
|
||||||
logger().debug("arg " + args[no]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (usePipe)
|
if (usePipe)
|
||||||
{
|
{
|
||||||
Poco::Pipe inPipe;
|
Poco::Pipe inPipe;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class Redis_API Array
|
|||||||
/// value.
|
/// value.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef std::vector<RedisType::Ptr>::const_iterator const_iterator;
|
using const_iterator = std::vector<RedisType::Ptr>::const_iterator;
|
||||||
|
|
||||||
Array();
|
Array();
|
||||||
/// Creates an Array. As long as there are no elements added,
|
/// Creates an Array. As long as there are no elements added,
|
||||||
@@ -99,7 +99,7 @@ public:
|
|||||||
/// Adds a simple string (can't contain newline characters!).
|
/// Adds a simple string (can't contain newline characters!).
|
||||||
|
|
||||||
const_iterator begin() const;
|
const_iterator begin() const;
|
||||||
/// Returns an iterator to the start of the array.
|
/// Returns an iterator to the start of the array.
|
||||||
///
|
///
|
||||||
/// Note: this can throw a NullValueException when this is a Null array.
|
/// Note: this can throw a NullValueException when this is a Null array.
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ public:
|
|||||||
/// Removes all elements from the array.
|
/// Removes all elements from the array.
|
||||||
|
|
||||||
const_iterator end() const;
|
const_iterator end() const;
|
||||||
/// Returns an iterator to the end of the array.
|
/// Returns an iterator to the end of the array.
|
||||||
///
|
///
|
||||||
/// Note: this can throw a NullValueException when this is a Null array.
|
/// Note: this can throw a NullValueException when this is a Null array.
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ public:
|
|||||||
/// Redis Protocol specification.
|
/// Redis Protocol specification.
|
||||||
|
|
||||||
size_t size() const;
|
size_t size() const;
|
||||||
/// Returns the size of the array.
|
/// Returns the size of the array.
|
||||||
///
|
///
|
||||||
/// Note: this can throw a NullValueException when this is a Null array.
|
/// Note: this can throw a NullValueException when this is a Null array.
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ private:
|
|||||||
void checkNull();
|
void checkNull();
|
||||||
/// Checks for null array and sets a new vector if true.
|
/// Checks for null array and sets a new vector if true.
|
||||||
|
|
||||||
Nullable<std::vector<RedisType::Ptr> > _elements;
|
Nullable<std::vector<RedisType::Ptr>> _elements;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class Redis_API Client
|
|||||||
/// bit integer, a simple string, a bulk string, an array or an error. The
|
/// bit integer, a simple string, a bulk string, an array or an error. The
|
||||||
/// first element of the command array is the Redis command. A simple string
|
/// first element of the command array is the Redis command. A simple string
|
||||||
/// is a string that cannot contain a CR or LF character. A bulk string is
|
/// is a string that cannot contain a CR or LF character. A bulk string is
|
||||||
/// implemented as a typedef for Poco::Nullable<std::string>. This is
|
/// implemented as an alias for Poco::Nullable<std::string>. This is
|
||||||
/// because a bulk string can represent a Null value.
|
/// because a bulk string can represent a Null value.
|
||||||
///
|
///
|
||||||
/// BulkString bs = client.execute<BulkString>(...);
|
/// BulkString bs = client.execute<BulkString>(...);
|
||||||
@@ -71,7 +71,7 @@ class Redis_API Client
|
|||||||
/// command << "list";
|
/// command << "list";
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef SharedPtr<Client> Ptr;
|
using Ptr = SharedPtr<Client>;
|
||||||
|
|
||||||
Client();
|
Client();
|
||||||
/// Creates an unconnected Client.
|
/// Creates an unconnected Client.
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class Redis_API Command: public Array
|
|||||||
///
|
///
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef std::vector<std::string> StringVec;
|
using StringVec = std::vector<std::string>;
|
||||||
|
|
||||||
Command(const std::string& command);
|
Command(const std::string& command);
|
||||||
/// Creates a command.
|
/// Creates a command.
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class Redis_API RedisType
|
|||||||
/// element with different types in Array.
|
/// element with different types in Array.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum Types
|
enum Types
|
||||||
{
|
{
|
||||||
REDIS_INTEGER, /// Redis Integer
|
REDIS_INTEGER, /// Redis Integer
|
||||||
REDIS_SIMPLE_STRING, /// Redis Simple String
|
REDIS_SIMPLE_STRING, /// Redis Simple String
|
||||||
@@ -45,7 +45,7 @@ public:
|
|||||||
REDIS_ERROR /// Redis Error
|
REDIS_ERROR /// Redis Error
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef SharedPtr<RedisType> Ptr;
|
using Ptr = SharedPtr<RedisType>;
|
||||||
|
|
||||||
RedisType();
|
RedisType();
|
||||||
/// Creates the RedisType.
|
/// Creates the RedisType.
|
||||||
@@ -132,9 +132,9 @@ struct RedisTypeTraits
|
|||||||
template<>
|
template<>
|
||||||
struct RedisTypeTraits<Int64>
|
struct RedisTypeTraits<Int64>
|
||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
TypeId = RedisType::REDIS_INTEGER
|
TypeId = RedisType::REDIS_INTEGER
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char marker = ':';
|
static const char marker = ':';
|
||||||
@@ -155,9 +155,9 @@ struct RedisTypeTraits<Int64>
|
|||||||
template<>
|
template<>
|
||||||
struct RedisTypeTraits<std::string>
|
struct RedisTypeTraits<std::string>
|
||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
TypeId = RedisType::REDIS_SIMPLE_STRING
|
TypeId = RedisType::REDIS_SIMPLE_STRING
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char marker = '+';
|
static const char marker = '+';
|
||||||
@@ -174,17 +174,17 @@ struct RedisTypeTraits<std::string>
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef Nullable<std::string> BulkString;
|
using BulkString = Nullable<std::string>;
|
||||||
/// A bulk string is a string that can contain a NULL value.
|
/// A bulk string is a string that can contain a NULL value.
|
||||||
/// So, BulkString is a typedef for Nullable<std::string>.
|
/// So, BulkString is an alias for Nullable<std::string>.
|
||||||
|
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
struct RedisTypeTraits<BulkString>
|
struct RedisTypeTraits<BulkString>
|
||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
TypeId = RedisType::REDIS_BULK_STRING
|
TypeId = RedisType::REDIS_BULK_STRING
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char marker = '$';
|
static const char marker = '$';
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ SHAREDLIBLINKEXT = .dylib
|
|||||||
# Compiler and Linker Flags
|
# Compiler and Linker Flags
|
||||||
#
|
#
|
||||||
CFLAGS = $(ARCHFLAGS) $(OSFLAGS) -std=c99
|
CFLAGS = $(ARCHFLAGS) $(OSFLAGS) -std=c99
|
||||||
CXXFLAGS = $(ARCHFLAGS) $(OSFLAGS) -std=c++11 -stdlib=libc++ -Wall -Wno-sign-compare -Wno-unused-variable -Wno-unused-function -Wno-unneeded-internal-declaration
|
CXXFLAGS = $(ARCHFLAGS) $(OSFLAGS) -std=c++14 -stdlib=libc++ -Wall -Wno-sign-compare -Wno-unused-variable -Wno-unused-function -Wno-unneeded-internal-declaration
|
||||||
LINKFLAGS = $(ARCHFLAGS) $(OSFLAGS) -stdlib=libc++
|
LINKFLAGS = $(ARCHFLAGS) $(OSFLAGS) -stdlib=libc++
|
||||||
SHLIBFLAGS = $(ARCHFLAGS) $(OSFLAGS) -stdlib=libc++
|
SHLIBFLAGS = $(ARCHFLAGS) $(OSFLAGS) -stdlib=libc++
|
||||||
DYLIBFLAGS = $(ARCHFLAGS) $(OSFLAGS) -stdlib=libc++
|
DYLIBFLAGS = $(ARCHFLAGS) $(OSFLAGS) -stdlib=libc++
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ AAAIntroduction
|
|||||||
!!Summary of Changes
|
!!Summary of Changes
|
||||||
|
|
||||||
- This release now requires a C++14 compiler (GCC 5, Clang 3.4, Visual C++ 2015).
|
- This release now requires a C++14 compiler (GCC 5, Clang 3.4, Visual C++ 2015).
|
||||||
|
- Visual Studio project and solution files for versions prior to 2015 have
|
||||||
|
been removed. Furthermore, the separate projects and solutions for 64-bit builds
|
||||||
|
have been removed and configurations have been merged in a single project file.
|
||||||
- POCO's fixed-size integer types are now based on <cstdint> types. This changes
|
- POCO's fixed-size integer types are now based on <cstdint> types. This changes
|
||||||
the definition of Poco::Int64 and Poco::UInt64 on some platforms.
|
the definition of Poco::Int64 and Poco::UInt64 on some platforms.
|
||||||
- Many methods exposing raw pointers have been changed to use smart pointers
|
- Many methods exposing raw pointers have been changed to use smart pointers
|
||||||
@@ -88,6 +91,7 @@ AAAIntroduction
|
|||||||
- GH #2408: add ordered containers
|
- GH #2408: add ordered containers
|
||||||
- GH #2042: Android abstract namespace local socket address
|
- GH #2042: Android abstract namespace local socket address
|
||||||
- GH #2088: Fix race condition in TCPServerDispatcher.cpp
|
- GH #2088: Fix race condition in TCPServerDispatcher.cpp
|
||||||
|
- GH #2892: SocketImpl::bind --> bind wrong config
|
||||||
|
|
||||||
!!Incompatible Changes and Possible Transition Issues
|
!!Incompatible Changes and Possible Transition Issues
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user