AGX Dynamics 2.39.0.0
Loading...
Searching...
No Matches
agx::Object Class Reference

agx::Object is a refcounted object with a name. More...

#include <Object.h>

+ Inheritance diagram for agx::Object:

Classes

class  Event
 

Public Types

typedef agx::observer_ptr< const EventEventConstObserver
 
typedef agx::ref_ptr< const EventEventConstRef
 
typedef agx::observer_ptr< EventEventObserver
 
typedef agx::Vector< EventObserverEventObserverVector
 
typedef agx::VectorPOD< Event * > EventPtrVector
 
typedef agx::ref_ptr< EventEventRef
 
typedef agx::Vector< EventRefEventRefVector
 

Public Member Functions

 Object (const Name &name=Name(), Model *model=Object::ClassModel())
 
void addListener (EventListener *listener)
 
virtual void buildNavigationTree (agxJson::Value &eNode) const
 
virtual void configure (TiXmlElement *)
 
agx::String fullName () const
 
agx::String fullPath () const
 
agx::String fullPath (const agx::Object *root) const
 
template<typename T >
T * getAutoScopedResource (const agx::Path &path)
 
template<typename T >
const T * getAutoScopedResource (const agx::Path &path) const
 
agx::ObjectgetAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::ObjectgetAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) const
 
agx::ObjectgetContext ()
 
template<typename T >
T * getContext ()
 
const agx::ObjectgetContext () const
 
template<typename T >
const T * getContext () const
 
agx::UInt32 getId () const
 
const agx::NamegetImplementationName () const
 
agx::ModelgetModel ()
 
const agx::ModelgetModel () const
 
const agx::NamegetName () const
 
agx::ObjectgetNextSibling ()
 
const agx::ObjectgetNextSibling () const
 
agx::Path getPath () const
 
agx::Path getPath (const agx::Object *root) const
 
template<typename T >
T * getResource (const agx::Path &path)
 
template<typename T >
const T * getResource (const agx::Path &path) const
 
agx::ObjectgetResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::ObjectgetResource (const agx::Path &path, agx::Model *model=nullptr) const
 
virtual agx::ObjectgetResourceImpl (const agx::Path &path, agx::Model *model)
 
agx::ObjectgetRootContext ()
 
const agx::ObjectgetRootContext () const
 
bool hasListener (EventListener *listener)
 
bool hasParent (const agx::Object *node) const
 
bool isUnique () const
 
virtual void printSubtree () const
 
virtual void rebind ()
 
void removeListener (EventListener *listener)
 
virtual void save (TiXmlElement *) const
 
virtual void setContext (agx::Object *context)
 
void setId (UInt32 id)
 
void setModel (agx::Model *model)
 Set the object model (handled automatically).
 
void setName (const agx::Name &name)
 Set the name of the object.
 
virtual void snapshot (TiXmlNode *, const String &) const
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 

Static Public Member Functions

static agx::ModelClassModel ()
 
static agx::String generateName (const agx::String &bindPath)
 
static const HashSet< Object * > & getActiveObjects ()
 
static bool getEnableRebind ()
 Should rebinding be allowed? Right now a global setting.
 
static Objectload (const String &path, Device *device, const String &type, const String &attribute, const String &value)
 
template<typename T >
static T * load (const String &path, Device *device, const String &type, const String &attribute, const String &value)
 
static Objectload (const String &path, Device *device, const String &type="", size_t instance=0)
 
template<typename T >
static T * load (const String &path, Device *device, const String &type="", size_t instance=0)
 
static void load (const String &path, Device *device, ObjectPtrVector &loadedObjects)
 
static Objectload (TiXmlElement *eObject, Device *device)
 
template<typename T >
static T * load (TiXmlElement *eObject, Device *device)
 
static TiXmlDocument openDocument (const String &path)
 
static void setEnableRebind (bool flag)
 Sets if rebinding of objects should be allowed (Right now a global setting).
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 

Protected Member Functions

virtual ~Object ()
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 

Additional Inherited Members

- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

agx::Object is a refcounted object with a name.

It is used together with the subclass agx::Component to build hierarchies of objects, which can be accessed dynamically at runtime using string paths.

Definition at line 58 of file Object.h.

Member Typedef Documentation

◆ EventConstObserver

