#ifndef PRODATUMDATA_H
#define PRODATUMDATA_H
#include <ProSurfacedata.h>
#include <ProCurvedata.h>
#include <ProCsysdata.h>
/*
Function declarations and specific data structures for ProDatumdata
*/
PRO_BEGIN_C_DECLS
/*===========================================================================*/
typedef union pro_datum_obj {
ProCurvedata curve;
ProPlanedata plane;
ProCsysdata csys;
} ProDatumobject;
typedef struct pro_datum
{
int id; /* Datum ID */
ProType type; /* Datum type:
PRO_CURVE, PRO_DATUM_PLANE or PRO_CSYS */
ProName name; /* Datum name */
ProDatumobject obj; /* Datum object */
} ProDatumdata;
LIB_PTK_INTF_API ProError ProDatumdataAlloc ( ProDatumdata **pp_datum_data );
/*
Purpose: Allocates memory for the datum data structure.
Input Arguments:
none
Output Arguments:
pp_datum_data - The datum data structure
Return Values:
PRO_TK_NO_ERROR - The function successfully allocated memory for the
datum data structure.
PRO_TK_OUT_OF_MEMORY - Insufficient memory.
PRO_TK_BAD_INPUTS - The input is invalid.
*/
LIB_PTK_INTF_API ProError ProDatumdataFree ( ProDatumdata *p_datum_data );
/*
Purpose: Frees the memory for the datum data structure.
Input Arguments:
p_datum_data - The datum data structure
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function successfully freed the memory.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
LIB_PTK_INTF_API ProError ProDatumdataInit ( int datum_id,
ProType datum_type,
wchar_t *datum_name,
ProDatumobject *p_datum_obj,
ProDatumdata *p_datum_data );
/*
Purpose: Initializes the datum data structure.
Input Arguments:
datum_id - The datum identifier
datum_type - The datum type
datum_name - The datum name
p_datum_obj - The datum object
Output Arguments:
p_datum_data - The datum data structure
Return Values:
PRO_TK_NO_ERROR - The function successfully initialized the data
structure.
PRO_TK_BAD_INPUTS - One or more of the input arguments are invalid.
*/
extern ProError ProDatumdataGet ( ProDatumdata *p_datum_data,
int *p_datum_id,
ProType *p_datum_type,
ProName datum_name,
ProDatumobject *p_datum_obj );
/*
Purpose: Retrieves information from the datum data structure.
<p> NOTE:
<p> The function ignores the output argument pointers that are
NULL.
Input Arguments:
p_datum_data - The datum data structure
Output Arguments:
p_datum_id - The datum identifier
p_datum_type - The datum type
datum_name - The datum name
p_datum_obj - The datum object
Return Values:
PRO_TK_NO_ERROR - The function successfully retrieved the information.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
extern ProError ProDatumCurvedataInit ( ProCurvedata *p_curve,
ProDatumobject *p_datum_obj );
/*
Purpose: Initializes the data structure for the datum curve object.
Input Arguments:
p_curve - The datum curve
Output Arguments:
p_datum_obj - The datum object
Return Values:
PRO_TK_NO_ERROR - The function successfully initialized the structure.
PRO_TK_BAD_INPUTS - The input argument is invalid.
PRO_TK_BSPL_MULTI_INNER_KNOTS - The curve is a B-spline with multiple
inner knots.
*/
extern ProError ProDatumCurvedataGet ( ProDatumobject *p_datum_obj,
ProCurvedata *p_curve );
/*
Purpose: Retrieves information from the data structure for the datum curve
object.
Input Arguments:
p_datum_obj - The datum object
Output Arguments:
p_curve - The datum curve
Return Values:
PRO_TK_NO_ERROR - The function successfully retrieved the information.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
extern ProError ProDatumPlanedataInit ( ProPlanedata *p_plane,
ProDatumobject *p_datum_obj );
/*
Purpose: Initializes the data structure for the datum plane object.
Input Arguments:
p_plane - The datum plane
Output Arguments:
p_datum_obj - The datum object
Return Values:
PRO_TK_NO_ERROR - The function successfully initialized the structure.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
extern ProError ProDatumPlanedataGet ( ProDatumobject *p_datum_obj,
ProPlanedata *p_plane );
/*
Purpose: Retrieves information from the data structure for the datum plane
object.
Input Arguments:
p_datum_obj - The datum object
Output Arguments:
p_plane - The datum plane
Return Values:
PRO_TK_NO_ERROR - The function successfully retrieved the information.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
LIB_PTK_INTF_API ProError ProDatumCsysdataInit ( ProCsysdata *p_csys,
ProDatumobject *p_datum_obj );
/*
Purpose: Initializes the data structure for the datum coordinate system
object.
Input Arguments:
p_csys - The coordinate system
Output Arguments:
p_datum_obj - The datum object
Return Values:
PRO_TK_NO_ERROR - The function successfully initialized the structure.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
extern ProError ProDatumCsysdataGet ( ProDatumobject *p_datum_obj,
ProCsysdata *p_csys );
/*
Purpose: Retrieves information from the data structure for the datum
coordinate system object.
Input Arguments:
p_datum_obj - The datum object
Output Arguments:
p_csys - The coordinate system
Return Values:
PRO_TK_NO_ERROR - The function successfully retrieved the information.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
LIB_PTK_INTF_API ProError ProDatumdataMemoryFree ( ProDatumdata *p_datum_data );
/*
Purpose: Frees the top-level memory used by the datum data structure.
Input Arguments:
p_datum_data - The datum data structure
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function successfully freed the memory.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
PRO_END_C_DECLS
#endif /* PRODATUMDATA_H */