JUCE  v5.1.1-3-g1a0b28c73
JUCE API
var Class Reference

A variant class, that can be used to hold a range of primitive values. More...

#include <juce_Variant.h>

Collaboration diagram for var:

Classes

struct  NativeFunctionArgs
 This structure is passed to a NativeFunction callback, and contains invocation details about the function's arguments and context. More...
 
union  ValueUnion
 

Public Types

using NativeFunction = std::function< var(const NativeFunctionArgs &)>
 

Public Member Functions

 var () noexcept
 Creates a void variant. More...
 
 var (const var &valueToCopy)
 
 var (int value) noexcept
 
 var (int64 value) noexcept
 
 var (bool value) noexcept
 
 var (double value) noexcept
 
 var (const char *value)
 
 var (const wchar_t *value)
 
 var (const String &value)
 
 var (const Array< var > &value)
 
 var (const StringArray &value)
 
 var (ReferenceCountedObject *object)
 
 var (NativeFunction method) noexcept
 
 var (const void *binaryData, size_t dataSize)
 
 var (const MemoryBlock &binaryData)
 
 var (var &&) noexcept
 
 var (String &&)
 
 var (MemoryBlock &&)
 
 var (Array< var > &&)
 
 ~var () noexcept
 Destructor. More...
 
void append (const var &valueToAppend)
 Appends an element to the var, converting it to an array if it isn't already one. More...
 
var call (const Identifier &method) const
 Invokes a named method call with no arguments. More...
 
var call (const Identifier &method, const var &arg1) const
 Invokes a named method call with one argument. More...
 
var call (const Identifier &method, const var &arg1, const var &arg2) const
 Invokes a named method call with 2 arguments. More...
 
var call (const Identifier &method, const var &arg1, const var &arg2, const var &arg3)
 Invokes a named method call with 3 arguments. More...
 
var call (const Identifier &method, const var &arg1, const var &arg2, const var &arg3, const var &arg4) const
 Invokes a named method call with 4 arguments. More...
 
var call (const Identifier &method, const var &arg1, const var &arg2, const var &arg3, const var &arg4, const var &arg5) const
 Invokes a named method call with 5 arguments. More...
 
var clone () const noexcept
 Returns a deep copy of this object. More...
 
bool equals (const var &other) const noexcept
 Returns true if this var has the same value as the one supplied. More...
 
bool equalsWithSameType (const var &other) const noexcept
 Returns true if this var has the same value and type as the one supplied. More...
 
Array< var > * getArray () const noexcept
 If this variant holds an array, this provides access to it. More...
 
MemoryBlockgetBinaryData () const noexcept
 If this variant holds a memory block, this provides access to it. More...
 
DynamicObjectgetDynamicObject () const noexcept
 
NativeFunction getNativeFunction () const
 If this object is a method, this returns the function pointer. More...
 
ReferenceCountedObjectgetObject () const noexcept
 
var getProperty (const Identifier &propertyName, const var &defaultReturnValue) const
 If this variant is an object, this returns one of its properties, or a default fallback value if the property is not set. More...
 
bool hasSameTypeAs (const var &other) const noexcept
 Returns true if this var has the same type as the one supplied. More...
 
int indexOf (const var &value) const
 If the var is an array, this searches it for the first occurrence of the specified value, and returns its index. More...
 
void insert (int index, const var &value)
 Inserts an element to the var, converting it to an array if it isn't already one. More...
 
var invoke (const Identifier &method, const var *arguments, int numArguments) const
 Invokes a named method call with a list of arguments. More...
 
bool isArray () const noexcept
 
bool isBinaryData () const noexcept
 
bool isBool () const noexcept
 
bool isDouble () const noexcept
 
bool isInt () const noexcept
 
bool isInt64 () const noexcept
 
bool isMethod () const noexcept
 
bool isObject () const noexcept
 
bool isString () const noexcept
 
bool isUndefined () const noexcept
 
bool isVoid () const noexcept
 
 operator bool () const noexcept
 
 operator double () const noexcept
 
 operator float () const noexcept
 
 operator int () const noexcept
 
 operator int64 () const noexcept
 
 operator String () const
 
varoperator= (const var &valueToCopy)
 
varoperator= (int value)
 
varoperator= (int64 value)
 
varoperator= (bool value)
 
varoperator= (double value)
 
varoperator= (const char *value)
 
varoperator= (const wchar_t *value)
 
varoperator= (const String &value)
 
