diff --git a/Release/include/cpprest/json.h b/Release/include/cpprest/json.h
index 8fbbf947f2..9549f9b8d5 100644
--- a/Release/include/cpprest/json.h
+++ b/Release/include/cpprest/json.h
@@ -100,25 +100,37 @@ class value
/// Constructor creating a JSON number value
///
/// The C++ value to create a JSON value from
- _ASYNCRTIMP value(int32_t value);
+ _ASYNCRTIMP value(int value);
///
/// Constructor creating a JSON number value
///
/// The C++ value to create a JSON value from
- _ASYNCRTIMP value(uint32_t value);
+ _ASYNCRTIMP value(unsigned value);
///
/// Constructor creating a JSON number value
///
/// The C++ value to create a JSON value from
- _ASYNCRTIMP value(int64_t value);
+ _ASYNCRTIMP value(long value);
///
/// Constructor creating a JSON number value
///
/// The C++ value to create a JSON value from
- _ASYNCRTIMP value(uint64_t value);
+ _ASYNCRTIMP value(unsigned long value);
+
+ ///
+ /// Constructor creating a JSON number value
+ ///
+ /// The C++ value to create a JSON value from
+ _ASYNCRTIMP value(long long value);
+
+ ///
+ /// Constructor creating a JSON number value
+ ///
+ /// The C++ value to create a JSON value from
+ _ASYNCRTIMP value(unsigned long long value);
///
/// Constructor creating a JSON number value
@@ -222,28 +234,42 @@ class value
///
/// The C++ value to create a JSON value from
/// A JSON number value
- static _ASYNCRTIMP value __cdecl number(int32_t value);
+ static _ASYNCRTIMP value __cdecl number(int value);
+
+ ///
+ /// Creates a number value
+ ///
+ /// The C++ value to create a JSON value from
+ /// A JSON number value
+ static _ASYNCRTIMP value __cdecl number(unsigned value);
+
+ ///
+ /// Creates a number value
+ ///
+ /// The C++ value to create a JSON value from
+ /// A JSON number value
+ static _ASYNCRTIMP value __cdecl number(long value);
///
/// Creates a number value
///
/// The C++ value to create a JSON value from
/// A JSON number value
- static _ASYNCRTIMP value __cdecl number(uint32_t value);
+ static _ASYNCRTIMP value __cdecl number(unsigned long value);
///
/// Creates a number value
///
/// The C++ value to create a JSON value from
/// A JSON number value
- static _ASYNCRTIMP value __cdecl number(int64_t value);
+ static _ASYNCRTIMP value __cdecl number(long long value);
///
/// Creates a number value
///
/// The C++ value to create a JSON value from
/// A JSON number value
- static _ASYNCRTIMP value __cdecl number(uint64_t value);
+ static _ASYNCRTIMP value __cdecl number(unsigned long long value);
///
/// Creates a Boolean value
@@ -1218,10 +1244,12 @@ class number
// convert to unsigned int64). This helps handling number objects e.g. comparing two numbers.
number(double value) : m_value(value), m_type(double_type) {}
- number(int32_t value) : m_intval(value), m_type(value < 0 ? signed_type : unsigned_type) {}
- number(uint32_t value) : m_intval(value), m_type(unsigned_type) {}
- number(int64_t value) : m_intval(value), m_type(value < 0 ? signed_type : unsigned_type) {}
- number(uint64_t value) : m_uintval(value), m_type(unsigned_type) {}
+ number(int value) : m_intval(value), m_type(value < 0 ? signed_type : unsigned_type) {}
+ number(unsigned value) : m_intval(value), m_type(unsigned_type) {}
+ number(long value) : m_intval(value), m_type(value < 0 ? signed_type : unsigned_type) {}
+ number(unsigned long value) : m_uintval(value), m_type(unsigned_type) {}
+ number(long long value) : m_intval(value), m_type(value < 0 ? signed_type : unsigned_type) {}
+ number(unsigned long long value) : m_uintval(value), m_type(unsigned_type) {}
public:
///
@@ -1438,10 +1466,12 @@ class _Number : public _Value
{
public:
_Number(double value) : m_number(value) {}
- _Number(int32_t value) : m_number(value) {}
- _Number(uint32_t value) : m_number(value) {}
- _Number(int64_t value) : m_number(value) {}
- _Number(uint64_t value) : m_number(value) {}
+ _Number(int value) : m_number(value) {}
+ _Number(unsigned value) : m_number(value) {}
+ _Number(long value) : m_number(value) {}
+ _Number(unsigned long value) : m_number(value) {}
+ _Number(long long value) : m_number(value) {}
+ _Number(unsigned long long value) : m_number(value) {}
virtual std::unique_ptr<_Value> _copy_value() { return utility::details::make_unique<_Number>(*this); }
diff --git a/Release/src/json/json.cpp b/Release/src/json/json.cpp
index f1f0865d87..079ccae473 100644
--- a/Release/src/json/json.cpp
+++ b/Release/src/json/json.cpp
@@ -38,7 +38,7 @@ web::json::value::value()
{
}
-web::json::value::value(int32_t value)
+web::json::value::value(int value)
: m_value(utility::details::make_unique(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
@@ -46,7 +46,7 @@ web::json::value::value(int32_t value)
{
}
-web::json::value::value(uint32_t value)
+web::json::value::value(unsigned value)
: m_value(utility::details::make_unique(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
@@ -54,7 +54,8 @@ web::json::value::value(uint32_t value)
{
}
-web::json::value::value(int64_t value)
+
+web::json::value::value(long value)
: m_value(utility::details::make_unique(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
@@ -62,7 +63,23 @@ web::json::value::value(int64_t value)
{
}
-web::json::value::value(uint64_t value)
+web::json::value::value(unsigned long value)
+ : m_value(utility::details::make_unique(value))
+#ifdef ENABLE_JSON_VALUE_VISUALIZER
+ , m_kind(value::Number)
+#endif
+{
+}
+
+web::json::value::value(long long value)
+ : m_value(utility::details::make_unique(value))
+#ifdef ENABLE_JSON_VALUE_VISUALIZER
+ , m_kind(value::Number)
+#endif
+{
+}
+
+web::json::value::value(unsigned long long value)
: m_value(utility::details::make_unique(value))
#ifdef ENABLE_JSON_VALUE_VISUALIZER
, m_kind(value::Number)
@@ -162,13 +179,17 @@ web::json::value web::json::value::null() { return web::json::value(); }
web::json::value web::json::value::number(double value) { return web::json::value(value); }
-web::json::value web::json::value::number(int32_t value) { return web::json::value(value); }
+web::json::value web::json::value::number(int value) { return web::json::value(value); }
+
+web::json::value web::json::value::number(unsigned value) { return web::json::value(value); }
+
+web::json::value web::json::value::number(long value) { return web::json::value(value); }
-web::json::value web::json::value::number(uint32_t value) { return web::json::value(value); }
+web::json::value web::json::value::number(unsigned long value) { return web::json::value(value); }
-web::json::value web::json::value::number(int64_t value) { return web::json::value(value); }
+web::json::value web::json::value::number(long long value) { return web::json::value(value); }
-web::json::value web::json::value::number(uint64_t value) { return web::json::value(value); }
+web::json::value web::json::value::number(unsigned long long value) { return web::json::value(value); }
web::json::value web::json::value::boolean(bool value) { return web::json::value(value); }
diff --git a/Release/tests/functional/json/construction_tests.cpp b/Release/tests/functional/json/construction_tests.cpp
index 111b1454e1..7a9275b301 100644
--- a/Release/tests/functional/json/construction_tests.cpp
+++ b/Release/tests/functional/json/construction_tests.cpp
@@ -50,6 +50,61 @@ SUITE(construction_tests)
VERIFY_ARE_EQUAL(U("null"), arr[1].serialize());
}
+ TEST(int_assignment_op)
+ {
+ json::value v;
+ v = static_cast(1);
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+
+ v = static_cast(1);
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+
+ v = static_cast(1);
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+
+ v = static_cast(1);
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+
+ v = static_cast(1);
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+
+ v = static_cast(1);
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+
+ TEST(int_ctor)
+ {
+ {
+ json::value v(static_cast(1));
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+
+ {
+ json::value v(static_cast(1));
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+
+ {
+ json::value v(static_cast(1));
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+
+ {
+ json::value v(static_cast(1));
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+
+ {
+ json::value v(static_cast(1));
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+
+ {
+ json::value v(static_cast(1));
+ VERIFY_ARE_EQUAL(U("1"), v.serialize());
+ }
+ }
+
TEST(copy_ctor_array)
{
json::value arr = json::value::array();