LMMS
Loading...
Searching...
No Matches
juce::var Class Reference

#include <juce_Variant.h>

Classes

struct  NativeFunctionArgs
union  ValueUnion
struct  VariantType
struct  Instance

Public Types

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

Public Member Functions

 var () noexcept
 ~var () noexcept
 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)
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)
 var (var &&) noexcept
 var (String &&)
 var (MemoryBlock &&)
 var (Array< var > &&)
varoperator= (var &&) noexcept
varoperator= (String &&)
void swapWith (var &other) noexcept
 operator int () const noexcept
 operator int64 () const noexcept
 operator bool () const noexcept
 operator float () const noexcept
 operator double () const noexcept
 operator String () const
String toString () const
Array< var > * getArray () const noexcept
MemoryBlockgetBinaryData () const noexcept
ReferenceCountedObjectgetObject () const noexcept
DynamicObjectgetDynamicObject () const noexcept
bool isVoid () const noexcept
bool isUndefined () const noexcept
bool isInt () const noexcept
bool isInt64 () const noexcept
bool isBool () const noexcept
bool isDouble () const noexcept
bool isString () const noexcept
bool isObject () const noexcept
bool isArray () const noexcept
bool isBinaryData () const noexcept
bool isMethod () const noexcept
bool equals (const var &other) const noexcept
bool equalsWithSameType (const var &other) const noexcept
bool hasSameTypeAs (const var &other) const noexcept
var clone () const noexcept
int size () const
const varoperator[] (int arrayIndex) const
varoperator[] (int arrayIndex)
void append (const var &valueToAppend)
void insert (int index, const var &value)
void remove (int index)
void resize (int numArrayElementsWanted)
int indexOf (const var &value) const
const varoperator[] (const Identifier &propertyName) const
const varoperator[] (const char *propertyName) const
var getProperty (const Identifier &propertyName, const var &defaultReturnValue) const
bool hasProperty (const Identifier &propertyName) const noexcept
var call (const Identifier &method) const
var call (const Identifier &method, const var &arg1) const
var call (const Identifier &method, const var &arg1, const var &arg2) const
var call (const Identifier &method, const var &arg1, const var &arg2, const var &arg3)
var call (const Identifier &method, const var &arg1, const var &arg2, const var &arg3, const var &arg4) const
var call (const Identifier &method, const var &arg1, const var &arg2, const var &arg3, const var &arg4, const var &arg5) const
var invoke (const Identifier &method, const var *arguments, int numArguments) const
NativeFunction getNativeFunction () const
void writeToStream (OutputStream &output) const

Static Public Member Functions

static var undefined () noexcept
static var readFromStream (InputStream &input)

Private Member Functions

Array< var > * convertToArray ()
 var (const VariantType &) noexcept
 var (const ReferenceCountedObject *)=delete
varoperator= (const ReferenceCountedObject *)=delete
 var (const void *)=delete
varoperator= (const void *)=delete

Private Attributes

const VariantTypetype
ValueUnion value

Friends

bool canCompare (const var &v1, const var &v2)

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

@tags{Core}

Member Typedef Documentation

◆ NativeFunction

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

Constructor & Destructor Documentation

◆ var() [1/22]

juce::var::var ( )
noexcept

Creates a void variant.

◆ ~var()

juce::var::~var ( )
noexcept

Destructor.

◆ var() [2/22]

juce::var::var ( const var & valueToCopy)

◆ var() [3/22]

juce::var::var ( int value)
noexcept

◆ var() [4/22]

juce::var::var ( int64 value)
noexcept

◆ var() [5/22]

juce::var::var ( bool value)
noexcept

◆ var() [6/22]

juce::var::var ( double value)
noexcept

◆ var() [7/22]

juce::var::var ( const char * value)

◆ var() [8/22]

juce::var::var ( const wchar_t * value)

◆ var() [9/22]

juce::var::var ( const String & value)

◆ var() [10/22]

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

◆ var() [11/22]

juce::var::var ( const StringArray & value)

◆ var() [12/22]

juce::var::var ( ReferenceCountedObject * object)

◆ var() [13/22]

juce::var::var ( NativeFunction method)
noexcept

◆ var() [14/22]

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

◆ var() [15/22]

juce::var::var ( const MemoryBlock & binaryData)

◆ var() [16/22]

juce::var::var ( var && other)
noexcept

◆ var() [17/22]

juce::var::var ( String && v)

◆ var() [18/22]

juce::var::var ( MemoryBlock && v)

◆ var() [19/22]

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

◆ var() [20/22]

juce::var::var ( const VariantType & t)
privatenoexcept

◆ var() [21/22]

juce::var::var ( const ReferenceCountedObject * )
privatedelete

