#include <Constraint.h>
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 Implementation & | getImplementation () const |
Implementation & | updImplementation () |
Classes | |
class | Implementation |
Custom | ( | Implementation * | implementation | ) | [explicit] |
SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS | ( | Custom | , | |
CustomImpl | , | |||
Constraint | ||||
) |
const Implementation& getImplementation | ( | ) | const [protected] |
Implementation& updImplementation | ( | ) | [protected] |