varoperator= (const MemoryBlock &value)
 
varoperator= (const Array< var > &value)
 
varoperator= (ReferenceCountedObject *object)
 
varoperator= (NativeFunction method)
 
varoperator= (var &&) noexcept
 
varoperator= (String &&)
 
const varoperator[] (int arrayIndex) const
 If the var is an array, this can be used to return one of its elements. More...
 
varoperator[] (int arrayIndex)
 If the var is an array, this can be used to return one of its elements. More...
 
const varoperator[] (const Identifier &propertyName) const
 If this variant is an object, this returns one of its properties. More...
 
const varoperator[] (const char *propertyName) const
 If this variant is an object, this returns one of its properties. More...
 
void remove (int index)
 If the var is an array, this removes one of its elements. More...
 
void resize (int numArrayElementsWanted)
 Treating the var as an array, this resizes it to contain the specified number of elements. More...
 
int size () const
 If the var is an array, this returns the number of elements. More...
 
void swapWith (var &other) noexcept
 
String toString () const
 
void writeToStream (OutputStream &output) const
 Writes a binary representation of this value to a stream. More...
 

Static Public Member Functions

static var readFromStream (InputStream &input)
 Reads back a stored binary representation of a value. More...
 
static var undefined () noexcept
 Returns a var object that can be used where you need the javascript "undefined" value. More...
 

Private Member Functions

 var (const VariantType &) noexcept
 
Array< var > * convertToArray ()
 

Private Attributes

const VariantTypetype
 
ValueUnion value
 

Friends

class VariantType
 
class VariantType_Array
 
class VariantType_Binary
 
class VariantType_Bool
 
class VariantType_Double
 
class VariantType_Int
 
class VariantType_Int64
 
class VariantType_Method
 
class VariantType_Object
 
class VariantType_String
 
class VariantType_Undefined
 
class VariantType_Void
 

Detailed Description

A variant class, that can be used to hold a range of primitive values.

A var object can hold a range of simple primitive values, strings, or any kind of ReferenceCountedObject. The var class is intended to act like the kind of values used in dynamic scripting languages.

You can save/load var objects either in a small, proprietary binary format using writeToStream()/readFromStream(), or as JSON by using the JSON class.

See also
JSON, DynamicObject

Member Typedef Documentation

◆ NativeFunction

Constructor & Destructor Documentation

◆ var() [1/20]

var::var ( )
noexcept

Creates a void variant.

◆ ~var()

var::~var ( )
noexcept

Destructor.

◆ var() [2/20]

var::var ( const var valueToCopy)

◆ var() [3/20]

var::var ( int  value)
noexcept

◆ var() [4/20]

var::var ( int64  value)
noexcept

◆ var() [5/20]

var::var ( bool  value)
noexcept

◆ var() [6/20]

var::var ( double  value)
noexcept

◆ var() [7/20]

var::var ( const char *  value)

◆ var() [8/20]

var::var ( const wchar_t *  value)

◆ var() [9/20]

var::var ( const String value)

◆ var() [10/20]

var::var ( const Array< var > &  value)

◆ var() [11/20]

var::var ( const StringArray value)

◆ var() [12/20]

var::var ( ReferenceCountedObject object)

◆ var() [13/20]

var::var ( NativeFunction  method)
noexcept

◆ var() [14/20]

var::var ( const void *  binaryData,
size_t  dataSize 
)

◆ var() [15/20]

var::var ( const MemoryBlock binaryData)

◆ var() [16/20]

var::var ( var &&  )
noexcept

◆ var() [17/20]

var::var ( String &&  )

◆ var() [18/20]

var::var ( MemoryBlock &&  )

◆ var() [19/20]

var::var ( Array< var > &&  )

◆ var() [20/20]

var::var ( const VariantType )
privatenoexcept

Member Function Documentation

◆ append()

void var::append ( const var valueToAppend)

Appends an element to the var, converting it to an array if it isn't already one.

If the var isn't an array, it will be converted to one, and if its value was non-void, this value will be kept as the first element of the new array. The parameter value will then be appended to it. For more control over the array's contents, you can call getArray() and manipulate it directly as an Array<var>.

◆ call() [1/6]

var var::call ( const Identifier method) const

Invokes a named method call with no arguments.

◆ call() [2/6]

var var::call ( const Identifier method,
const var arg1 
) const

Invokes a named method call with one argument.

◆ call() [3/6]