Definition at line 61 of file Object.h.

◆ EventConstRef

Definition at line 61 of file Object.h.

◆ EventObserver

Definition at line 61 of file Object.h.

◆ EventObserverVector

Definition at line 62 of file Object.h.

◆ EventPtrVector

Definition at line 62 of file Object.h.

◆ EventRef

Definition at line 61 of file Object.h.

◆ EventRefVector

Definition at line 62 of file Object.h.

Constructor & Destructor Documentation

◆ Object()

agx::Object::Object ( const Name name = Name(),
Model model = Object::ClassModel() 
)

◆ ~Object()

virtual agx::Object::~Object ( )
protectedvirtual

Member Function Documentation

◆ addListener()

void agx::Object::addListener ( EventListener *  listener)

◆ buildNavigationTree()

virtual void agx::Object::buildNavigationTree ( agxJson::Value &  eNode) const
virtual

◆ ClassModel()

static agx::Model * agx::Object::ClassModel ( )
static

◆ configure()

◆ fullName()

agx::String agx::Object::fullName ( ) const
Returns
name:implementation

Referenced by agxData::Buffer::getElement(), and agxData::Buffer::ptr().

◆ fullPath() [1/2]

agx::String agx::Object::fullPath ( ) const
Returns
path:implementation

◆ fullPath() [2/2]

agx::String agx::Object::fullPath ( const agx::Object root) const

◆ generateName()

static agx::String agx::Object::generateName ( const agx::String bindPath)
static

◆ getActiveObjects()

static const HashSet< Object * > & agx::Object::getActiveObjects ( )
static

◆ getAutoScopedResource() [1/4]

template<typename T >
T * agx::Object::getAutoScopedResource ( const agx::Path path)

Definition at line 427 of file Object.h.

References getAutoScopedResource(), and agx::Referenced::is().

◆ getAutoScopedResource() [2/4]

template<typename T >
const T * agx::Object::getAutoScopedResource ( const agx::Path path) const

Definition at line 434 of file Object.h.

◆ getAutoScopedResource() [3/4]

agx::Object * agx::Object::getAutoScopedResource ( const agx::Path path,
agx::Model model = nullptr 
)
Returns
The resource with the first matching subpath starting from this node and traversing upwards to the root.

Referenced by getAutoScopedResource().

◆ getAutoScopedResource() [4/4]

const agx::Object * agx::Object::getAutoScopedResource ( const agx::Path path,
agx::Model model = nullptr 
) const

◆ getContext() [1/4]

Object * agx::Object::getContext ( )
Returns
The parent node in the system tree.

Definition at line 372 of file Object.h.

Referenced by agxData::Value::get(), getContext(), and agx::Model::getNamespace().

◆ getContext() [2/4]

template<typename T >
T * agx::Object::getContext

Definition at line 400 of file Object.h.

References getContext().

◆ getContext() [3/4]

const Object * agx::Object::getContext ( ) const

Definition at line 373 of file Object.h.

◆ getContext() [4/4]

template<typename T >
const T * agx::Object::getContext

Definition at line 406 of file Object.h.

References getContext().

◆ getEnableRebind()

static bool agx::Object::getEnableRebind ( )
static

Should rebinding be allowed? Right now a global setting.

◆ getId()

UInt32 agx::Object::getId ( ) const
Returns
The global object id.

Definition at line 369 of file Object.h.

Referenced by agxData::EntityStorage::indexToId().

◆ getImplementationName()

const agx::Name & agx::Object::getImplementationName ( ) const
Returns
The implementation name of the model. Alias for getModel()->getImplementationName()

◆ getModel() [1/2]

Model * agx::Object::getModel ( )
Returns
The object model.

Definition at line 370 of file Object.h.

◆ getModel() [2/2]

const Model * agx::Object::getModel ( ) const

Definition at line 371 of file Object.h.

◆ getName()

const Name & agx::Object::getName ( ) const
Returns
Then name of the object.

Definition at line 368 of file Object.h.

Referenced by agxData::Value::get(), agxData::EntityStorage::get(), agxData::FormatBinding< T >::getFormat(), and agxData::EntityPtr::operator()().

◆ getNextSibling() [1/2]

agx::Object * agx::Object::getNextSibling ( )
Returns
The next sibling with identical name.

