#ifndef PROCONTOURDATA_H
#define PROCONTOURDATA_H

#include   <ProObjects.h>
#include   <ProContour.h>

/*
   Function declarations and specific data structures for ProContourdata
*/




PRO_BEGIN_C_DECLS

typedef struct pro_contour_data
{
    ProContourTraversal     trav;
    int	                *edge_id_arr;	/* ProArray of identifiers of edges */
} ProContourdata;

LIB_PTK_INTF_API  ProError ProContourdataAlloc ( ProContourdata **pp_contour_data );
/*
    Purpose: Allocates memory for the contour data structure.

    Input Arguments:
        none

    Output Arguments:
        pp_contour_data - The contour data structure

    Return Values:
        PRO_TK_NO_ERROR - The function successfully allocated memory for the 
                          contour.
        PRO_TK_OUT_OF_MEMORY - Insufficient memory.
        PRO_TK_BAD_INPUTS - The input argument is invalid.

*/

LIB_PTK_INTF_API  ProError ProContourdataFree ( ProContourdata *p_contour_data );
/*
    Purpose: Frees the memory for the contour data structure.

    Input Arguments:
        p_contour_data - The contour 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.

*/

extern ProError ProContourdataEdgeIdArrayGet ( ProContourdata *p_contour_data,
			  		       int **r_edge_id_arr );
/*
    Purpose: Gets an array of edge identifiers for the contour.

    Input Arguments:
        p_contour_data - The contour

    Output Arguments:
        r_edge_id_arr - A <i>ProArray</i> of edge identifiers for the contour

    Return Values:
        PRO_TK_NO_ERROR - The function successfully got the array of edge 
                          identifiers.
        PRO_TK_BAD_INPUTS - The input argument is invalid.

*/


LIB_PTK_INTF_API  ProError ProContourdataEdgeIdArraySet ( ProContourdata	*p_contour_data,
					       int		*edge_id_arr );
/*
    Purpose: Sets an array of edge identifiers for the contour.

    Input Arguments:
        p_contour_data - The contour
        edge_id_arr - The <i>ProArray</i> of edge identifiers for the contour

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function successfully set the array of edge 
                          identifiers for the contour.
        PRO_TK_BAD_INPUTS - One or more of the arguments are invalid.

*/

LIB_PTK_INTF_API  ProError ProContourdataInit ( ProContourTraversal	contour_trav,
				     ProContourdata *p_contour_data );
/*
    Purpose: Initializes the contour data structure.

    Input Arguments:
        contour_trav - The contour traversal

    Output Arguments:
        p_contour_data - The contour data structure

    Return Values:
        PRO_TK_NO_ERROR - The function successfully initialized the data 
                          structure.
        PRO_TK_BAD_INPUTS - The input argument is invalid.

*/


extern ProError ProContourdataGet ( ProContourdata *p_contour_data,
				    ProContourTraversal		*p_contour_trav );
/*
    Purpose: Retrieves information from the contour data structure.

    Input Arguments:
        p_contour_data - The contour data structure

    Output Arguments:
        p_contour_trav - The contour traversal

    Return Values:
        PRO_TK_NO_ERROR - The function successfully retrieved the information.
        PRO_TK_BAD_INPUTS - The input argument is invalid.

*/

PRO_END_C_DECLS

#endif /* PROCONTOURDATA_H */