var var::call ( const Identifier method,
const var arg1,
const var arg2 
) const

Invokes a named method call with 2 arguments.

◆ call() [4/6]

var var::call ( const Identifier method,
const var arg1,
const var arg2,
const var arg3 
)

Invokes a named method call with 3 arguments.

◆ call() [5/6]

var var::call ( const Identifier method,
const var arg1,
const var arg2,
const var arg3,
const var arg4 
) const

Invokes a named method call with 4 arguments.

◆ call() [6/6]

var var::call ( const Identifier method,
const var arg1,
const var arg2,
const var arg3,
const var arg4,
const var arg5 
) const

Invokes a named method call with 5 arguments.

◆ clone()

var var::clone ( ) const
noexcept

Returns a deep copy of this object.

For simple types this just returns a copy, but if the object contains any arrays or DynamicObjects, they will be cloned (recursively).

◆ convertToArray()

Array<var>* var::convertToArray ( )
private

◆ equals()

bool var::equals ( const var other) const
noexcept

Returns true if this var has the same value as the one supplied.

Note that this ignores the type, so a string var "123" and an integer var with the value 123 are considered to be equal.

See also
equalsWithSameType

◆ equalsWithSameType()

bool var::equalsWithSameType ( const var other) const
noexcept

Returns true if this var has the same value and type as the one supplied.

This differs from equals() because e.g. "123" and 123 will be considered different.

See also
equals

◆ getArray()

Array<var>* var::getArray ( ) const
noexcept

If this variant holds an array, this provides access to it.

NOTE: Beware when you use this - the array pointer is only valid for the lifetime of the variant that returned it, so be very careful not to call this method on temporary var objects that are the return-value of a function, and which may go out of scope before you use the array!

◆ getBinaryData()

MemoryBlock* var::getBinaryData ( ) const
noexcept

If this variant holds a memory block, this provides access to it.

NOTE: Beware when you use this - the MemoryBlock pointer is only valid for the lifetime of the variant that returned it, so be very careful not to call this method on temporary var objects that are the return-value of a function, and which may go out of scope before you use the MemoryBlock!

◆ getDynamicObject()

DynamicObject* var::getDynamicObject ( ) const
noexcept

◆ getNativeFunction()

NativeFunction var::getNativeFunction ( ) const

If this object is a method, this returns the function pointer.

◆ getObject()

ReferenceCountedObject* var::getObject ( ) const
noexcept

◆ getProperty()

var var::getProperty ( const Identifier propertyName,
const var defaultReturnValue 
) const

If this variant is an object, this returns one of its properties, or a default fallback value if the property is not set.

◆ hasSameTypeAs()

bool var::hasSameTypeAs ( const var other) const
noexcept

Returns true if this var has the same type as the one supplied.

◆ indexOf()

int var::indexOf ( const var value) const

If the var is an array, this searches it for the first occurrence of the specified value, and returns its index.

If the var isn't an array, or if the value isn't found, this returns -1.

◆ insert()

void var::insert ( int  index,
const var value 
)

Inserts an element to the var, converting it to an array if it isn't already one.

If the var isn't an array, it will be converted to one, and if its value was non-void, this value will be kept as the first element of the new array. The parameter value will then be inserted into it. For more control over the array's contents, you can call getArray() and manipulate it directly as an Array<var>.

◆ invoke()

var var::invoke ( const Identifier method,
const var arguments,
int  numArguments 
) const

Invokes a named method call with a list of arguments.

◆ isArray()

bool var::isArray ( ) const
noexcept

◆ isBinaryData()

bool var::isBinaryData ( ) const
noexcept

◆ isBool()

bool var::isBool ( ) const
noexcept

◆ isDouble()

bool var::isDouble ( ) const
noexcept

◆ isInt()

bool var::isInt ( ) const
noexcept

◆ isInt64()

bool var::isInt64 ( ) const
noexcept

◆ isMethod()

bool var::isMethod ( ) const
noexcept

◆ isObject()

bool var::isObject ( ) const
noexcept

◆ isString()

bool var::isString ( ) const
noexcept

◆ isUndefined()

bool var::isUndefined ( ) const
noexcept

◆ isVoid()

bool var::isVoid ( ) const
noexcept

◆ operator bool()

var::operator bool ( ) const
noexcept

◆ operator double()

var::operator double ( ) const
noexcept

◆ operator float()

var::operator float ( ) const
noexcept

◆ operator int()

