Inline most array methods

This commit is contained in:
Arnaud Cornet 2008-12-20 14:28:18 +01:00
parent d3ef106c4f
commit 4d231e8ddc
3 changed files with 41 additions and 44 deletions

View File

@ -561,7 +561,7 @@ void log_mode(log_t *logdata, const char *ircmask, const char *channel,
channel, modes);
for (i = 0; i < array_count(mode_args); i++) {
snprintf(tmpbuf2, LOGLINE_MAXLEN, "%s %s", tmpbuf,
array_get(mode_args, i));
(char *)array_get(mode_args, i));
tmp = tmpbuf;
tmpbuf = tmpbuf2;
tmpbuf2 = tmp;

View File

@ -701,12 +701,6 @@ array_t *array_new(void)
return a;
}
int array_includes(array_t *a, int index)
{
assert(index >= 0);
return a->elemc > index;
}
void array_ensure(array_t *a, int index)
{
assert(index >= 0);
@ -718,18 +712,6 @@ void array_ensure(array_t *a, int index)
a->elemc = index + 1;
}
void array_set(array_t *a, int index, void *ptr)
{
array_ensure(a, index);
a->elemv[index] = ptr;
}
void *array_get(array_t *a, int index)
{
assert(array_includes(a, index));
return a->elemv[index];
}
array_t *array_extract(array_t *a, int index, int upto)
{
array_t *ret;
@ -752,26 +734,6 @@ array_t *array_extract(array_t *a, int index, int upto)
return ret;
}
void array_push(array_t *a, void *ptr)
{
array_ensure(a, a->elemc + 1);
a->elemv[a->elemc - 1] = ptr;
}
void *array_pop(array_t *a)
{
if (a->elemc == 0)
return NULL;
if (a->elemc == 1) {
void *ptr = a->elemv[0];
free(a->elemv);
a->elemv = NULL;
a->elemc = 0;
return ptr;
}
return a->elemv[--a->elemc];
}
void array_deinit(array_t *a)
{
if (a->elemv)

View File

@ -16,6 +16,7 @@
#include <sys/types.h>
#include <unistd.h>
#include <stdarg.h>
#include <stdlib.h>
/* Warning: must be in order, 0 = less output */
#define LOG_FATAL 0
@ -153,17 +154,51 @@ char *bip_strdup(const char *str);
void array_init(array_t *a);
array_t *array_new(void);
int array_includes(array_t *a, int index);
void array_ensure(array_t *a, int index);
void array_set(array_t *a, int index, void *ptr);
void *array_get(array_t *a, int index);
array_t *array_extract(array_t *a, int index, int upto);
void array_push(array_t *a, void *ptr);
void *array_pop(array_t *a);
void array_deinit(array_t *a);
void array_free(array_t *a);
static inline int array_count(array_t *a)
{
return a->elemc;
}
static inline int array_includes(array_t *a, int index)
{
assert(index >= 0);
return a->elemc > index;
}
static inline void array_set(array_t *a, int index, void *ptr)
{
array_ensure(a, index);
a->elemv[index] = ptr;
}
static inline void *array_get(array_t *a, int index)
{
assert(array_includes(a, index));
return a->elemv[index];
}
static inline void array_push(array_t *a, void *ptr)
{
array_ensure(a, a->elemc + 1);
a->elemv[a->elemc - 1] = ptr;
}
static inline void *array_pop(array_t *a)
{
if (a->elemc == 0)
return NULL;
if (a->elemc == 1) {
void *ptr = a->elemv[0];
free(a->elemv);
a->elemv = NULL;
a->elemc = 0;
return ptr;
}
return a->elemv[--a->elemc];
}
#endif