+static int16_t * build_whitelist()
+{
+ uint16_t i_things = NULL != world.things;
+ struct Thing * t = world.things;
+ for (; t; t = t->next, i_things++);
+ int16_t * whitelist = try_malloc(i_things * sizeof(int16_t), __func__);
+ for (i_things = 0, t = world.things; t;
+ whitelist[i_things] = t->id, t = t->next, i_things++);
+ whitelist[i_things] = -1;
+ return whitelist;
+}
+
+
+
+static uint8_t thing_in_whitelist(uint8_t id, int16_t * whitelist)
+{
+ uint16_t i;
+ for (i = 0; -1 < whitelist[i]; i++)
+ {
+ if ((int16_t) id == whitelist[i])
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+