21#ifndef GENERATED_AGX_TASKTIMING_H_PLUGIN
22#define GENERATED_AGX_TASKTIMING_H_PLUGIN
24#define AGX_ENTITY_WRAPPER 1
30# pragma warning( disable : 4505 )
32# pragma warning( disable : 4251 )
34# pragma warning( disable : 4355 )
36# pragma warning( disable: 4714 )
55 class TaskTimingModel;
58 class TaskTimingInstance;
59 class TaskTimingSemantics;
99 virtual void configure(agx::TiXmlElement* eEntity)
override;
107 #ifndef AGX_TASKTIMING_DATA_SET_OVERRIDE
108 #define AGX_TASKTIMING_DATA_SET
112 TaskTimingInstance operator[] (
size_t index);
136 virtual ~TaskTimingData() {}
137 virtual void setNumElements(
agx::Index numElements)
override;
140 TaskTimingData& operator= (
const TaskTimingData&) {
return *
this; }
154 agx::Name const& getImplementation()
const;
164 void setImplementation(
agx::Name const& value);
165 void setNumSubtasks(
agx::UInt const& value);
172 friend class TaskTimingPtr;
173 friend class TaskTimingInstance;
174 TaskTimingSemantics();
243 TaskTimingInstance();
244 TaskTimingInstance(TaskTimingData* data,
agx::Index index);
249 TaskTimingData* getData();
250 const TaskTimingData* getData()
const;
297 inline TaskTimingInstance
agx::TaskTimingData::operator[] (
size_t index) {
return TaskTimingInstance(
this, (
agx::Index)index); }
304 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
311 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
319 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
320 EntityPtr::getModel()->fullPath().c_str(), TaskTimingModel::instance()->fullPath().c_str());
328 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
329 EntityPtr::getModel()->fullPath().c_str(), TaskTimingModel::instance()->fullPath().c_str());
335 AGX_FORCE_INLINE TaskTimingSemantics* TaskTimingPtr::operator->() {
return (TaskTimingSemantics* )
this; }
336 AGX_FORCE_INLINE const TaskTimingSemantics* TaskTimingPtr::operator->()
const {
return (
const TaskTimingSemantics* )
this; }
341 AGX_FORCE_INLINE agx::Name const& TaskTimingPtr::name()
const { verifyIndex();
return getData()->name[calculateIndex()]; }
343 AGX_FORCE_INLINE agx::Name& TaskTimingPtr::implementation() { verifyIndex();
return getData()->implementation[calculateIndex()]; }
344 AGX_FORCE_INLINE agx::Name const& TaskTimingPtr::implementation()
const { verifyIndex();
return getData()->implementation[calculateIndex()]; }
346 AGX_FORCE_INLINE agx::UInt& TaskTimingPtr::numSubtasks() { verifyIndex();
return getData()->numSubtasks[calculateIndex()]; }
347 AGX_FORCE_INLINE agx::UInt const& TaskTimingPtr::numSubtasks()
const { verifyIndex();
return getData()->numSubtasks[calculateIndex()]; }
350 AGX_FORCE_INLINE agx::Real64 const& TaskTimingPtr::wallTime()
const { verifyIndex();
return getData()->wallTime[calculateIndex()]; }
353 AGX_FORCE_INLINE agx::Real64 const& TaskTimingPtr::computeCost()
const { verifyIndex();
return getData()->computeCost[calculateIndex()]; }
356 AGX_FORCE_INLINE agx::Real64 const& TaskTimingPtr::overheadTime()
const { verifyIndex();
return getData()->overheadTime[calculateIndex()]; }
365 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
372 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
381 AGX_FORCE_INLINE agx::Name const& TaskTimingInstance::name()
const { verifyIndex();
return getData()->name[getIndex()]; }
383 AGX_FORCE_INLINE agx::Name& TaskTimingInstance::implementation() { verifyIndex();
return getData()->implementation[getIndex()]; }
384 AGX_FORCE_INLINE agx::Name const& TaskTimingInstance::implementation()
const { verifyIndex();
return getData()->implementation[getIndex()]; }
386 AGX_FORCE_INLINE agx::UInt& TaskTimingInstance::numSubtasks() { verifyIndex();
return getData()->numSubtasks[getIndex()]; }
387 AGX_FORCE_INLINE agx::UInt const& TaskTimingInstance::numSubtasks()
const { verifyIndex();
return getData()->numSubtasks[getIndex()]; }
390 AGX_FORCE_INLINE agx::Real64 const& TaskTimingInstance::wallTime()
const { verifyIndex();
return getData()->wallTime[getIndex()]; }
393 AGX_FORCE_INLINE agx::Real64 const& TaskTimingInstance::computeCost()
const { verifyIndex();
return getData()->computeCost[getIndex()]; }
396 AGX_FORCE_INLINE agx::Real64 const& TaskTimingInstance::overheadTime()
const { verifyIndex();
return getData()->overheadTime[getIndex()]; }
411#undef AGX_ENTITY_WRAPPER
412#undef AGX_ENTITY_NAMESPACE
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGX_TYPE_BINDING(_Type, _Name)
#define AGXPHYSICS_EXPORT
Type-specific Array used for fast access into the data held by a Buffer.
Entity instance provides access to a single instance in an EntityStorage.
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
An abstract description of a data entity stored using SOA (structure of arrays) pattern in a EntitySt...
Accessor to a entity instance stored in a EntityStorage, to allow SOA (structure of arrays) data to b...
EntityPtr & operator=(const EntityPtr &other)=default
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
agxData::EntityInstance instance()
Data storage for a collection of entity instances of a specified EntityModel.
agx::String fullPath() const
Representation of a name string.
Abstract description of the data attributes for the TaskTiming entity.
static agxData::ScalarAttributeT< agx::Name > * implementationAttribute
virtual agxData::EntityData * createData(agxData::EntityStorage *storage) override
static agxData::EntityStorage * defaultStorage()
static agxData::ScalarAttributeT< agx::Real64 > * computeCostAttribute
virtual void configure(agx::TiXmlElement *eEntity) override
TaskTimingModel(const agx::String &name="TaskTiming")
virtual void initAttributeAccessors() override
static TaskTimingPtr createInstance()
Create and return a pointer to a new instance in the default storage for this entity model.
static agxData::ScalarAttributeT< agx::Real64 > * wallTimeAttribute
virtual void construct(agxData::EntityPtr instance) override
static agxData::ScalarAttributeT< agx::UInt > * numSubtasksAttribute
virtual void shutdownCleanup() override
This is part of internal cleanup and should not be called by users.
static agxData::ScalarAttributeT< agx::Name > * nameAttribute
static agxData::ScalarAttributeT< agx::Real64 > * overheadTimeAttribute
void construct(agx::TaskTimingPtr taskTiming)
virtual ~TaskTimingModel()
static TaskTimingModel * instance()
Pointer to a entity instance of type TaskTiming.
TaskTimingData * getData()
AGXPHYSICS_EXPORT TaskTimingInstance instance()
AGXPHYSICS_EXPORT TaskTimingPtr(const agxData::EntityInstance &instance)
AGXPHYSICS_EXPORT TaskTimingPtr(const agxData::EntityPtr &ptr)
AGXPHYSICS_EXPORT agx::Real64 & computeCost()
AGXPHYSICS_EXPORT const TaskTimingInstance instance() const
AGXPHYSICS_EXPORT agx::Name const & name() const
AGXPHYSICS_EXPORT agx::Real64 & overheadTime()
AGXPHYSICS_EXPORT agx::Name & implementation()
AGXPHYSICS_EXPORT const TaskTimingSemantics * operator->() const
TaskTimingInstance InstanceType
AGXPHYSICS_EXPORT agx::Real64 & wallTime()
AGXPHYSICS_EXPORT agx::UInt & numSubtasks()
AGXPHYSICS_EXPORT TaskTimingPtr()
AGXPHYSICS_EXPORT agx::Real64 const & wallTime() const
AGXPHYSICS_EXPORT agx::Real64 const & computeCost() const
AGXPHYSICS_EXPORT agx::UInt const & numSubtasks() const
AGXPHYSICS_EXPORT TaskTimingPtr(agxData::EntityStorage *storage, agx::Index id)
AGXPHYSICS_EXPORT agx::Name & name()
AGXPHYSICS_EXPORT agx::Real64 const & overheadTime() const
const TaskTimingData * getData() const
AGXPHYSICS_EXPORT agx::Name const & implementation() const
TaskTimingModel ModelType
AGXPHYSICS_EXPORT TaskTimingSemantics * operator->()
Vector containing 'raw' data.
#define agxAssertN(expr, format,...)
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
Contains classes for low level data storage for AGX.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.