#ifndef PROMECHGAP_H
#define PROMECHGAP_H


#include <ProToolkit.h>
#include <ProObjects.h>

#include <ProMechValue.h>
#include <ProMechContact.h>

PRO_BEGIN_C_DECLS

typedef enum
{
  PRO_MECH_GAP_DISTR_TOTAL    = PRO_MECH_CONTACT_DISTR_TOTAL,
  PRO_MECH_GAP_DISTR_PER_UNIT = PRO_MECH_CONTACT_DISTR_PER_UNIT 
}
ProMechGapDistrType;

typedef enum
{
  PRO_MECH_GAP_NONE          = PRO_VALUE_UNUSED,

  PRO_MECH_GAP_SIMPLE        = 1
}
ProMechGapType;

typedef struct pro_gap_simple* ProMechSimpleGapData;


extern ProError ProMechgapReferencesGet (ProMechItem* item, ProMechGeomref** references);
/*
    Purpose: Obtains the references used by this gap.

    Input Arguments:
        item - The gap.

    Output Arguments:
        references - ProArray of references. Free this array using 
                     ProMechgeomrefProarrayFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.

*/

extern ProError ProMechgapReferencesSet (ProMechItem* item, ProMechGeomref* references);
/*
    Purpose: Sets the references used by this gap. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The gap.
        references - ProArray of references.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_CANT_MODIFY - Cannot modify the item.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechgapTypeGet (ProMechItem* item, ProMechGapType* type);
/*
    Purpose: Obtains the gap type. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The gap.

    Output Arguments:
        type - The gap type.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechgapSimpledataGet (ProMechItem* item, ProMechSimpleGapData* data);
/*
    Purpose: Obtains the simple data for the gap. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The ontact.

    Output Arguments:
        data - The data. Free this using ProMechsimplegapdataFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - The item does not contain this type of gap.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

    See Also:
        ProMechgapTypeGet()
*/

extern ProError ProMechsimplegapdataAlloc (ProMechSimpleGapData* data);
/*
    Purpose: Allocates the memory for a Creo Simulate gap data handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        none

    Output Arguments:
        data - The handle.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid. 
                            PRO_TK_BAD_CONTEXT -The Creo Simulate session is 
                            not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechsimplegapdataFree (ProMechSimpleGapData data);
/*
    Purpose: Frees the memory for a Creo Simulate gap data handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The handle.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechgapSimpledataSet (ProMechItem* item, ProMechSimpleGapData data);
/*
    Purpose: Sets the data for the gap. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The gap.
        data - The data.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_CANT_MODIFY - Cannot modify the item.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechsimplegapdataYdirectionGet (ProMechSimpleGapData data, ProMechYDirection* y_dir);
/*
    Purpose: Obtains the Orientation for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.

    Output Arguments:
        y_dir - The Orientation. Free this output using 
                ProMechydirectionFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechsimplegapdataYdirectionSet (ProMechSimpleGapData data, ProMechYDirection y_dir);
/*
    Purpose: Sets the Orientation for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.
        y_dir - The Orientation.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataDistributiontypeGet (ProMechSimpleGapData data, ProMechGapDistrType* type);
/*
    Purpose: Obtains the distribution type for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.

    Output Arguments:
        type - The distribution type.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataDistributiontypeSet (ProMechSimpleGapData data, ProMechGapDistrType type);
/*
    Purpose: Sets the distribution type for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.
        type - The distribution type.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataClearanceGet (ProMechSimpleGapData data, ProMechExpression clearance);
/*
    Purpose: Obtains the clearance for the gap data. Use 
             ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.

    Output Arguments:
        clearance - The clearance.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataClearanceSet (ProMechSimpleGapData data, ProMechExpression clearance);
/*
    Purpose: Sets the clearance for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.
        clearance - The clearance.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataAxialstiffnessGet (ProMechSimpleGapData data, ProMechExpression axial_stiff);
/*
    Purpose: Obtains the axial stiffness for the gap data. Use 
             ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.

    Output Arguments:
        axial_stiff - The axial stiffness.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataAxialstiffnessSet (ProMechSimpleGapData data, ProMechExpression axial_stiff);
/*
    Purpose: Sets the axial stiffness for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.
        axial_stiff - The axial stiffness.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataTransversestiffnessGet (ProMechSimpleGapData data, ProMechExpression transv_stiff);
/*
    Purpose: Obtains the transverse stiffness for the gap data. Use 
             ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.

    Output Arguments:
        transv_stiff - The transverse stiffness.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechsimplegapdataTransversestiffnessSet (ProMechSimpleGapData data, ProMechExpression transv_stiff);
/*
    Purpose: Sets the transverse stiffness for the gap data. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The gap data.
        transv_stiff - The transverse stiffness.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

PRO_END_C_DECLS

#endif /* PROMECHGAP_H */