#ifndef PROGEOMITEMDATA_H
#define PROGEOMITEMDATA_H
#include <ProObjects.h>
#include <ProCurvedata.h>
#include <ProSurfacedata.h>
#include <ProCsysdata.h>
/*
Function declarations and specific data structures for ProGeomitem
*/
PRO_BEGIN_C_DECLS
/*===========================================================================*/
typedef struct geom_item_data_struct
{
ProType obj_type;
union
{
ProCurvedata *p_curve_data;
ProSurfacedata *p_surface_data;
ProCsysdata *p_csys_data;
} data;
} ProGeomitemdata;
#define PRO_CURVE_DATA(p_data) p_data == NULL ? NULL : \
p_data -> data.p_curve_data
#define PRO_SURF_DATA(p_data) p_data == NULL ? NULL : \
p_data -> data.p_surface_data
#define PRO_CSYS_DATA(p_data) p_data == NULL ? NULL : \
p_data -> data.p_csys_data
extern ProError ProLogObjectitemdataGet(ProGeomitem* p_item,
ProSurface** p_surf_arr);
/*
Purpose: Retrieves the geometric representation data of the log object type
item
<p> The following types of Geomitems are supported:
<ul>
<li>PRO_LOG_OBJECT
</ul>
Input Arguments:
p_item - The item handle.
Output Arguments:
p_surf_arr - The item data. The function allocates the memory for this
argument. Use the function <b>ProArrayFree()</b> to free
the memory.
Return Values:
PRO_TK_NO_ERROR - The function successfully retrieved the information.
PRO_TK_BAD_INPUTS - The input argument is invalid.
See Also:
ProArrayFree()
*/
extern ProError ProGeomitemdataGet ( ProGeomitem *p_item,
ProGeomitemdata **p_data_ptr );
/*
Purpose: Retrieves the geometric representation data of the specified
geometry item.
<p> The following types of Geomitems are supported:
<ul>
<li>PRO_EDGE
<li>PRO_EDGE_START
<li>PRO_EDGE_END
<li>PRO_CURVE
<li>PRO_CRV_START
<li>PRO_CRV_END
<li>PRO_AXIS
<li>PRO_SURFACE
<li>PRO_CSYS
</ul>
Input Arguments:
p_item - The item handle.
Output Arguments:
p_data_ptr - The item data. The function allocates the memory for this
argument. Use the function <b>ProGeomitemdataFree()</b> to
free the memory.
Return Values:
PRO_TK_NO_ERROR - The function successfully retrieved the information.
PRO_TK_BAD_INPUTS - The input argument is invalid.
See Also:
ProGeomitemdataFree()
*/
extern ProError ProGeomitemdataFree ( ProGeomitemdata **to_free );
/*
Purpose: Frees the geometry item data allocated by
<b>ProGeomitemdataGet()</b> (or any of the <b>Pro*dataGet()</b>
functions).
Input Arguments:
to_free - The pointer to the data pointer
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function successfully freed the data.
PRO_TK_BAD_INPUTS - The argument is invalid.
See Also:
ProCurveDataGet()
ProEdgeVertexdataGet()
ProGeomitemdataGet()
*/
PRO_END_C_DECLS
#endif /* PROGEOMITEMDATA_H */