HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
JsValue Class Reference

#include <value.h>

Public Types

enum  Type {
  ObjectType, ArrayType, StringType, BoolType,
  IntType, RealType, NullType
}
 Type held by this JSON value. More...
 

Public Member Functions

JS_API JsValue ()
 Constructs a null value. More...
 
JS_API JsValue (const JsObject &value)
 Constructs a value holding the given object. More...
 
JS_API JsValue (JsObject &&value)
 Constructs a value holding the given object rvalue reference. More...
 
JS_API JsValue (const JsArray &value)
 Constructs a value holding the given array. More...
 
JS_API JsValue (JsArray &&value)
 Constructs a value holding the given array rvalue reference. More...
 
JS_API JsValue (const char *value)
 Constructs a value holding the given char array as a std::string. More...
 
JS_API JsValue (const std::string &value)
 Constructs a value holding the given std::string. More...
 
JS_API JsValue (std::string &&value)
 Constructs a value holding the given std::string rvalue reference. More...
 
JS_API JsValue (bool value)
 Constructs a value holding a bool. More...
 
JS_API JsValue (int value)
 Constructs a value holding a signed integer. More...
 
JS_API JsValue (int64_t value)
 Constructs a value holding a 64-bit signed integer. More...
 
JS_API JsValue (uint64_t value)
 Constructs a value holding a 64-bit unsigned integer. More...
 
JS_API JsValue (double value)
 Constructs a value holding a double. More...
 
JS_API const JsObjectGetJsObject () const
 
JS_API const JsArrayGetJsArray () const
 
JS_API const std::stringGetString () const
 
JS_API bool GetBool () const
 
JS_API int GetInt () const
 
JS_API int64_t GetInt64 () const
 
JS_API uint64_t GetUInt64 () const
 
JS_API double GetReal () const
 
template<typename T , typename ReturnType = typename std::conditional< std::is_same<T, JsObject>::value || std::is_same<T, JsArray>::value || std::is_same<T, std::string>::value, const T&, T>::type>
ReturnType Get () const
 
template<typename T >
std::vector< TGetArrayOf () const
 
JS_API Type GetType () const
 Returns the type of this value. More...
 
JS_API std::string GetTypeName () const
 Returns a display name for the type of this value. More...
 
JS_API bool IsObject () const
 Returns true if this value is holding an object type. More...
 
JS_API bool IsArray () const
 Returns true if this value is holding an array type. More...
 
JS_API bool IsString () const
 Returns true if this value is holding a string type. More...
 
JS_API bool IsBool () const
 Returns true if this value is holding a boolean type. More...
 
JS_API bool IsInt () const
 Returns true if this value is holding an integer type. More...
 
JS_API bool IsReal () const
 Returns true if this value is holding a real type. More...
 
JS_API bool IsUInt64 () const
 Returns true if this value is holding a 64-bit unsigned integer. More...
 
template<typename T >
bool Is () const
 
template<typename T >
bool IsArrayOf () const
 
JS_API bool IsNull () const
 Returns true if this value is null, false otherwise. More...
 
JS_API operator bool () const
 Evaluates to true if this value is not null. More...
 
JS_API bool operator== (const JsValue &other) const
 
JS_API bool operator!= (const JsValue &other) const
 

Detailed Description

A discriminated union type for JSON values. A JsValue may contain one of the following types:

  • JsObject, a dictionary type
  • JsArray, a vector type
  • std::string
  • bool
  • int64_t
  • uint64_t
  • double
  • null

Definition at line 61 of file value.h.

Member Enumeration Documentation

Type held by this JSON value.

Enumerator
ObjectType 
ArrayType 
StringType 
BoolType 
IntType 
RealType 
NullType 

Definition at line 65 of file value.h.

Constructor & Destructor Documentation

JS_API JsValue::JsValue ( )

Constructs a null value.

JS_API JsValue::JsValue ( const JsObject value)

Constructs a value holding the given object.

JS_API JsValue::JsValue ( JsObject &&  value)

Constructs a value holding the given object rvalue reference.

JS_API JsValue::JsValue ( const JsArray value)

Constructs a value holding the given array.

JS_API JsValue::JsValue ( JsArray &&  value)

Constructs a value holding the given array rvalue reference.

JS_API JsValue::JsValue ( const char *  value)
explicit

Constructs a value holding the given char array as a std::string.

JS_API JsValue::JsValue ( const std::string value)
explicit

Constructs a value holding the given std::string.

JS_API JsValue::JsValue ( std::string &&  value)
explicit

Constructs a value holding the given std::string rvalue reference.