◆ getNextSibling() [2/2]

const agx::Object * agx::Object::getNextSibling ( ) const

◆ getPath() [1/2]

◆ getPath() [2/2]

agx::Path agx::Object::getPath ( const agx::Object root) const
Returns
A relative path from a specified root
Parameters
rootA node along the parent path from this object.

◆ getResource() [1/4]

template<typename T >
T * agx::Object::getResource ( const agx::Path path)

Definition at line 413 of file Object.h.

References getResource(), and agx::Referenced::is().

◆ getResource() [2/4]

template<typename T >
const T * agx::Object::getResource ( const agx::Path path) const

Definition at line 420 of file Object.h.

◆ getResource() [3/4]

agx::Object * agx::Object::getResource ( const agx::Path path,
agx::Model model = nullptr 
)
Returns
A resource in the subtree below this object.

Referenced by getResource().

◆ getResource() [4/4]

const agx::Object * agx::Object::getResource ( const agx::Path path,
agx::Model model = nullptr 
) const

◆ getResourceImpl()

◆ getRootContext() [1/2]

agx::Object * agx::Object::getRootContext ( )
Returns
The root context.

◆ getRootContext() [2/2]

const agx::Object * agx::Object::getRootContext ( ) const

◆ hasListener()

bool agx::Object::hasListener ( EventListener *  listener)

◆ hasParent()

bool agx::Object::hasParent ( const agx::Object node) const
Returns
True if the specified node is located somewhere in the path above the object.

◆ isUnique()

bool agx::Object::isUnique ( ) const

Definition at line 374 of file Object.h.

◆ load() [1/7]

static Object * agx::Object::load ( const String path,
Device device,
const String type,
const String attribute,
const String value 
)
static

◆ load() [2/7]

template<typename T >
T * agx::Object::load ( const String path,
Device device,
const String type,
const String attribute,
const String value 
)
static

Definition at line 385 of file Object.h.

References load().

◆ load() [3/7]

static Object * agx::Object::load ( const String path,
Device device,
const String type = "",
size_t  instance = 0 
)
static

◆ load() [4/7]

template<typename T >
T * agx::Object::load ( const String path,
Device device,
const String type = "",
size_t  instance = 0 
)
static

Definition at line 378 of file Object.h.

References load().

◆ load() [5/7]

static void agx::Object::load ( const String path,
Device device,
ObjectPtrVector loadedObjects 
)
static

◆ load() [6/7]

static Object * agx::Object::load ( TiXmlElement *  eObject,
Device device 
)
static

Referenced by load().

◆ load() [7/7]

template<typename T >
T * agx::Object::load ( TiXmlElement *  eObject,
Device device 
)
static

Definition at line 392 of file Object.h.

References load().

◆ openDocument()

static TiXmlDocument agx::Object::openDocument ( const String path)
static

◆ printSubtree()

virtual void agx::Object::printSubtree ( ) const
inlinevirtual

Reimplemented in agx::Component.

Definition at line 253 of file Object.h.

◆ rebind()

virtual void agx::Object::rebind ( )
inlinevirtual

◆ removeListener()

void agx::Object::removeListener ( EventListener *  listener)

◆ save()

virtual void agx::Object::save ( TiXmlElement *  ) const
inlinevirtual

Reimplemented in agx::Clock.

Definition at line 104 of file Object.h.

◆ setContext()

virtual void agx::Object::setContext ( agx::Object context)
virtual

Reimplemented in agxData::FunctionValue, and agx::Task.

◆ setEnableRebind()

static void agx::Object::setEnableRebind ( bool  flag)
static

Sets if rebinding of objects should be allowed (Right now a global setting).

Allowing it when adding larger parts to the system tree might hit performance, so it might be smarter to disable it first, then add, and then enable again.

◆ setId()

void agx::Object::setId ( UInt32  id)

◆ setModel()

void agx::Object::setModel ( agx::Model model)

Set the object model (handled automatically).

References agx::getModel().

◆ setName()

void agx::Object::setName ( const agx::Name name)

Set the name of the object.

◆ snapshot()

virtual void agx::Object::snapshot ( TiXmlNode *  ,
const String  
) const
inlinevirtual

Reimplemented in agx::Component.

Definition at line 105 of file Object.h.


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