var::operator int ( ) const
noexcept

◆ operator int64()

var::operator int64 ( ) const
noexcept

◆ operator String()

var::operator String ( ) const

◆ operator=() [1/14]

var& var::operator= ( const var valueToCopy)

◆ operator=() [2/14]

var& var::operator= ( int  value)

◆ operator=() [3/14]

var& var::operator= ( int64  value)

◆ operator=() [4/14]

var& var::operator= ( bool  value)

◆ operator=() [5/14]

var& var::operator= ( double  value)

◆ operator=() [6/14]

var& var::operator= ( const char *  value)

◆ operator=() [7/14]

var& var::operator= ( const wchar_t *  value)

◆ operator=() [8/14]

var& var::operator= ( const String value)

◆ operator=() [9/14]

var& var::operator= ( const MemoryBlock value)

◆ operator=() [10/14]

var& var::operator= ( const Array< var > &  value)

◆ operator=() [11/14]

var& var::operator= ( ReferenceCountedObject object)

◆ operator=() [12/14]

var& var::operator= ( NativeFunction  method)

◆ operator=() [13/14]

var& var::operator= ( var &&  )
noexcept

◆ operator=() [14/14]

var& var::operator= ( String &&  )

◆ operator[]() [1/4]

const var& var::operator[] ( int  arrayIndex) const

If the var is an array, this can be used to return one of its elements.

To call this method, you must make sure that the var is actually an array, and that the index is a valid number. If these conditions aren't met, behaviour is undefined. For more control over the array's contents, you can call getArray() and manipulate it directly as an Array<var>.

◆ operator[]() [2/4]

var& var::operator[] ( int  arrayIndex)

If the var is an array, this can be used to return one of its elements.

To call this method, you must make sure that the var is actually an array, and that the index is a valid number. If these conditions aren't met, behaviour is undefined. For more control over the array's contents, you can call getArray() and manipulate it directly as an Array<var>.

◆ operator[]() [3/4]

const var& var::operator[] ( const Identifier propertyName) const

If this variant is an object, this returns one of its properties.

◆ operator[]() [4/4]

const var& var::operator[] ( const char *  propertyName) const

If this variant is an object, this returns one of its properties.

◆ readFromStream()

static var var::readFromStream ( InputStream input)
static

Reads back a stored binary representation of a value.

The data in the stream must have been written using writeToStream(), or this will have unpredictable results.

See also
JSON

◆ remove()

void var::remove ( int  index)

If the var is an array, this removes one of its elements.

If the index is out-of-range or the var isn't an array, nothing will be done. For more control over the array's contents, you can call getArray() and manipulate it directly as an Array<var>.

◆ resize()

void var::resize ( int  numArrayElementsWanted)

Treating the var as an array, this resizes it to contain the specified number of elements.

If the var isn't an array, it will be converted to one, and if its value was non-void, this value will be kept as the first element of the new array before resizing. For more control over the array's contents, you can call getArray() and manipulate it directly as an Array<var>.

◆ size()

int var::size ( ) const

If the var is an array, this returns the number of elements.

If the var isn't actually an array, this will return 0.

◆ swapWith()

void var::swapWith ( var other)
noexcept

◆ toString()

String var::toString ( ) const

◆ undefined()

static var var::undefined ( )
staticnoexcept

Returns a var object that can be used where you need the javascript "undefined" value.

◆ writeToStream()

void var::writeToStream ( OutputStream output) const

Writes a binary representation of this value to a stream.

The data can be read back later using readFromStream().

See also
JSON

Friends And Related Function Documentation

◆ VariantType

friend class VariantType
friend

◆ VariantType_Array

friend class VariantType_Array
friend

◆ VariantType_Binary

friend class VariantType_Binary
friend

◆ VariantType_Bool

friend class VariantType_Bool
friend

◆ VariantType_Double

friend class VariantType_Double
friend

◆ VariantType_Int

friend class VariantType_Int
friend

◆ VariantType_Int64

friend class VariantType_Int64
friend

◆ VariantType_Method

friend class VariantType_Method
friend

◆ VariantType_Object

friend class VariantType_Object
friend

◆ VariantType_String

friend class VariantType_String
friend

◆ VariantType_Undefined

friend class VariantType_Undefined
friend

◆ VariantType_Void

friend class VariantType_Void
friend

Member Data Documentation

◆ type

const VariantType* var::type
private

◆ value

ValueUnion var::value
private

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