Simbody  3.7
SimTK::Study::Guts Class Referenceabstract


This is the declaration for the Study::Guts class, the abstract object to which a Study handle points. More...

Public Member Functions

 Guts (const String &name="<UNNAMED STUDY>", const String &version="0.0.0")
 
virtual ~Guts ()
 
const StringgetName () const
 
const StringgetVersion () const
 
const StudygetStudy () const
 
StudyupdStudy ()
 
void setOwnerHandle (Study &)
 
bool hasOwnerHandle () const
 
 Guts (class GutsRep *r)
 
bool hasRep () const
 
const GutsRepgetRep () const
 
GutsRepupdRep () const
 
Study::Gutsclone () const
 

Protected Member Functions

 Guts (const Guts &)
 
virtual Study::GutscloneImpl () const =0
 

Friends

class GutsRep
 

Detailed Description


This is the declaration for the Study::Guts class, the abstract object to which a Study handle points.

This is in a separate header file from Study because only people who are extending the Study class to make their own Studies need to be aware of the details. End users access only methods from the Study class and classes derived from Study, never anything from Study::Guts or its derived classes.

Below is the physical layout of memory for a Study, 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
*                                              .
*        Study               Study::Guts       . Study::Guts::GutsRep
*   ---------------       ------------------   .   -------------
*  | Study::Guts*  | --> | Study::GutsRep*  | --> |   GutsRep   |
*   ---------------       ------------------   .  |             |
*          ^             | Concrete Guts    |  .  | Other opaque|
*          |             | class data and   |  .  |   stuff     |
*   ===============      | client-side VFT  |  .  |             |
*   Concrete Study        ------------------   .  |             |
*    adds no data                              .   -------------
*       members   
* 

If the concrete Study::Guts class also has an opaque implementation, as it will for concrete Studies provided by the SimTK Core, then the Study author should expose only the data-free handle class derived from Study.

Constructor & Destructor Documentation

◆ Guts() [1/3]

SimTK::Study::Guts::Guts ( const String name = "<UNNAMED STUDY>",
const String version = "0.0.0" 
)
explicit

◆ ~Guts()

virtual SimTK::Study::Guts::~Guts ( )
virtual

◆ Guts() [2/3]

SimTK::Study::Guts::Guts ( class GutsRep r)
inlineexplicit

◆ Guts() [3/3]

SimTK::Study::Guts::Guts ( const Guts )
protected

Member Function Documentation

◆ getName()

const String& SimTK::Study::Guts::getName ( ) const

◆ getVersion()

const String& SimTK::Study::Guts::getVersion ( ) const

◆ getStudy()

const Study& SimTK::Study::Guts::getStudy ( ) const

◆ updStudy()

Study& SimTK::Study::Guts::updStudy ( )

◆ setOwnerHandle()

void SimTK::Study::Guts::setOwnerHandle ( Study )

◆ hasOwnerHandle()

bool SimTK::Study::Guts::hasOwnerHandle ( ) const

◆ hasRep()

bool SimTK::Study::Guts::hasRep ( ) const
inline

◆ getRep()

const GutsRep& SimTK::Study::Guts::getRep ( ) const
inline

◆ updRep()

GutsRep& SimTK::Study::Guts::updRep ( ) const
inline

◆ clone()

Study::Guts* SimTK::Study::Guts::clone ( ) const

◆ cloneImpl()

virtual Study::Guts* SimTK::Study::Guts::cloneImpl ( ) const
protectedpure virtual

Friends And Related Function Documentation

◆ GutsRep

friend class GutsRep
friend

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