- traverse function replaced with iterator functions

This commit is contained in:
2010-05-02 21:25:22 +00:00
parent fa2fdf2640
commit e013cc9c31
+46 -159
View File
@@ -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 );
}