#ifndef PROMECHSHELLPAIR_H
#define PROMECHSHELLPAIR_H


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

#include <ProMechShell.h>

PRO_BEGIN_C_DECLS

typedef struct pro_shellpair_refs* ProMechShellPairRefs;

typedef enum 
{
  PRO_MECH_SHELL_PAIR_NONE           = PRO_VALUE_UNUSED,

  PRO_MECH_SHELL_PAIR_CONSTANT       = 0,
  PRO_MECH_SHELL_PAIR_VARIABLE       = 1,
  PRO_MECH_SHELL_PAIR_MULTI_CONSTANT = 2  /* OBSOLETED; same as "variable" */
}
ProMechShlpairType;

typedef enum 
{
  PRO_MECH_SHELL_PAIR_PLACEMENT_NONE     = PRO_VALUE_UNUSED,

  PRO_MECH_SHELL_PAIR_PLACEMENT_TOP      = 0,
  PRO_MECH_SHELL_PAIR_PLACEMENT_BOTTOM   = 1,
  PRO_MECH_SHELL_PAIR_PLACEMENT_MIDDLE   = 2,
  PRO_MECH_SHELL_PAIR_PLACEMENT_SELECTED = 3
}
ProMechShlpairPlacementType;

extern ProError  ProMechshellpairMaterialGet (ProMechItem* item,
				ProName material);
/*
    Purpose: Obtains the material name. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.

    Output Arguments:
        material - The material name.

    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_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshellpairMaterialIdGet (ProMechItem* item,
				int * matl_id);
/*
    Purpose: Obtains the material id. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.

    Output Arguments:
        matl_id - The material id.

    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_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshellpairMaterialOrientIdGet (ProMechItem* item,
                    int *matl_orient_id);
/*
    Purpose: Obtains the Material Orientation Id. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.

    Output Arguments:
        matl_orient_id - The Material Orientation Id.

    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_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshellpairReferencesGet (ProMechItem* item,
				ProMechShellPairRefs* refs);
/*
    Purpose: Obtains the references of the shell pair item. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.

    Output Arguments:
        refs - The references. Free this using ProMechshlpairrefsFree().

    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_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshlpairrefsTypeGet (ProMechShellPairRefs item,
				ProMechShlpairType* type);
/*
    Purpose: Obtains the type of the shell pair references.. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.

    Output Arguments:
        type - The shell pair refererence 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  ProMechshlpairrefsTopreferencesGet (ProMechShellPairRefs item,
				ProMechGeomref** top_refs);
/*
    Purpose: Obtains the top-side references for the shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.

    Output Arguments:
        top_refs - ProArray of top-side references. Free this 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_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshlpairrefsBottomreferencesGet (ProMechShellPairRefs item,
				ProMechGeomref** bottom_refs);
/*
    Purpose: Obtains the bottom-side references for the shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.

    Output Arguments:
        bottom_refs - ProArray of bottom-side references. Free this 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_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshlpairrefsPlacementtypeGet (ProMechShellPairRefs item,
				ProMechShlpairPlacementType* placement_type);
/*
    Purpose: Obtains the placement type for the shell pair references. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.

    Output Arguments:
        placement_type - The placment 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  ProMechshlpairrefsSelectedplacementGet (ProMechShellPairRefs item,
				ProMechGeomref* placement);
/*
    Purpose: Obtains the selected surface for a SELECTED type of placement for 
             the shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.

    Output Arguments:
        placement - The surface. Free this using ProMechgeomrefFree().

    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 shell pair references does not contain this 
                              type of placement data.
        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.

    See Also:
        ProMechshlpairrefsPlacementtypeGet()
*/

extern ProError  ProMechshlpairrefsExtendAdjacentSurfacesGet (ProMechItem * item,
				                 ProBool* flag);
/*
    Purpose: Obtains the "Extend Adjacent Surfaces" flag of the shell pair.

    Input Arguments:
        item - The shell pair.

    Output Arguments:
        flag - The flag.

    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_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError  ProMechshlpairrefsFree (ProMechShellPairRefs data);
/*
    Purpose: Frees the memory for a Creo Simulate simple shell 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 ProMechshellpairMaterialOrientIdSet (ProMechItem* item, int matl_orient_id);
/*
    Purpose: Sets the Material Orientation Id of the shell pair item. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.
        matl_orient_id - The Material Orientation Id.

    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_TK_CANT_ACCESS - Cannot access the object in the current mode.
        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 ProMechshellpairMaterialIdSet (ProMechItem* item, int matl_id);
/*
    Purpose: Sets the material id of the shell pair item. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.
        matl_id - The material id.

    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_TK_CANT_ACCESS - Cannot access the object in the current mode.
        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 ProMechshellpairReferencesSet (ProMechItem* item, ProMechShellPairRefs refs);
/*
    Purpose: Sets the references of the shell pair item. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.
        refs - The 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_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        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 ProMechshlpairrefsTypeSet (ProMechShellPairRefs item, ProMechShlpairType type);
/*
    Purpose: Sets the type of the shell pair references.. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.
        type - The shell pair refererence 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 ProMechshlpairrefsTopreferencesSet (ProMechShellPairRefs item, ProMechGeomref* top_refs);
/*
    Purpose: Sets the top-side references for the shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.
        top_refs - ProArray of topside 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_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechshlpairrefsBottomreferencesSet (ProMechShellPairRefs item, ProMechGeomref* bottom_refs);
/*
    Purpose: Sets the bottom-side references for the shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.
        bottom_refs - ProArray of bottomside 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_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechshlpairrefsPlacementtypeSet (ProMechShellPairRefs item, ProMechShlpairPlacementType placement_type);
/*
    Purpose: Sets the placement type for the shell pair references. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.
        placement_type - The placment 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 ProMechshlpairrefsSelectedplacementSet (ProMechShellPairRefs item, ProMechGeomref placement);
/*
    Purpose: Sets the selected surface for a SELECTED type of placement for the 
             shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair references handle.
        placement - The surface.

    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.

    See Also:
        ProMechshlpairrefsPlacementtypeSet()
*/

extern ProError ProMechshlpairrefsExtendAdjacentSurfacesSet (ProMechItem * item,
                                                             ProBool       flag);
/*
    Purpose: Sets the "Extend Adjacent Surfaces" flag for the shell pair. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The shell pair.
        flag - The flag.

    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_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 ProMechshlpairrefsAlloc (ProMechShellPairRefs* data);
/*
    Purpose: Allocates the memory for a Creo Simulate lsimple shell 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.

*/


PRO_END_C_DECLS

#endif /* PROMECHSHELLPAIR_H */