콘솔로 이동

firebase::Variant

#include <variant.h>

Variant data type used by Firebase libraries.

Summary

Constructors and Destructors

Variant()
Construct a null Variant.
Variant(int64_t value)
Construct a Variant containing the given 64-bit integer.
Variant(int value)
Construct a Variant containing the given integer.
Variant(double value)
Construct a Variant containing the given double-precision floating point value.
Variant(float value)
Construct a Variant containing the given single-precision floating point value.
Variant(bool value)
Construct a Variant containing the given boolean value.
Variant(const char *value)
Construct a Variant with the given static const string (no copy).
Variant(char *value)
Construct a Variant containing the given string value (makes a copy).
Variant(const std::string & value)
Construct a Variant containing the given string value (makes a copy).
Variant(const std::vector< Variant > & value)
Construct a Variant containing the given std::vector of Variant.
Variant(const std::vector< T > & value)
Construct a Variant containing the given std::vector of something that can be constructed into a Variant.
Variant(const T array_of_values[], size_t array_size)
Construct a Variant from an array of supported types into a Vector.
Variant(const std::map< Variant, Variant > & value)
Construct a Variatn containing the given std::map of Variant to Variant.
Variant(const std::map< K, V > & value)
Construct a Variant containing the given std::map of something that can be constructed into a Variant, to something that can be constructed into a Variant.
Variant(const Variant & other)
Copy constructor.
Variant(Variant && other)
Move constructor.
~Variant()
Destructor. Frees the memory that this Variant owns.

Public types

Type{
  kTypeNull,
  kTypeInt64,
  kTypeDouble,
  kTypeBool,
  kTypeStaticString,
  kTypeMutableString,
  kTypeVector,
  kTypeMap,
  kTypeStaticBlob,
  kTypeMutableBlob
}
enum
Type of data that this variant object contains.

Public functions

AsBool() const
Get the current Variant converted into a boolean.
AsDouble() const
Get the current Variant converted into a floating-point number.
AsInt64() const
Get the current Variant converted into an integer.
AsString() const
Get the current Variant converted into a string.
AssignMap(std::map< Variant, Variant > **map)
void
Assigns an existing map which was allocated on the heap into the Variant without performing a copy.
AssignMutableString(std::string **str)
void
Assigns an existing string which was allocated on the heap into the Variant without performing a copy.
AssignVector(std::vector< Variant > **vect)
void
Assigns an existing vector which was allocated on the heap into the Variant without performing a copy.
Clear(Type new_type)
void
Clear the given Variant data, optionally into a new type.
blob_data() const
const uint8_t *
Get the pointer to the binary data contained in a blob.
blob_size() const
size_t
Get the size of a blob.
bool_value() const
const bool &
Const accessor for a Variant containing a bool.
double_value() const
double
Const accessor for a Variant containing a double.
int64_value() const
int64_t
Const accessor for a Variant containing an integer.
is_blob() const
bool
Get whether this Variant contains a blob.
is_bool() const
bool
Get whether this Variant contains a bool.
is_container_type() const
bool
Get whether this Variant contains a container type: Vector or Map.
is_double() const
bool
Get whether this Variant contains a double.
is_fundamental_type() const
bool
Get whether this Variant contains a fundamental type: Null, Int64, Double, Bool, or one of the two String types.
is_int64() const
bool
Get whether this Variant contains an integer.
is_map() const
bool
Get whether this Variant contains a map.
is_mutable_blob() const
bool
Get whether this Variant contains a mutable blob.
is_mutable_string() const
bool
Get whether this Variant contains a mutable string.
is_null() const
bool
Get whether this Variant is currently null.
is_numeric() const
bool
Get whether this Variant contains a numeric type, Int64 or Double.
is_static_blob() const
bool
Get whether this Variant contains a static blob.
is_static_string() const
bool
Get whether this Variant contains a static string.
is_string() const
bool
Get whether this Variant contains a string.
is_vector() const
bool
Get whether this Variant contains a vector.
map()
std::map< Variant, Variant > &
Mutable accessor for a Variant containing a map of Variant data.
map() const
const std::map< Variant, Variant > &
Const accessor for a Variant containing a map of strings to Variant data.
mutable_blob_data()
uint8_t *
Get a mutable pointer to the binary data contained in a blob.
mutable_blob_data() const
uint8_t *
Const accessor for a Variant contianing mutable blob data.
mutable_string()
std::string &
Mutable accessor for a Variant containing a string.
mutable_string() const
const std::string &
Const accessor for a Variant containing a mutable string only.
operator!=(const Variant & other) const
bool
Inequality operator: x != y is evaluated as !(x == y).
operator<(const Variant & other) const
bool
Inequality operator, only meant for internal use.
operator<=(const Variant & other) const
bool
Inequality operator: x <= y is evaluated as !(x > y)
operator=(const Variant & other)
Copy assignment operator.
operator=(Variant && other)
Move assignment operator.
operator==(const Variant & other) const
bool
Equality operator.
operator>(const Variant & other) const
bool
Inequality operator: x > y is evaluated as y < x.
operator>=(const Variant & other) const
bool
Inequality operator: x >= y is evaluated as !(x < y)
set_bool_value(bool value)
void
Sets the Variant to the given boolean value.
set_double_value(double value)
void
Sets the Variant to an double-precision floating point value.
set_int64_value(int64_t value)
void
Sets the Variant to an 64-bit integer value.
set_map(const std::map< Variant, Variant > & value)
void
Sets the Variant to a copy of the given map.
set_mutable_blob(const void *src_data, size_t size_bytes)
void
Sets the Variant to a copy of the given binary data.
set_mutable_string(const std::string & value)
void
Sets the Variant to a copy of the given string.
set_null()
void
Sets the Variant value to null.
set_static_blob(const void *static_data, size_t size_bytes)
void
Sets the Variant to point to static binary data.
set_string_value(const char *value)
void
Sets the Variant to point to a static string buffer.
set_string_value(char *value)
void
Sets the Variant to a mutable string.
set_string_value(const std::string & value)
void
Sets the Variant to a mutable string.
set_vector(const std::vector< Variant > & value)
void
Sets the Variant to a copy of the given vector.
string_value() const
const char *
Const accessor for a Variant containing a string.
type() const
Get the current type contained in this Variant.
vector()
std::vector< Variant > &
Mutable accessor for a Variant containing a vector of Variant data.
vector() const
const std::vector< Variant > &
Const accessor for a Variant containing a vector of Variant data.

