Represents a dynamically implemented object. More...
#include <juce_DynamicObject.h>
Public Types | |
using | Ptr = ReferenceCountedObjectPtr<DynamicObject> |
Public Member Functions | |
DynamicObject () | |
DynamicObject (const DynamicObject &) | |
bool | hasProperty (const Identifier &propertyName) const |
Returns true if the object has a property with this name. | |
const var & | getProperty (const Identifier &propertyName) const |
Returns a named property. | |
void | setProperty (const Identifier &propertyName, const var &newValue) |
Sets a named property. | |
void | removeProperty (const Identifier &propertyName) |
Removes a named property. | |
bool | hasMethod (const Identifier &methodName) const |
Checks whether this object has a property with the given name that has a value of type NativeFunction. | |
var | invokeMethod (Identifier methodName, const var::NativeFunctionArgs &args) |
Invokes a named method on this object. | |
void | setMethod (Identifier methodName, var::NativeFunction function) |
Adds a method to the class. | |
void | clear () |
Removes all properties and methods from the object. | |
NamedValueSet & | getProperties () noexcept |
Returns the NamedValueSet that holds the object's properties. | |
const NamedValueSet & | getProperties () const noexcept |
Returns the NamedValueSet that holds the object's properties. | |
void | cloneAllProperties () |
Calls var::clone() on all the properties that this object contains. | |
virtual std::unique_ptr< DynamicObject > | clone () const |
Returns a clone of this object. | |
virtual void | writeAsJSON (OutputStream &, const JSON::FormatOptions &) |
Writes this object to a text stream in JSON format. | |
Public Member Functions inherited from ReferenceCountedObject | |
void | incReferenceCount () noexcept |
Increments the object's reference count. | |
void | decReferenceCount () noexcept |
Decreases the object's reference count. | |
bool | decReferenceCountWithoutDeleting () noexcept |
Decreases the object's reference count. | |
int | getReferenceCount () const noexcept |
Returns the object's current reference count. | |
Additional Inherited Members | |
Protected Member Functions inherited from ReferenceCountedObject | |
ReferenceCountedObject ()=default | |
Creates the reference-counted object (with an initial ref count of zero). | |
ReferenceCountedObject (const ReferenceCountedObject &) noexcept | |
Copying from another object does not affect this one's reference-count. | |
ReferenceCountedObject (ReferenceCountedObject &&) noexcept | |
Copying from another object does not affect this one's reference-count. | |
ReferenceCountedObject & | operator= (const ReferenceCountedObject &) noexcept |
Copying from another object does not affect this one's reference-count. | |
ReferenceCountedObject & | operator= (ReferenceCountedObject &&) noexcept |
Copying from another object does not affect this one's reference-count. | |
virtual | ~ReferenceCountedObject () |
Destructor. | |
void | resetReferenceCount () noexcept |
Resets the reference count to zero without deleting the object. | |
Represents a dynamically implemented object.
This class is primarily intended for wrapping scripting language objects, but could be used for other purposes.
An instance of a DynamicObject can be used to store named properties, and by subclassing hasMethod() and invokeMethod(), you can give your object methods.
DynamicObject::DynamicObject | ( | ) |
DynamicObject::DynamicObject | ( | const DynamicObject & | ) |
bool DynamicObject::hasProperty | ( | const Identifier & | propertyName | ) | const |
Returns true if the object has a property with this name.
Note that if the property is actually a method, this will return false.
const var & DynamicObject::getProperty | ( | const Identifier & | propertyName | ) | const |
Returns a named property.
This returns var() if no such property exists.
void DynamicObject::setProperty | ( | const Identifier & | propertyName, |
const var & | newValue ) |
Sets a named property.
void DynamicObject::removeProperty | ( | const Identifier & | propertyName | ) |
Removes a named property.
bool DynamicObject::hasMethod | ( | const Identifier & | methodName | ) | const |
Checks whether this object has a property with the given name that has a value of type NativeFunction.
var DynamicObject::invokeMethod | ( | Identifier | methodName, |
const var::NativeFunctionArgs & | args ) |
Invokes a named method on this object.
The default implementation looks up the named property, and if it's a method call, then it invokes it.
void DynamicObject::setMethod | ( | Identifier | methodName, |
var::NativeFunction | function ) |
Adds a method to the class.
This is basically the same as calling setProperty (methodName, (var::NativeFunction) myFunction), but helps to avoid accidentally invoking the wrong type of var constructor. It also makes the code easier to read.
void DynamicObject::clear | ( | ) |
Removes all properties and methods from the object.
|
noexcept |
Returns the NamedValueSet that holds the object's properties.
|
noexcept |
Returns the NamedValueSet that holds the object's properties.
void DynamicObject::cloneAllProperties | ( | ) |
Calls var::clone() on all the properties that this object contains.
|
virtual |
Returns a clone of this object.
The default implementation of this method just returns a new DynamicObject with a (deep) copy of all of its properties. Subclasses can override this to implement their own custom copy routines.
|
virtual |
Writes this object to a text stream in JSON format.
This method is used by JSON::toString and JSON::writeToStream, and you should never need to call it directly, but it's virtual so that custom object types can stringify themselves appropriately.