#include <string.h>
#include <maya/MIOStream.h>
#include <math.h>
#include <maya/MPxTransform.h>
#include <maya/MPxConstraint.h> 
#include <maya/MPxConstraintCommand.h> 
#include <maya/MArgDatabase.h>
#include <maya/MFnNumericAttribute.h>
#include <maya/MFnPlugin.h>
#include <maya/MGlobal.h>
#include <maya/MString.h> 
#include <maya/MTypeId.h> 
#include <maya/MPlug.h>
#include <maya/MVector.h>
#include <maya/MDataBlock.h>
#include <maya/MDataHandle.h>
#include <maya/MFnTypedAttribute.h>
#include <maya/MFnCompoundAttribute.h>
#include <maya/MFnTransform.h>
#include <maya/MVector.h>
#include <maya/MTypes.h>
#include <maya/MFnNumericData.h>
#include <maya/MDGModifier.h>
#include <math.h>
#include <float.h>
#define kConstrainToLargestWeightFlag "-lw"
#define kConstrainToLargestWeightFlagLong "-largestWeight"
#define kConstrainToSmallestWeightFlag "-sw"
#define kConstrainToSmallestWeightFlagLong "-smallestWeight"
{
public:
    enum ConstraintType
    {
        kLargestWeight,
        kSmallestWeight,
    };
    geometrySurfaceConstraintCommand();
    ~geometrySurfaceConstraintCommand();
    static  void* creator();
protected:
    geometrySurfaceConstraintCommand::ConstraintType weightType;
};
{
public:
                        geometrySurfaceConstraint();
    virtual             ~geometrySurfaceConstraint(); 
    static  void*       creator();
public:
    static MObject      constraintParentInverseMatrix;
 
    geometrySurfaceConstraintCommand::ConstraintType weightType;
};
inline bool
equivalent(double a, double b  )
{
    return fabs( a - b ) < .000001 ;
}