From ff54f0e5cdeca9df3dd7fffd87b9e51266bf7944 Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Sun, 8 Apr 2012 20:45:41 +0200 Subject: [PATCH] New array functions. * cfw_array_contains() * cfw_array_contains_ptr() * cfw_array_find() * cfw_array_find_ptr() --- src/cfwarray.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/cfwarray.h | 4 ++++ 2 files changed, 53 insertions(+) diff --git a/src/cfwarray.c b/src/cfwarray.c index 869559f..86d0368 100644 --- a/src/cfwarray.c +++ b/src/cfwarray.c @@ -25,6 +25,7 @@ */ #include +#include #include "cfwobject.h" #include "cfwarray.h" @@ -203,6 +204,54 @@ cfw_array_pop(CFWArray *array) return true; } +bool +cfw_array_contains(CFWArray *array, void *ptr) +{ + size_t i; + + for (i = 0; i < array->size; i++) + if (cfw_equal(array->data[i], ptr)) + return true; + + return false; +} + +bool +cfw_array_contains_ptr(CFWArray *array, void *ptr) +{ + size_t i; + + for (i = 0; i < array->size; i++) + if (array->data[i] == ptr) + return true; + + return false; +} + +size_t +cfw_array_find(CFWArray *array, void *ptr) +{ + size_t i; + + for (i = 0; i < array->size; i++) + if (cfw_equal(array->data[i], ptr)) + return i; + + return SIZE_MAX; +} + +size_t +cfw_array_find_ptr(CFWArray *array, void *ptr) +{ + size_t i; + + for (i = 0; i < array->size; i++) + if (array->data[i] == ptr) + return i; + + return SIZE_MAX; +} + static CFWClass class = { .name = "CFWArray", .size = sizeof(CFWArray), diff --git a/src/cfwarray.h b/src/cfwarray.h index 66af963..40f25ec 100644 --- a/src/cfwarray.h +++ b/src/cfwarray.h @@ -37,5 +37,9 @@ extern bool cfw_array_set(CFWArray*, size_t, void*); extern bool cfw_array_push(CFWArray*, void*); extern void* cfw_array_last(CFWArray*); extern bool cfw_array_pop(CFWArray*); +extern bool cfw_array_contains(CFWArray*, void*); +extern bool cfw_array_contains_ptr(CFWArray*, void*); +extern size_t cfw_array_find(CFWArray*, void*); +extern size_t cfw_array_find_ptr(CFWArray*, void*); #endif