Public static functions

EmptyMap()
Get a Variant containing an empty map.
EmptyMutableBlob(size_t size_bytes)
Return a Variant containing an empty mutable blob of the requested size, filled with 0-bytes.
EmptyMutableString()
Get a Variant containing an empty mutable string.
EmptyString()
Get an empty string variant.
EmptyVector()
Get a Variant containing an empty vector.
False()
Get a Variant of bool value false.
FromBool(bool value)
Return a Variant from a boolean.
FromDouble(double value)
Return a Variant from a double-precision floating point number.
FromInt64(int64_t value)
Return a Variant from a 64-bit integer.
FromMutableBlob(const void *src_data, size_t size_bytes)
Return a Variant containing a copy of binary data.
FromMutableString(const std::string & value)
Return a Variant from a string.
FromStaticBlob(const void *static_data, size_t size_bytes)
Return a Variant that points to static binary data.
FromStaticString(const char *value)
Return a Variant from a static string.
MutableStringFromStaticString(const char *value)
Return a Variant from a string, but make it mutable.
Null()
Get a Variant of type Null.
One()
Get a Variant of integer value 1.
OnePointZero()
Get a Variant of double value 1.0.
True()
Get a Variant of bool value true.
TypeName(Type type)
const char *
Get the human-readable type name of a Variant type.
Zero()
Get a Variant of integer value 0.
ZeroPointZero()
Get a Variant of double value 0.0.

Public types

Type

 Type

Type of data that this variant object contains.

Properties
kTypeBool

A boolean value.

kTypeDouble

A double-precision floating point number.

kTypeInt64

A 64-bit integer.

kTypeMap

A std::map, mapping Variant to Variant.

kTypeMutableBlob

A blob of data that the Variant holds.

Never constructed by default. Use Variant::FromMutableBlob() to create a Variant of this type, and copy binary data from an existing source.

