Add VS2013 support back.
This commit is contained in:
+2
-2
@@ -72,12 +72,12 @@ static const char kInverse[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Return max chars needed to encode a base64 string.
|
// Return max chars needed to encode a base64 string.
|
||||||
inline std::size_t constexpr EncodedSize(std::size_t n) {
|
inline std::size_t EncodedSize(std::size_t n) {
|
||||||
return 4 * ((n + 2) / 3);
|
return 4 * ((n + 2) / 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return max bytes needed to decode a base64 string.
|
// Return max bytes needed to decode a base64 string.
|
||||||
inline std::size_t constexpr DecodedSize(std::size_t n) {
|
inline std::size_t DecodedSize(std::size_t n) {
|
||||||
// return 3 * n / 4;
|
// return 3 * n / 4;
|
||||||
return n / 4 * 3; // requires n&3==0, smaller
|
return n / 4 * 3; // requires n&3==0, smaller
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
#ifndef WEBCC_BASE64_H_
|
#ifndef WEBCC_BASE64_H_
|
||||||
#define WEBCC_BASE64_H_
|
#define WEBCC_BASE64_H_
|
||||||
|
|
||||||
#include <cctype>
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace webcc {
|
namespace webcc {
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ static bool ReadFile(const std::string& path, std::string* output) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto size = ifs.tellg();
|
auto size = ifs.tellg();
|
||||||
output->resize(size, '\0');
|
output->resize((std::size_t)size, '\0');
|
||||||
ifs.seekg(0);
|
ifs.seekg(0);
|
||||||
ifs.read(&(*output)[0], size); // TODO: Error handling
|
ifs.read(&(*output)[0], size); // TODO: Error handling
|
||||||
|
|
||||||
|
|||||||
+32
-1
@@ -5,6 +5,37 @@
|
|||||||
#include <exception>
|
#include <exception>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// Macros
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
|
||||||
|
#if _MSC_VER <= 1800 // VS 2013
|
||||||
|
|
||||||
|
// Does the compiler support "= default" for move copy constructor and
|
||||||
|
// move assignment operator?
|
||||||
|
#define WEBCC_DEFAULT_MOVE_COPY_ASSIGN 0
|
||||||
|
|
||||||
|
#define WEBCC_NOEXCEPT
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define WEBCC_DEFAULT_MOVE_COPY_ASSIGN 1
|
||||||
|
|
||||||
|
#define WEBCC_NOEXCEPT noexcept
|
||||||
|
|
||||||
|
#endif // _MSC_VER <= 1800
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// GCC, Clang, etc.
|
||||||
|
|
||||||
|
#define WEBCC_DEFAULT_MOVE_COPY_ASSIGN 1
|
||||||
|
|
||||||
|
#define WEBCC_NOEXCEPT noexcept
|
||||||
|
|
||||||
|
#endif // _MSC_VER
|
||||||
|
|
||||||
namespace webcc {
|
namespace webcc {
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@@ -183,7 +214,7 @@ public:
|
|||||||
Error error() const { return error_; }
|
Error error() const { return error_; }
|
||||||
|
|
||||||
// Note that `noexcept` is required by GCC.
|
// Note that `noexcept` is required by GCC.
|
||||||
const char* what() const noexcept override {
|
const char* what() const WEBCC_NOEXCEPT override{
|
||||||
return msg_.c_str();
|
return msg_.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,9 +46,30 @@ public:
|
|||||||
as_cdata_(false) {
|
as_cdata_(false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if WEBCC_DEFAULT_MOVE_COPY_ASSIGN
|
||||||
|
|
||||||
SoapParameter(SoapParameter&&) = default;
|
SoapParameter(SoapParameter&&) = default;
|
||||||
SoapParameter& operator=(SoapParameter&&) = default;
|
SoapParameter& operator=(SoapParameter&&) = default;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
SoapParameter(SoapParameter&& rhs)
|
||||||
|
: key_(std::move(rhs.key_)),
|
||||||
|
value_(std::move(rhs.value_)),
|
||||||
|
as_cdata_(rhs.as_cdata_) {
|
||||||
|
}
|
||||||
|
|
||||||
|
SoapParameter& operator=(SoapParameter&& rhs) {
|
||||||
|
if (&rhs != this) {
|
||||||
|
key_ = std::move(rhs.key_);
|
||||||
|
value_ = std::move(rhs.value_);
|
||||||
|
as_cdata_ = rhs.as_cdata_;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // WEBCC_DEFAULT_MOVE_COPY_ASSIGN
|
||||||
|
|
||||||
const std::string& key() const { return key_; }
|
const std::string& key() const { return key_; }
|
||||||
const std::string& value() const { return value_; }
|
const std::string& value() const { return value_; }
|
||||||
|
|
||||||
|
|||||||
+25
@@ -61,9 +61,34 @@ public:
|
|||||||
|
|
||||||
explicit Url(const std::string& str, bool decode = true);
|
explicit Url(const std::string& str, bool decode = true);
|
||||||
|
|
||||||
|
#if WEBCC_DEFAULT_MOVE_COPY_ASSIGN
|
||||||
|
|
||||||
Url(Url&&) = default;
|
Url(Url&&) = default;
|
||||||
Url& operator=(Url&&) = default;
|
Url& operator=(Url&&) = default;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
Url(Url&& rhs)
|
||||||
|
: scheme_(std::move(rhs.scheme_)),
|
||||||
|
host_(std::move(rhs.host_)),
|
||||||
|
port_(std::move(rhs.port_)),
|
||||||
|
path_(std::move(rhs.path_)),
|
||||||
|
query_(std::move(rhs.query_)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
Url& operator=(Url&& rhs) {
|
||||||
|
if (&rhs != this) {
|
||||||
|
scheme_ = std::move(rhs.scheme_);
|
||||||
|
host_ = std::move(rhs.host_);
|
||||||
|
port_ = std::move(rhs.port_);
|
||||||
|
path_ = std::move(rhs.path_);
|
||||||
|
query_ = std::move(rhs.query_);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // WEBCC_DEFAULT_MOVE_COPY_ASSIGN
|
||||||
|
|
||||||
void Init(const std::string& str, bool decode = true, bool clear = true);
|
void Init(const std::string& str, bool decode = true, bool clear = true);
|
||||||
|
|
||||||
const std::string& scheme() const {
|
const std::string& scheme() const {
|
||||||
|
|||||||
Reference in New Issue
Block a user