From 7a21db5914dd7a5666e603d66ed3948b659ba2fc Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 8 May 2010 23:21:48 -0600 Subject: New DMNSN_ARRAY_FOREACH() macro, faster than iterating with dmnsn_array_get(). --- libdimension/prtree.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'libdimension/prtree.c') diff --git a/libdimension/prtree.c b/libdimension/prtree.c index 04d8cc4..dc3ed38 100644 --- a/libdimension/prtree.c +++ b/libdimension/prtree.c @@ -430,10 +430,8 @@ dmnsn_pseudo_prtree_leaves(const dmnsn_pseudo_prtree *pseudo) static void dmnsn_precompute_objects(const dmnsn_array *objects) { - for (size_t i = 0; i < dmnsn_array_size(objects); ++i) { - dmnsn_object *object; - dmnsn_array_get(objects, i, &object); - dmnsn_object_precompute(object); + DMNSN_ARRAY_FOREACH (dmnsn_object **, object, objects) { + dmnsn_object_precompute(*object); } } @@ -555,12 +553,9 @@ dmnsn_prtree_search(const dmnsn_prtree *tree, dmnsn_line ray, double t = -1.0; /* Search the unbounded objects */ - for (size_t i = 0; i < dmnsn_array_size(tree->unbounded); ++i) { - dmnsn_object *object; - dmnsn_array_get(tree->unbounded, i, &object); - + DMNSN_ARRAY_FOREACH (dmnsn_object **, object, tree->unbounded) { dmnsn_intersection local_intersection; - if ((*object->intersection_fn)(object, ray, &local_intersection)) { + if ((*(*object)->intersection_fn)(*object, ray, &local_intersection)) { if (t < 0.0 || local_intersection.t < t) { *intersection = local_intersection; t = local_intersection.t; -- cgit v1.2.3