|
| Guts (const String &name="<NONAME>", const String &version="0.0.0") |
|
virtual | ~Guts () |
|
const String & | getName () const |
|
const String & | getVersion () const |
|
void | setHasTimeAdvancedEvents (bool hasEm) |
|
bool | hasTimeAdvancedEvents () const |
|
const State & | getDefaultState () const |
|
State & | updDefaultState () |
|
void | realize (const State &s, Stage g=Stage::HighestRuntime) const |
|
SubsystemIndex | adoptSubsystem (Subsystem &child) |
|
int | getNumSubsystems () const |
|
const Subsystem & | getSubsystem (SubsystemIndex) const |
|
Subsystem & | updSubsystem (SubsystemIndex) |
|
const System & | getSystem () const |
|
System & | updSystem () |
|
void | setOwnerHandle (System &) |
|
bool | hasOwnerHandle () const |
|
| Guts (class GutsRep *r) |
|
bool | hasRep () const |
|
const GutsRep & | getRep () const |
|
GutsRep & | updRep () const |
|
bool | systemTopologyHasBeenRealized () const |
|
StageVersion | getSystemTopologyCacheVersion () const |
|
void | setSystemTopologyCacheVersion (StageVersion topoVersion) const |
|
void | invalidateSystemTopologyCache () const |
|
System::Guts * | clone () const |
|
const State & | realizeTopology () const |
|
void | realizeModel (State &) const |
|
void | realizeInstance (const State &s) const |
|
void | realizeTime (const State &s) const |
|
void | realizePosition (const State &s) const |
|
void | realizeVelocity (const State &s) const |
|
void | realizeDynamics (const State &s) const |
|
void | realizeAcceleration (const State &s) const |
|
void | realizeReport (const State &s) const |
|
void | multiplyByN (const State &state, const Vector &u, Vector &dq) const |
|
void | multiplyByNTranspose (const State &state, const Vector &fq, Vector &fu) const |
|
void | multiplyByNPInv (const State &state, const Vector &dq, Vector &u) const |
|
void | multiplyByNPInvTranspose (const State &state, const Vector &fu, Vector &fq) const |
|
bool | prescribeQ (State &) const |
|
bool | prescribeU (State &) const |
|
void | getFreeQIndex (const State &, Array_< SystemQIndex > &freeQs) const |
|
void | getFreeUIndex (const State &, Array_< SystemUIndex > &freeUs) const |
|
void | projectQ (State &, Vector &qErrEst, const ProjectOptions &options, ProjectResults &results) const |
|
void | projectU (State &, Vector &uErrEst, const ProjectOptions &options, ProjectResults &results) const |
|
void | handleEvents (State &, Event::Cause, const Array_< EventId > &eventIds, const HandleEventsOptions &options, HandleEventsResults &results) const |
|
void | reportEvents (const State &, Event::Cause, const Array_< EventId > &eventIds) const |
|
void | calcEventTriggerInfo (const State &, Array_< EventTriggerInfo > &) const |
|
void | calcTimeOfNextScheduledEvent (const State &, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const |
|
void | calcTimeOfNextScheduledReport (const State &, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const |
|
void | calcDecorativeGeometryAndAppend (const State &, Stage, Array_< DecorativeGeometry > &) const |
|
|
| Guts (const Guts &) |
|
virtual System::Guts * | cloneImpl () const =0 |
|
virtual int | realizeTopologyImpl (State &state) const |
|
virtual int | realizeModelImpl (State &state) const |
|
virtual int | realizeInstanceImpl (const State &state) const |
|
virtual int | realizeTimeImpl (const State &state) const |
|
virtual int | realizePositionImpl (const State &state) const |
|
virtual int | realizeVelocityImpl (const State &state) const |
|
virtual int | realizeDynamicsImpl (const State &state) const |
|
virtual int | realizeAccelerationImpl (const State &state) const |
|
virtual int | realizeReportImpl (const State &state) const |
|
virtual void | multiplyByNImpl (const State &state, const Vector &u, Vector &dq) const |
|
virtual void | multiplyByNTransposeImpl (const State &state, const Vector &fq, Vector &fu) const |
|
virtual void | multiplyByNPInvImpl (const State &state, const Vector &dq, Vector &u) const |
|
virtual void | multiplyByNPInvTransposeImpl (const State &state, const Vector &fu, Vector &fq) const |
|
virtual bool | prescribeQImpl (State &) const |
|
virtual bool | prescribeUImpl (State &) const |
|
virtual void | projectQImpl (State &state, Vector &qErrEst, const ProjectOptions &options, ProjectResults &results) const |
|
virtual void | projectUImpl (State &state, Vector &uErrEst, const ProjectOptions &options, ProjectResults &results) const |
|
virtual void | handleEventsImpl (State &state, Event::Cause cause, const Array_< EventId > &eventIds, const HandleEventsOptions &options, HandleEventsResults &results) const |
|
virtual int | reportEventsImpl (const State &state, Event::Cause cause, const Array_< EventId > &eventIds) const |
|
virtual int | calcEventTriggerInfoImpl (const State &state, Array_< EventTriggerInfo > &info) const |
|
virtual int | calcTimeOfNextScheduledEventImpl (const State &state, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const |
|
virtual int | calcTimeOfNextScheduledReportImpl (const State &state, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const |
|
virtual void | getFreeQIndexImpl (const State &s, Array_< SystemQIndex > &freeQs) const |
|
virtual void | getFreeUIndexImpl (const State &s, Array_< SystemUIndex > &freeUs) const |
|
This is the declaration for the System::Guts class, the abstract object to which a System handle points.
This is in a separate header file from System because only people who are extending the System class to make their own Systems need to be aware of the details. End users access only methods from the System class and classes derived from System, never anything from System::Guts or its derived classes.
Below is the physical layout of memory for a System, and which portions are allocated by the client program and which by the binary library code. For binary compatibility, only the side which allocated a piece of memory can access it. Exception: both the client and library side must agree on the virtual function table (VFT) ordering of the client's virtual functions.
CLIENT SIDE | LIBRARY SIDE
|
System System::Guts | System::Guts::GutsRep
--------------- ------------------ | -------------
| System::Guts* | --> | System::GutsRep* | --> | GutsRep |
--------------- ------------------ | | |
^ | Concrete Guts | | | Opaque |
| | class data and | | | stuff |
=============== | virt func table | | | |
Concrete System ------------------ | | |
adds no data | -------------
members
If the concrete System::Guts class also has an opaque implementation, as it will for concrete Systems provided by Simbody, then the System author should expose only the data-free handle class derived from System.