Constraint::Custom Class Reference

#include <Constraint.h>

Inheritance diagram for Constraint::Custom:

Constraint PIMPLHandle Constraint::CoordinateCoupler Constraint::PrescribedMotion Constraint::SpeedCoupler

List of all members.


Detailed Description

The handle class Constraint::Custom (dataless) and its companion class Constraint::Custom::Implementation can be used together to define new Constraint types with arbitrary properties.

To use it, create a class that extends Constraint::Custom::Implementation. You can then create an instance of it and pass it to the Constraint::Custom constructor:

 Constraint::Custom myConstraint(new MyConstraintImplementation( args ));
 

Alternatively, you can also create a new Handle class which is a subclass of Constraint::Custom and which creates the Implementation itself in its constructors.

 class MyConstraint : public Constraint::Custom {
 public:
   MyConstraint( args ) : Constraint::Custom(new MyForceImplementation( args )) {
   }
 }
 

This allows an end user to simply write

 MyConstraint( args );
 

and not worry about implementation classes or creating objects on the heap. If you do this, your Constraint::Custom subclass must not have any data members or virtual methods. If it does, it will not work correctly. Instead, store all data in the Implementation subclass.

Public Member Functions

 Custom (Implementation *implementation)
 SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS (Custom, CustomImpl, Constraint)

Protected Member Functions

const ImplementationgetImplementation () const
ImplementationupdImplementation ()

Classes

class  Implementation


Constructor & Destructor Documentation

Custom ( Implementation implementation  )  [explicit]


Member Function Documentation

SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS ( Custom  ,
CustomImpl  ,
Constraint   
)

const Implementation& getImplementation (  )  const [protected]

Implementation& updImplementation (  )  [protected]


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

Generated on Fri Sep 26 07:44:31 2008 for SimTKcore by  doxygen 1.5.6