◆ var() [22/22]

juce::var::var ( const void * )
privatedelete

Member Function Documentation

◆ append()

void juce::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 juce::var::call ( const Identifier & method) const

Invokes a named method call with no arguments.

◆ call() [2/6]

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

Invokes a named method call with one argument.

◆ call() [3/6]

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

Invokes a named method call with 2 arguments.

◆ call() [4/6]

var juce::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 juce::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 juce::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 juce::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 > * juce::var::convertToArray ( )
private

◆ equals()

bool juce::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.

Note that equality checking depends on the "wrapped" type of the object on which equals() is called. That means the following code will convert the right-hand-side argument to a string and compare the string values, because the object on the left-hand-side was initialised from a string:

var ("123").equals (var (123))
var() noexcept
Definition juce_Variant.cpp:509

However, the following code will convert the right-hand-side argument to a double and compare the values as doubles, because the object on the left-hand-side was initialised from a double:

var (45.6).equals ("45.6000")
See also
equalsWithSameType

◆ equalsWithSameType()

bool juce::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 > * juce::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 * juce::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 * juce::var::getDynamicObject ( ) const
noexcept

◆ getNativeFunction()

var::NativeFunction juce::var::getNativeFunction ( ) const

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

◆ getObject()

ReferenceCountedObject * juce::var::getObject ( ) const
noexcept

◆ getProperty()

var juce::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.

◆ hasProperty()

bool juce::var::hasProperty ( const Identifier & propertyName) const
noexcept

Returns true if this variant is an object and if it has the given property.

◆ hasSameTypeAs()

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

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

◆ indexOf()

int juce::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 juce::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 juce::var::invoke ( const Identifier & method,
const var * arguments,
int numArguments ) const

Invokes a named method call with a list of arguments.

◆ isArray()

bool juce::var::isArray ( ) const
noexcept

◆ isBinaryData()

bool juce::var::isBinaryData ( ) const
noexcept

◆ isBool()

bool juce::var::isBool ( ) const
noexcept

◆ isDouble()

bool juce::var::isDouble ( ) const
noexcept

◆ isInt()

bool juce::var::isInt ( ) const
noexcept

◆ isInt64()

bool juce::var::isInt64 ( ) const
noexcept

◆ isMethod()

bool juce::var::isMethod ( ) const
noexcept

◆ isObject()

bool juce::var::isObject ( ) const
noexcept

◆ isString()

bool juce::var::isString ( ) const
noexcept

◆ isUndefined()

bool juce::var::isUndefined ( ) const
noexcept

◆ isVoid()

bool juce::var::isVoid ( ) const
noexcept

◆ operator bool()

juce::var::operator bool ( ) const
noexcept

◆ operator double()

juce::var::operator double ( ) const
noexcept

◆ operator float()

juce::var::operator float ( ) const
noexcept

◆ operator int()

juce::var::operator int ( ) const
noexcept

◆ operator int64()

juce::var::operator int64 ( ) const
noexcept

◆ operator String()

juce::var::operator String ( ) const

◆ operator=() [1/16]

var & juce::var::operator= ( bool value)

◆ operator=() [2/16]

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

◆ operator=() [3/16]

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

◆ operator=() [4/16]

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

◆ operator=() [5/16]

var & juce::var::operator= ( const ReferenceCountedObject * )
privatedelete

◆ operator=() [6/16]

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

◆ operator=() [7/16]

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

◆ operator=() [8/16]

var & juce::var::operator= ( const void * )
privatedelete

◆ operator=() [9/16]

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

◆ operator=() [10/16]

var & juce::var::operator= ( double value)

◆ operator=() [11/16]

var & juce::var::operator= ( int value)

◆ operator=() [12/16]

var & juce::var::operator= ( int64 value)

◆ operator=() [13/16]

var & juce::var::operator= ( NativeFunction method)

◆ operator=() [14/16]

var & juce::var::operator= ( ReferenceCountedObject * object)

◆ operator=() [15/16]

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

◆ operator=() [16/16]

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

◆ operator[]() [1/4]

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

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

◆ operator[]() [2/4]

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

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

◆ operator[]() [3/4]

var & juce::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[]() [4/4]

const var & juce::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>.

◆ readFromStream()

var juce::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 juce::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 juce::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 juce::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 juce::var::swapWith ( var & other)
noexcept

◆ toString()

String juce::var::toString ( ) const

◆ undefined()

var juce::var::undefined ( )
staticnoexcept

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

◆ writeToStream()

void juce::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

◆ canCompare

bool canCompare ( const var & v1,
const var & v2 )
friend

Member Data Documentation

◆ type

const VariantType* juce::var::type
private

◆ value

ValueUnion juce::var::value
private

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