kTypeMutableString

A std::string.

kTypeNull

Null, or no data.

kTypeStaticBlob

An statically-allocated blob of data that we point to.

Never constructed by default. Use Variant::FromStaticBlob() to create a Variant of this type.

kTypeStaticString

A statically-allocated string we point to.

kTypeVector

A std::vector of Variant.

Public functions

AsBool

Variant AsBool() const 

Get the current Variant converted into a boolean.

Null, 0, 0.0, empty strings, empty vectors, empty maps, blobs of size 0, and "false" (case-sensitive) are all considered false. All other values are true.

Details
Returns
A Variant of type Bool containing the original Variant interpreted as a Bool.

AsDouble

Variant AsDouble() const 

Get the current Variant converted into a floating-point number.

Only valid for fundamental types.

Special cases: If a Bool is true, this will return 1. All other cases will return 0.

Details
Returns
A Variant containing a Double that represents the value of this original Variant.

AsInt64

Variant AsInt64() const 

Get the current Variant converted into an integer.

Only valid for fundamental types.

Special cases: If a String can be parsed as a number via strtol(), it will be. If a Bool is true, this will return 1. All other cases (including non-fundamental types) will return 0.

Details
Returns
A Variant containing an Int64 that represents the value of this original Variant.

AsString

Variant AsString() const 

Get the current Variant converted into a string.

Only valid for fundamental types.

Special cases: Booleans will be returned as "true" or "false". Null will be returned as an empty string. The returned string may be either mutable or static, depending on the source type. All other cases will return an empty string.

Details
Returns
A Variant containing a String that represents the value of this original Variant.

AssignMap

void AssignMap(
  std::map< Variant, Variant > **map
)

Assigns an existing map which was allocated on the heap into the Variant without performing a copy.

This object will take over ownership of the map, and will set the std::map** you pass in to NULL.

The Variant's type will be set to Map.

Details
Parameters
map
Pointer to a pointer to an STL map. The Variant will take over ownership of the pointer to the map, and set the pointer you passed in to NULL.

AssignMutableString

void AssignMutableString(
  std::string **str
)

Assigns an existing string which was allocated on the heap into the Variant without performing a copy.

This object will take over ownership of the pointer, and will set the std::string* you pass in to NULL.

The Variant's type will be set to MutableString.

Details
Parameters
str
Pointer to a pointer to an STL string. The Variant will take over ownership of the pointer to the string, and set the pointer you passed in to NULL.

AssignVector

void AssignVector(
  std::vector< Variant > **vect
)

Assigns an existing vector which was allocated on the heap into the Variant without performing a copy.

This object will take over ownership of the pointer, and will set the std::vector* you pass in to NULL.

The Variant's type will be set to Vector.

Details
Parameters
vect
Pointer to a pointer to an STL vector. The Variant will take over ownership of the pointer to the vector, and set the pointer you passed in to NULL.

Clear

void Clear(
  Type new_type
)

Clear the given Variant data, optionally into a new type.

Frees up any memory that might have been allocated. After calling this, you can access the Variant as the new type.

Details
Parameters
new_type
Optional new type to clear the Variant to. You may immediately begin using the Variant as that new type.

Variant

 Variant()

Construct a null Variant.

The Variant constructed will be of type Null.

Variant

 Variant(
  int64_t value
)

Construct a Variant containing the given 64-bit integer.

The Variant constructed will be of type Int64.

param[in] value The 64-bit integer value for the Variant.

Variant

 Variant(
  int value
)

Construct a Variant containing the given integer.

The Variant constructed will be of type Int64.

Details
Parameters
value
The 32-bit integer value for the Variant.

Variant

 Variant(
  double value
)

Construct a Variant containing the given double-precision floating point value.

The Variant constructed will be of type Double.

Details
Parameters
value
The double-precision floating point value for the Variant.

Variant

 Variant(
  float value
)

Construct a Variant containing the given single-precision floating point value.

The Variant constructed will be of type Double.

Details
Parameters
value
The single-precision floating point value for the Variant.

Variant

 Variant(
  bool value
)

Construct a Variant containing the given boolean value.

The Variant constructed will be of type Bool.

Details
Parameters
value
The boolean value for the Variant.