AGX Dynamics 2.42.2.1
Loading...
Searching...
No Matches
agx::InternalData Class Reference

Internal data for any object, ObjT, with methods: agx::Referenced* ObjT::getInternalData() const; void ObjT::setInternalData( agx::Referenced* data );. More...

#include <InternalData.h>

+ Inheritance diagram for agx::InternalData:

Public Types

enum  Source {
  WIRE , MERGED_BODY , MERGE_SPLIT , DEFORMABLE1D ,
  RIGID_BODY_EMITTER , LINKED_STRUCTURE , ENERGY , SENSOR_ENVIRONMENT ,
  NUM_SOURCES
}
 Source of internal data. More...
 

Static Public Member Functions

template<typename DataT , typename ObjT >
static DataT * get (const ObjT &obj, Source source)
 Get already created data of the internal data.
 
template<typename DataT , typename ObjT , typename... Args>
static DataT * getOrCreate (ObjT obj, Source source, Args &&... args)
 Get already created data or create new instance of the internal data.
 
template<typename ObjT >
static agx::Bool hasData (const ObjT &obj, Source source)
 
template<typename ObjT >
static void set (ObjT obj, agx::Referenced *data, Source source)
 Assign data to source.
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 

Protected Member Functions

virtual ~InternalData ()
 Reference counted object, protected destructor.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 

Additional Inherited Members

- 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 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

Internal data for any object, ObjT, with methods: agx::Referenced* ObjT::getInternalData() const; void ObjT::setInternalData( agx::Referenced* data );.

For now, add type of object to the Source enum.

Definition at line 32 of file InternalData.h.

Member Enumeration Documentation

◆ Source

Source of internal data.

I.e., the object/algorithm that's handling the data.

Enumerator
WIRE 

Maps geometries and rigid bodies back to wires and wire nodes.

MERGED_BODY 

Merged states, neighbors etc.

MERGE_SPLIT 

AMOR related data.

DEFORMABLE1D 

Deformable1d related data.

RIGID_BODY_EMITTER 

Rigid Body data.

LINKED_STRUCTURE 

Tracked vehicle related data.

ENERGY 

Energy related data.

SENSOR_ENVIRONMENT 

Sensor environment data.

NUM_SOURCES 

Definition at line 39 of file InternalData.h.

Constructor & Destructor Documentation

◆ ~InternalData()

virtual agx::InternalData::~InternalData ( )
inlineprotectedvirtual

Reference counted object, protected destructor.

Definition at line 92 of file InternalData.h.

Member Function Documentation

◆ get()

template<typename DataT , typename ObjT >
DataT * agx::InternalData::get ( const ObjT &  obj,
InternalData::Source  source 
)
static

Get already created data of the internal data.

Returns null if obj is null or if no data has been assigned.

Parameters
obj- object to receive data from (or create if first call)
source- source object/algorithm for the data
Returns
instance of data assigned to obj

Definition at line 124 of file InternalData.h.

References agx::Referenced::as().

◆ getOrCreate()

template<typename DataT , typename ObjT , typename... Args>
DataT * agx::InternalData::getOrCreate ( ObjT  obj,
InternalData::Source  source,
Args &&...  args 
)
static

Get already created data or create new instance of the internal data.

Note
obj has to be a valid pointer.
Parameters
obj- object to receive data from (or create if first call)
source- source object/algorithm for the data
Returns
instance of data assigned to obj

Definition at line 112 of file InternalData.h.

References agxAssert, and agx::Referenced::as().

◆ hasData()

template<typename ObjT >
agx::Bool agx::InternalData::hasData ( const ObjT &  obj,
InternalData::Source  source 
)
static
Returns
true if source data exist

Definition at line 145 of file InternalData.h.

◆ set()

template<typename ObjT >
void agx::InternalData::set ( ObjT  obj,
agx::Referenced data,
InternalData::Source  source 
)
static

Assign data to source.

Parameters
obj- object to assign internal data to
data- data to assign (may be null)
source- source object/algorithm for the data

Definition at line 131 of file InternalData.h.


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