Custom Class Reference

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

#include <Constraint.h>

Inheritance diagram for Custom:
Constraint PIMPLHandle< Constraint, ConstraintImpl, true > CoordinateCoupler PrescribedMotion SpeedCoupler

List of all members.

Classes

class  Implementation

Public Member Functions

 Custom (Implementation *implementation)
 Create a Custom Constraint.
 SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS (Custom, CustomImpl, Constraint)

Protected Member Functions

const ImplementationgetImplementation () const
ImplementationupdImplementation ()
 Custom ()

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.


Constructor & Destructor Documentation

Custom ( Implementation implementation  )  [explicit]

Create a Custom Constraint.

Parameters:
implementation The object which implements the custom constraint. The Constraint::Custom takes over ownership of the implementation object, and deletes it when the Constraint itself is deleted.
Custom (  )  [inline, protected]

Member Function Documentation

const Implementation& getImplementation (  )  const [protected]
SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS ( Custom  ,
CustomImpl  ,
Constraint   
)
Implementation& updImplementation (  )  [protected]

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

Generated on Thu Aug 12 16:37:58 2010 for SimTKcore by  doxygen 1.6.1