WPILibC++  unspecified
wpi::detail Namespace Reference

unnamed namespace with internal helper functions More...

Classes

struct  conjunction
 
struct  conjunction< B1 >
 
struct  conjunction< B1, Bn... >
 
class  exception
 general exception of the json class More...
 
struct  external_constructor
 
struct  external_constructor< value_t::array >
 
struct  external_constructor< value_t::boolean >
 
struct  external_constructor< value_t::number_float >
 
struct  external_constructor< value_t::number_integer >
 
struct  external_constructor< value_t::number_unsigned >
 
struct  external_constructor< value_t::object >
 
struct  external_constructor< value_t::string >
 
struct  from_json_fn
 
class  invalid_iterator
 exception indicating errors with iterators More...
 
struct  is_compatible_array_type
 
struct  is_compatible_integer_type
 
struct  is_compatible_integer_type_impl
 
struct  is_compatible_integer_type_impl< true, RealIntegerType, CompatibleNumberIntegerType >
 
struct  is_compatible_object_type
 
struct  is_compatible_object_type_impl
 
struct  is_compatible_object_type_impl< true, RealType, CompatibleObjectType >
 
struct  is_json_nested_type
 
struct  negation
 
class  other_error
 exception indicating other errors More...
 
class  out_of_range
 exception indicating access out of the defined range More...
 
class  parse_error
 exception indicating a parse error More...
 
struct  priority_tag
 
struct  priority_tag< 0 >
 
class  SafeThreadOwnerBase
 
class  SafeThreadProxy
 
class  SafeThreadProxyBase
 
struct  static_const
 
struct  to_json_fn
 
class  type_error
 exception indicating executing a member function with a wrong type More...
 

Typedefs

template<bool B, typename T = void>
using enable_if_t = typename std::enable_if< B, T >::type
 
template<typename T >
using uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 

Enumerations

enum  value_t : uint8_t {
  value_t::null, value_t::object, value_t::array, value_t::string,
  value_t::boolean, value_t::number_integer, value_t::number_unsigned, value_t::number_float,
  value_t::discarded
}
 the JSON type enumeration More...
 

Functions

bool operator< (const value_t lhs, const value_t rhs) noexcept
 comparison operator for JSON types More...
 
 WPI_JSON_HAS_HELPER (mapped_type)
 
 WPI_JSON_HAS_HELPER (key_type)
 
 WPI_JSON_HAS_HELPER (value_type)
 
 WPI_JSON_HAS_HELPER (iterator)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, bool >::value, int > = 0>
void to_json (BasicJsonType &j, T b) noexcept
 
template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< llvm::StringRef, CompatibleString >::value, int > = 0>
void to_json (BasicJsonType &j, const CompatibleString &s)
 
template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
void to_json (BasicJsonType &j, FloatType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< std::uint64_t, CompatibleNumberUnsignedType >::value, int > = 0>
void to_json (BasicJsonType &j, CompatibleNumberUnsignedType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< std::int64_t, CompatibleNumberIntegerType >::value, int > = 0>
void to_json (BasicJsonType &j, CompatibleNumberIntegerType val) noexcept
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void to_json (BasicJsonType &j, EnumType e) noexcept
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, const std::vector< bool > &e)
 
template<typename BasicJsonType , typename T >
void to_json (BasicJsonType &j, llvm::ArrayRef< T > arr)
 
template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value||std::is_same< typename BasicJsonType::array_t, CompatibleArrayType >::value, int > = 0>
void to_json (BasicJsonType &j, const CompatibleArrayType &arr)
 
template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value, int > = 0>
void to_json (BasicJsonType &j, const CompatibleObjectType &arr)
 
template<typename BasicJsonType , typename T , std::size_t N, enable_if_t<!std::is_constructible< llvm::StringRef, T(&)[N]>::value, int > = 0>
void to_json (BasicJsonType &j, T(&arr)[N])
 
template<typename BasicJsonType , typename CompatibleString , typename T , enable_if_t< std::is_constructible< llvm::StringRef, CompatibleString >::value, int > = 0>
void to_json (BasicJsonType &j, std::pair< CompatibleString, T > const &p)
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value &&!std::is_same< ArithmeticType, bool >::value, int > = 0>
void get_arithmetic_value (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, bool &b)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, std::string &s)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, double &val)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, std::uint64_t &val)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, std::int64_t &val)
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void from_json (const BasicJsonType &j, EnumType &e)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::array_t &arr)
 
template<typename BasicJsonType , typename CompatibleArrayType >
void from_json_array_impl (const BasicJsonType &j, CompatibleArrayType &arr, detail::priority_tag< 0 >)
 
template<typename BasicJsonType , typename CompatibleArrayType >
auto from_json_array_impl (const BasicJsonType &j, CompatibleArrayType &arr, detail::priority_tag< 1 >) -> decltype(arr.reserve(std::declval< typename CompatibleArrayType::size_type >()), void())
 
template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value &&std::is_convertible< BasicJsonType, typename CompatibleArrayType::value_type >::value &&!std::is_same< typename BasicJsonType::array_t, CompatibleArrayType >::value, int > = 0>
void from_json (const BasicJsonType &j, CompatibleArrayType &arr)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::object_t &obj)
 
template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value &&!std::is_same< typename BasicJsonType::object_t, CompatibleObjectType >::value, int > = 0>
void from_json (const BasicJsonType &j, CompatibleObjectType &obj)
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value &&!std::is_same< ArithmeticType, std::uint64_t >::value &&!std::is_same< ArithmeticType, std::int64_t >::value &&!std::is_same< ArithmeticType, double >::value &&!std::is_same< ArithmeticType, bool >::value, int > = 0>
void from_json (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType , typename CompatibleString , typename T , enable_if_t< std::is_constructible< llvm::StringRef, CompatibleString >::value, int > = 0>
void from_json (const BasicJsonType &j, std::pair< CompatibleString, T > &p)
 

Detailed Description

unnamed namespace with internal helper functions

This namespace collects some functions that could not be defined inside the json class.

Since
version 2.1.0

Enumeration Type Documentation

enum wpi::detail::value_t : uint8_t
strong

the JSON type enumeration

This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions json::is_null(), json::is_object(), json::is_array(), json::is_string(), json::is_boolean(), json::is_number() (with json::is_number_integer(), json::is_number_unsigned(), and json::is_number_float()), json::is_discarded(), json::is_primitive(), and json::is_structured() rely on it.

Note
There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: std::uint64_t is used for unsigned integers, std::int64_t is used for signed integers, and double is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type.
See also
json::json(const value_t value_type) – create a JSON value with the default value for a given type
Since
version 1.0.0
Enumerator
null 

null value

object 

object (unordered set of name/value pairs)

array 

array (ordered collection of values)

string 

string value

boolean 

boolean value

number_integer 

number value (signed integer)

number_unsigned 

number value (unsigned integer)

number_float 

number value (floating-point)

discarded 

discarded by the the parser callback function

Function Documentation

bool wpi::detail::operator< ( const value_t  lhs,
const value_t  rhs 
)
inlinenoexcept

comparison operator for JSON types

Returns an ordering that is similar to Python:

  • order: null < boolean < number < object < array < string
  • furthermore, each type is not smaller than itself
Since
version 1.0.0