From e013cc9c3168fa09a5d5183c53050501ce79faf3 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Sun, 2 May 2010 21:25:22 +0000 Subject: [PATCH] - traverse function replaced with iterator functions --- src/C/H5Fed_retrieve.c | 205 +++++++++-------------------------------- 1 file changed, 46 insertions(+), 159 deletions(-) diff --git a/src/C/H5Fed_retrieve.c b/src/C/H5Fed_retrieve.c index b1acc65..88160cf 100644 --- a/src/C/H5Fed_retrieve.c +++ b/src/C/H5Fed_retrieve.c @@ -19,44 +19,50 @@ #include "h5core/h5_core.h" #include "H5Fed.h" - /*! - Begin traverse over all vertices on this compute node. + Begin traverse over all entities on this compute node. Initialize internal data structures. \remark - Vertices can be on processor boundaries! Therefore the same vertex can be + Entities might be on processor boundaries! Therefore the same entity might be processed on several compute nodes. \param[in] f file handle + \param[in] codim co-dimension of entity to traverse \return H5_SUCCESS or error code */ -h5_err_t -H5FedBeginTraverseVertices ( - h5_file_t * const f + +h5t_entity_iterator_t* +H5FedBeginTraverseEntities ( + h5_file_t* const f, + int codim ) { + h5t_entity_iterator_t* iter; SET_FNAME ( f, __func__ ); - return h5t_begin_traverse_vertices ( f ); + if (h5t_alloc_entity_iterator (f, &iter, codim) < 0) { + return (void*)H5_ERR; + } + return iter; } /*! - Get coordinates of next vertex. + Get next local entity ID. - \param[in] f file handle - \param[out] P 3-dimensional coordinates + \param[in] f file handle + \param[in/out] iter iterator - \return Local vertex ID - \return -1, if done - \return error code on error + \return Local entity ID + \return -1, if done + \return error code on error */ h5_id_t -H5FedTraverseVertices ( - h5_file_t * const f, - h5_float64_t P[3] +H5FedTraverseEntities ( + h5_file_t* const f, + h5t_entity_iterator_t* iter ) { SET_FNAME ( f, __func__ ); - return h5t_traverse_vertices ( f, P ); + return h5t_iterate_entities (f, iter); } /*! @@ -68,171 +74,52 @@ H5FedTraverseVertices ( */ h5_err_t -H5FedEndTraverseVertices ( - h5_file_t * const f +H5FedEndTraverseEntities ( + h5_file_t* const f, + h5t_entity_iterator_t* iter ) { SET_FNAME ( f, __func__ ); - return h5t_end_traverse_vertices ( f ); + return h5t_release_entity_iterator (f, iter); } -/*! - Begin traverse over all edges on this compute node. - Initialize internal data structures. - - \remark - Edges can be on processor boundaries! Therefore the same edge can be - processed on several compute nodes. - - \param[in] f file handle - - \return H5_SUCCESS or error code -*/ -h5_err_t -H5FedBeginTraverseEdges ( - h5_file_t * const f /*!< file handle */ - ) { - SET_FNAME ( f, __func__ ); - return h5t_begin_traverse_edges ( f ); -} /*! - Get local edge id and vertices of next edge. + Get coordinates of vertex given by local index - \param[in] f file handle - \param[out] vids local vertex IDs - - \return Local edge ID - \return -1, if done - \return error code on error - */ -h5_id_t -H5FedTraverseEdges ( - h5_file_t * const f, - h5_id_t * const vids - ) { - SET_FNAME ( f, __func__ ); - return h5t_traverse_edges ( f, vids ); -} - -/*! - End of traversing. Release internal data structures. - - \param[in] f File handle + \param[in] f file handle + \param[in] vertex_idx local index of vertex + \param[out] P 3-dimensional coordinates \return H5_SUCCESS or error code */ h5_err_t -H5FedEndTraverseEdges ( - h5_file_t * const f /*!< file handle */ +H5FedGetVertexCoordsByIndex ( + h5_file_t* const f, + h5_id_t vertex_index, + h5_float64_t P[3] ) { SET_FNAME ( f, __func__ ); - return h5t_end_traverse_edges ( f ); + return h5t_get_vertex_coords_by_index (f, vertex_index, P); } -/*! - Begin traverse over all triangles on this compute node. - Initialize internal data structures. - - \remark - Triangles can be on processor boundaries! Therefore the same vertex can be - processed on several compute nodes. - - \param[in] f file handle - - \return H5_SUCCESS or error code -*/ h5_err_t -H5FedBeginTraverseTriangles ( - h5_file_t * const f +H5FedGetVertexCoordByID ( + h5_file_t* const f, + h5_id_t vertex_id, + h5_float64_t P[3] ) { SET_FNAME ( f, __func__ ); - return h5t_begin_traverse_triangles ( f ); + return h5t_get_vertrex_coords_by_id (f, vertex_id, P); } -/*! - Get local triangle ID and vertices of next triangle. - - \param[in] f file handle - \param[out] vids local vertex IDs - - \return Local triangle ID - \return -1, if done - \return error code on error - */ -h5_id_t -H5FedTraverseTriangles ( - h5_file_t * const f, - h5_id_t * const vids - ) { - SET_FNAME ( f, __func__ ); - return h5t_traverse_triangles ( f, vids ); -} - -/*! - End of traversing. Release internal data structures. - - \param[in] f File handle - - \return H5_SUCCESS or error code - */ h5_err_t -H5FedEndTraverseTriangles ( - h5_file_t * const f +H5FedGetVertexIndicesOfEntity ( + h5_file_t* const f, + h5_id_t entity_id, + h5_id_t* const vertex_indices ) { SET_FNAME ( f, __func__ ); - return h5t_end_traverse_triangles ( f ); + return h5t_get_vertex_indices_of_entity (f, entity_id, vertex_indices); } -/*! - Begin traverse over all elements on this compute node. - Initialize internal data structures. - - \remark - Elements are unique per compute node. Ghost elements are *not* return - while traversing. - - \param[in] f file handle - - \return H5_SUCCESS or error code -*/ -h5_err_t -H5FedBeginTraverseElements ( - h5_file_t * const f - ) { - SET_FNAME ( f, __func__ ); - return h5t_begin_traverse_elems ( f ); -} - -/*! - Get local element ID and vertices of next element. - - \param[in] f file handle - \param[out] vids local vertex IDs - - \return Local element ID - \return -1, if done - \return error code on error - */ -h5_id_t -H5FedTraverseElements ( - h5_file_t * const f, - h5_id_t * const vids - ) { - SET_FNAME ( f, __func__ ); - return h5t_traverse_elems ( f, vids ); -} - -/*! - End of traversing. Release internal data structures. - - \param[in] f File handle - - \return H5_SUCCESS or error code - */ -h5_id_t -H5FedEndTraverseElements ( - h5_file_t * const f - ) { - return h5t_end_traverse_elems ( f ); -}