summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bench/libdimension/list.c10
-rw-r--r--libdimension/dimension/list.h11
-rw-r--r--libdimension/prtree.c38
3 files changed, 38 insertions, 21 deletions
diff --git a/bench/libdimension/list.c b/bench/libdimension/list.c
index 56a2181..b177d47 100644
--- a/bench/libdimension/list.c
+++ b/bench/libdimension/list.c
@@ -24,12 +24,12 @@
#include <stdint.h>
static bool
-dmnsn_comparator(dmnsn_list_iterator *i, dmnsn_list_iterator *j)
+dmnsn_comparator(const dmnsn_list_iterator *i, const dmnsn_list_iterator *j)
{
- uint32_t a, b;
- dmnsn_list_get(i, &a);
- dmnsn_list_get(j, &b);
- return a < b;
+ uint32_t *a, *b;
+ a = dmnsn_list_at(i);
+ b = dmnsn_list_at(j);
+ return *a < *b;
}
int
diff --git a/libdimension/dimension/list.h b/libdimension/dimension/list.h
index 9d99c9f..5a72f04 100644
--- a/libdimension/dimension/list.h
+++ b/libdimension/dimension/list.h
@@ -331,9 +331,14 @@ dmnsn_list_pop(dmnsn_list *list, void *obj)
*/
dmnsn_list *dmnsn_list_split(dmnsn_list *list);
-/** List object comparator function type. */
-typedef bool dmnsn_list_comparator_fn(dmnsn_list_iterator *l,
- dmnsn_list_iterator *r);
+/**
+ * List object comparator function type.
+ * @param[in] l The first iterator.
+ * @param[in] r The second iterator.
+ * @return Whether \p l < \p r.
+ */
+typedef bool dmnsn_list_comparator_fn(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r);
/**
* Sort a list, with O(n*log(n)) comparisons.
diff --git a/libdimension/prtree.c b/libdimension/prtree.c
index bcd0940..afd0924 100644
--- a/libdimension/prtree.c
+++ b/libdimension/prtree.c
@@ -86,7 +86,7 @@ enum {
/** Get a coordinate of the bounding box of a node. */
static inline double
-dmnsn_priority_get(dmnsn_list_iterator *i, bool is_object, int comparator)
+dmnsn_priority_get(const dmnsn_list_iterator *i, bool is_object, int comparator)
{
dmnsn_bounding_box box;
@@ -122,7 +122,8 @@ dmnsn_priority_get(dmnsn_list_iterator *i, bool is_object, int comparator)
/* List sorting comparators */
static bool
-dmnsn_xmin_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_xmin_object_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, true, DMNSN_XMIN);
double rval = dmnsn_priority_get(r, true, DMNSN_XMIN);
@@ -130,7 +131,8 @@ dmnsn_xmin_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_xmin_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_xmin_prnode_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, false, DMNSN_XMIN);
double rval = dmnsn_priority_get(r, false, DMNSN_XMIN);
@@ -138,7 +140,8 @@ dmnsn_xmin_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_ymin_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_ymin_object_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, true, DMNSN_YMIN);
double rval = dmnsn_priority_get(r, true, DMNSN_YMIN);
@@ -146,7 +149,8 @@ dmnsn_ymin_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_ymin_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_ymin_prnode_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, false, DMNSN_YMIN);
double rval = dmnsn_priority_get(r, false, DMNSN_YMIN);
@@ -154,7 +158,8 @@ dmnsn_ymin_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_zmin_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_zmin_object_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, true, DMNSN_ZMIN);
double rval = dmnsn_priority_get(r, true, DMNSN_ZMIN);
@@ -162,7 +167,8 @@ dmnsn_zmin_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_zmin_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_zmin_prnode_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, false, DMNSN_ZMIN);
double rval = dmnsn_priority_get(r, false, DMNSN_ZMIN);
@@ -170,7 +176,8 @@ dmnsn_zmin_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_xmax_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_xmax_object_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, true, DMNSN_XMAX);
double rval = dmnsn_priority_get(r, true, DMNSN_XMAX);
@@ -178,7 +185,8 @@ dmnsn_xmax_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_xmax_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_xmax_prnode_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, false, DMNSN_XMAX);
double rval = dmnsn_priority_get(r, false, DMNSN_XMAX);
@@ -186,7 +194,8 @@ dmnsn_xmax_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_ymax_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_ymax_object_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, true, DMNSN_YMAX);
double rval = dmnsn_priority_get(r, true, DMNSN_YMAX);
@@ -194,7 +203,8 @@ dmnsn_ymax_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_ymax_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_ymax_prnode_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, false, DMNSN_YMAX);
double rval = dmnsn_priority_get(r, false, DMNSN_YMAX);
@@ -202,7 +212,8 @@ dmnsn_ymax_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_zmax_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_zmax_object_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, true, DMNSN_ZMAX);
double rval = dmnsn_priority_get(r, true, DMNSN_ZMAX);
@@ -210,7 +221,8 @@ dmnsn_zmax_object_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
}
static bool
-dmnsn_zmax_prnode_comp(dmnsn_list_iterator *l, dmnsn_list_iterator *r)
+dmnsn_zmax_prnode_comp(const dmnsn_list_iterator *l,
+ const dmnsn_list_iterator *r)
{
double lval = dmnsn_priority_get(l, false, DMNSN_ZMAX);
double rval = dmnsn_priority_get(r, false, DMNSN_ZMAX);