/*
 
uf_modl_mswp.h
File description:
   Open API modeling routines to create, edit and inquire about mswp.
*****************************************************************************/


#ifndef UF_MODL_MSWP_H_INCLUDED
#define UF_MODL_MSWP_H_INCLUDED


/***************************************************************************

 ***************************************************************************/


#include <uf_defs.h>
#include <uf_modl_types.h>
#include <uf_modl_mswp_types.h>
#include <libufun_exports.h>



/****************************************************************************
This is to initialize the data structure for an extrude feature with the
following default values and options.

   Section                    NULL_TAG
   Direction                  NULL_TAG
   Limit Type                 UF_MODL_MSWP_LIMIT_DISTANCE
   Start Limit Distance       0.0/0.0   [in/mm]
   End Limit Distance         1.0/25.0  [in/mm]
   Taper Type                 UF_MODL_MSWP_TAPER_NONE
   Offset Type                UF_MODL_MSWP_OFFSET_NONE
   Boolean Sign               UF_NULLSIGN [create]
   Boolean Target             NULL_TAG

Environment: Internal  and  External
See Also: UF_MODL_mswp_create_extrude, UF_MODL_mswp_edit_extrude, UF_MODL_mswp_ask_extrude.
History:
***************************************************************************/

extern UFUNEXPORT int UF_MODL_mswp_init_extrude_data(
UF_MODL_mswp_extrude_p_t extrude
                       /* <I/O>
                       The extrude data structure to be initialized.
                       */

);

/****************************************************************************
This is to create an extrude feature based on the input data.

Environment: Internal  and  External
See Also: UF_MODL_mswp_edit_extrude, UF_MODL_mswp_ask_extrude.
History:
***************************************************************************/

extern UFUNEXPORT int UF_MODL_mswp_create_extrude(
UF_MODL_mswp_extrude_p_t extrude,
                       /* <I>
                       Input data to be used to create Extrude feature.
                       */

int *num_features,      /* <O> Number of features */
tag_t  **features       /* <OF>
                       List of feature identifiers created.  This
                       must be freed by caller.
                       */

);

/****************************************************************************
This is to inquire the data for an extrude feature.

Environment: Internal  and  External
See Also: UF_MODL_mswp_edit_extrude, UF_MODL_mswp_create_extrude.
History:
***************************************************************************/

extern UFUNEXPORT int UF_MODL_mswp_ask_extrude(
tag_t feature,          /* <I>
                       Extrude feature to be asked */

UF_MODL_mswp_extrude_p_t extrude
                       /* <O>
                       Data for the Extrude feature.
                       */

);

/****************************************************************************
This is to edit an extrude feature with given data.  The good practice to
edit a feature is to follow the following steps:

   Call UF_MODL_mswp_ask_extrude to get the data
   Make necessary changes to the data
   Call UF_MODL_mswp_edit_extrude

Environment: Internal  and  External
See Also: UF_MODL_mswp_ask_extrude, UF_MODL_mswp_create_extrude.
History:
***************************************************************************/

extern UFUNEXPORT int UF_MODL_mswp_edit_extrude(
tag_t feature,          /* <I/O>
                       Extrude feature to be edited*/

UF_MODL_mswp_extrude_p_t extrude
                       /* <I>
                       Data for the Extrude feature.
                       */

);



#undef EXPORTLIBRARY

#endif     /* UF_MODL_MSWP_H_INCLUDED */