New array functions.

* cfw_array_contains()
 * cfw_array_contains_ptr()
 * cfw_array_find()
 * cfw_array_find_ptr()
This commit is contained in:
Jonathan Schleifer 2012-04-08 20:45:41 +02:00
parent d6bbd7ba65
commit ff54f0e5cd
2 changed files with 53 additions and 0 deletions

View file

@ -25,6 +25,7 @@
*/ */
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h>
#include "cfwobject.h" #include "cfwobject.h"
#include "cfwarray.h" #include "cfwarray.h"
@ -203,6 +204,54 @@ cfw_array_pop(CFWArray *array)
return true; 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 = { static CFWClass class = {
.name = "CFWArray", .name = "CFWArray",
.size = sizeof(CFWArray), .size = sizeof(CFWArray),

View file

@ -37,5 +37,9 @@ extern bool cfw_array_set(CFWArray*, size_t, void*);
extern bool cfw_array_push(CFWArray*, void*); extern bool cfw_array_push(CFWArray*, void*);
extern void* cfw_array_last(CFWArray*); extern void* cfw_array_last(CFWArray*);
extern bool cfw_array_pop(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 #endif