JS_API JsValue::JsValue ( bool  value)
explicit

Constructs a value holding a bool.

JS_API JsValue::JsValue ( int  value)
explicit

Constructs a value holding a signed integer.

JS_API JsValue::JsValue ( int64_t  value)
explicit

Constructs a value holding a 64-bit signed integer.

JS_API JsValue::JsValue ( uint64_t  value)
explicit

Constructs a value holding a 64-bit unsigned integer.

JS_API JsValue::JsValue ( double  value)
explicit

Constructs a value holding a double.

Member Function Documentation

template<typename T , typename ReturnType = typename std::conditional< std::is_same<T, JsObject>::value || std::is_same<T, JsArray>::value || std::is_same<T, std::string>::value, const T&, T>::type>
ReturnType JsValue::Get ( ) const
inline

Returns the value corresponding to the C++ type specified in the template parameter if it is holding such a value. Calling this function with C++ type T is equivalent to calling the specific Get function above that returns a value or reference to a type T.

If a value corresponding to the C++ type is not being held, this method raises a coding error. See Get functions above for default value returned in this case.

Definition at line 167 of file value.h.

template<typename T >
std::vector< T > JsValue::GetArrayOf ( ) const
inline

Returns a vector holding the elements of this value's array that correspond to the C++ type specified as the template parameter. If this value is not holding an array, an empty vector is returned. If any of the array's elements does not correspond to the C++ type, it is replaced with the default value used by the Get functions above. In both cases, a coding error will be raised.

Definition at line 274 of file value.h.

JS_API bool JsValue::GetBool ( ) const

Returns the bool held by this value. If this value is not holding a bool, this method raises a coding error and false is returned.

JS_API int JsValue::GetInt ( ) const

Returns the integer held by this value. If this value is not holding an int, this method raises a coding error and zero is returned. If the value is holding a 64-bit integer larger than the platform int may hold, the value is truncated.

JS_API int64_t JsValue::GetInt64 ( ) const

Returns the 64-bit integer held by this value. If this value is not holding a 64-bit integer, this method raises a coding error and zero is returned.

JS_API const JsArray& JsValue::GetJsArray ( ) const

Returns the array held by this value. If this value is not holding an array, this method raises a coding error and an empty array is returned.

JS_API const JsObject& JsValue::GetJsObject ( ) const

Returns the object held by this value. If this value is not holding an object, this method raises a coding error and an empty object is returned.

JS_API double JsValue::GetReal ( ) const

Returns the double held by this value. If this value is not holding a double, this method raises a coding error and zero is returned.

JS_API const std::string& JsValue::GetString ( ) const

Returns the string held by this value. If this value is not holding a string, this method raises a coding error and an empty string is returned.

JS_API Type JsValue::GetType ( ) const

Returns the type of this value.

JS_API std::string JsValue::GetTypeName ( ) const

Returns a display name for the type of this value.

JS_API uint64_t JsValue::GetUInt64 ( ) const

Returns the 64-bit unsigned integer held by this value. If this value is not holding a 64-bit unsigned integer, this method raises a coding error and zero is returned.

template<typename T >
bool JsValue::Is ( ) const
inline

Returns true if this value is holding a type that corresponds to the C++ type specified as the template parameter.

Definition at line 210 of file value.h.

JS_API bool JsValue::IsArray ( ) const

Returns true if this value is holding an array type.

template<typename T >
bool JsValue::IsArrayOf ( ) const
inline

Returns true if this value is holding an array whose elements all correspond to the C++ type specified as the template parameter.

Definition at line 284 of file value.h.

JS_API bool JsValue::IsBool ( ) const

Returns true if this value is holding a boolean type.

JS_API bool JsValue::IsInt ( ) const

Returns true if this value is holding an integer type.

JS_API bool JsValue::IsNull ( ) const

Returns true if this value is null, false otherwise.

JS_API bool JsValue::IsObject ( ) const

Returns true if this value is holding an object type.

JS_API bool JsValue::IsReal ( ) const

Returns true if this value is holding a real type.

JS_API bool JsValue::IsString ( ) const

Returns true if this value is holding a string type.

JS_API bool JsValue::IsUInt64 ( ) const

Returns true if this value is holding a 64-bit unsigned integer.

JS_API JsValue::operator bool ( ) const
explicit

Evaluates to true if this value is not null.

JS_API bool JsValue::operator!= ( const JsValue other) const

Returns true if values are of different type, or the underlying held values are not equal.

JS_API bool JsValue::operator== ( const JsValue other) const

Returns true of both values hold the same type and the underlying held values are equal.


The documentation for this class was generated from the following file: