#ifndef PROSKELETON_H
#define PROSKELETON_H




/* Creo Parametric TOOLKIT declarations for Pro<object> related data structures */

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

PRO_BEGIN_C_DECLS


/* Data definitions */


extern ProError ProAsmSkeletonMdlnameCreate (ProAssembly   assembly,
                                             ProMdlName    skel_name,
                                             ProMdl        template_model,
                                             ProMdl       *p_skel);
/*
    Purpose: Create a new skeleton model with specified name and adds it to the 
             specified assemby. This function also initializes the model 
             handle. <b>Note:</b> In Creo 3 this function does not support 
             names longer than 31 characters. It will return PRO_TK_BAD_INPUTS 
             for longer names. The support for ProMdlName will be added in a 
             future release.

    Input Arguments:
        assembly - Handle to the assembly.
        skel_name - Name of the skeleton model.
        template_model - Handle to a part or skeleton to be used as a template. 
                         The template is copied into the created skeleton 
                         model. If the handler to the template is NULL, the new 
                         skeleton is created empty.

    Output Arguments:
        p_skel - Handle to the created skeleton model.

    Return Values:
        PRO_TK_NO_ERROR - Skeleton creation was successful.
        PRO_TK_BAD_INPUTS - Invalid assembly handle, skeleton name, or template 
                            handle.
        PRO_TK_E_FOUND - Skeleton model already exists in the assembly.
        PRO_TK_ABORT - Template type is invalid (for example, is a 
                       manufacturing part), or has external external 
                       dependencies. Copying is aborted.
        PRO_TK_GENERAL_ERROR - Skeleton could not be created.
        PRO_TK_NOT_VALID - Required license is absent.
        PRO_TK_UNSUPPORTED - Models which come from Multi-CAD approach are not 
                             supported as template model.
        PRO_TK_LINE_TOO_LONG - Name length of skeleton model is more than 31 
                               chars.

*/

extern ProError ProAsmSkeletonAdd (ProAssembly   assembly,
                                   ProMdl        skeleton);
/*
    Purpose: Add an existing skeleton model as a skeleton in the specified 
             assembly.

    Input Arguments:
        assembly - Handle to the assembly.
        skeleton - Handle to the skeleton model.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - Skeleton addition is successful.
        PRO_TK_BAD_INPUTS - Invalid assembly handle or skeleton handle.
        PRO_TK_INVALID_TYPE - Skeleton is a handle not to a skeleton model.
        PRO_TK_E_FOUND - Skeleton model already exists in the assembly.
        PRO_TK_GENERAL_ERROR - Skeleton could not be created.
        PRO_TK_NOT_VALID - Required license not found.

*/

extern ProError ProAsmSkeletonGet (ProAssembly   assembly,
                                   ProMdl       *p_skel);
/*
    Purpose: Get a skeleton model of the specified assembly and initializes the 
             model handle.

    Input Arguments:
        assembly - Handle to the assembly.

    Output Arguments:
        p_skel - Pointer to the assembly skeleton model handle.

    Return Values:
        PRO_TK_NO_ERROR - The skeleton handle is initiated.
        PRO_TK_BAD_INPUTS - Invalid assembly handle.
        PRO_TK_E_NOT_FOUND - The specified assembly has no skeleton model.
        PRO_TK_CANT_ACCESS - The skeleton exists, but can not be used.
        PRO_TK_NOT_VALID - Required license not found.

*/

extern ProError ProMdlIsSkeleton (ProMdl        model,
                                  ProBoolean   *p_is_skel);
/*
    Purpose: Determine whether the specified model is a skeleton model.

    Input Arguments:
        model - Handle to the model to be checked.

    Output Arguments:
        p_is_skel - PRO_B_TRUE if specified model is a skeleton model, 
                    otherwise PRO_B_FALSE.

    Return Values:
        PRO_TK_NO_ERROR - The function successfully returned the information.
        PRO_TK_BAD_INPUTS - Invalid model handler.
        PRO_TK_NOT_VALID - Required license not found.

*/

extern ProError ProAsmSkeletonDelete (ProAssembly   assembly);
/*
    Purpose: Delete a skeleton model component from the assembly.

    Input Arguments:
        assembly - Handle to the assembly.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - Skeleton model component successfully deleted.
        PRO_TK_BAD_INPUTS - Invalid assembly handler.
        PRO_TK_E_NOT_FOUND - The specified assembly has no skeleton model.
        PRO_TK_NOT_VALID - Required license not found.
        PRO_TK_GENERAL_ERROR - Skeleton component could not be deleted.

*/

PRO_END_C_DECLS

#endif /* PROSKELETON_H */