Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/json.cc
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ int json::get() const
switch (type_)
{
case (value_t::number):
return value_.number;
return static_cast<int>(value_.number);
case (value_t::number_float):
return static_cast<int>(value_.number_float);
default:
Expand Down Expand Up @@ -2371,7 +2371,7 @@ std::string json::parser::codePointToUTF8(unsigned int codePoint) const
{
// Can't be tested without direct access to this private method.
std::string errorMessage = "Invalid codePoint: ";
errorMessage += codePoint;
errorMessage += static_cast<char>(codePoint);
error(errorMessage);
}
}
Expand Down Expand Up @@ -2584,6 +2584,8 @@ void json::parser::expect(const char c)

}


#if !_MSC_VER
/*!
This operator implements a user-defined string literal for JSON objects. It can
be used by adding \p "_json" to a string literal and returns a JSON object if
Expand All @@ -2596,3 +2598,4 @@ nlohmann::json operator "" _json(const char* s, std::size_t)
{
return nlohmann::json::parse(s);
}
#endif
35 changes: 35 additions & 0 deletions src/json.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@
#include <limits> // std::numeric_limits
#include <functional> // std::hash

#if _MSC_VER

#ifndef _MSC_EXTENSIONS
#define _MSC_EXTENSIONS
#endif

#include <iso646.h>

#ifdef _NOEXCEPT
#define noexcept _NOEXCEPT
#endif

#endif

namespace nlohmann
{

Expand Down Expand Up @@ -515,7 +529,13 @@ class json
/// read the next character, stripping whitespace
bool next();
/// raise an exception with an error message

#if _MSC_VER
__declspec(noreturn) inline void error(const std::string&) const;
#else
[[noreturn]] inline void error(const std::string&) const;
#endif

/// parse a quoted string
inline std::string parseString();
/// transforms a unicode codepoint to it's UTF-8 presentation
Expand Down Expand Up @@ -545,12 +565,17 @@ class json

}


#if !_MSC_VER
/// user-defined literal operator to create JSON objects from strings
nlohmann::json operator "" _json(const char*, std::size_t);
#endif

// specialization of std::swap, and std::hash
namespace std
{

#if !_MSC_VER
template <>
/// swaps the values of two JSON objects
inline void swap(nlohmann::json& j1,
Expand All @@ -561,6 +586,16 @@ inline void swap(nlohmann::json& j1,
{
j1.swap(j2);
}
#else
template <>
/// swaps the values of two JSON objects
inline void swap(nlohmann::json& j1,
nlohmann::json& j2)
{
j1.swap(j2);
}

#endif

template <>
/// hash value for JSON objects
Expand Down