summaryrefslogtreecommitdiffstats
path: root/lib/vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vector.c')
-rw-r--r--lib/vector.c196
1 files changed, 91 insertions, 105 deletions
diff --git a/lib/vector.c b/lib/vector.c
index 110cd2915..e38ee57fc 100644
--- a/lib/vector.c
+++ b/lib/vector.c
@@ -23,175 +23,161 @@
#include "vector.h"
#include "memory.h"
-DEFINE_MTYPE_STATIC(LIB, VECTOR, "Vector")
+DEFINE_MTYPE_STATIC(LIB, VECTOR, "Vector")
DEFINE_MTYPE_STATIC(LIB, VECTOR_INDEX, "Vector index")
/* Initialize vector : allocate memory and return vector. */
-vector
-vector_init (unsigned int size)
+vector vector_init(unsigned int size)
{
- vector v = XCALLOC (MTYPE_VECTOR, sizeof (struct _vector));
+ vector v = XCALLOC(MTYPE_VECTOR, sizeof(struct _vector));
- /* allocate at least one slot */
- if (size == 0)
- size = 1;
+ /* allocate at least one slot */
+ if (size == 0)
+ size = 1;
- v->alloced = size;
- v->active = 0;
- v->index = XCALLOC (MTYPE_VECTOR_INDEX, sizeof (void *) * size);
- return v;
+ v->alloced = size;
+ v->active = 0;
+ v->index = XCALLOC(MTYPE_VECTOR_INDEX, sizeof(void *) * size);
+ return v;
}
-void
-vector_free (vector v)
+void vector_free(vector v)
{
- XFREE (MTYPE_VECTOR_INDEX, v->index);
- XFREE (MTYPE_VECTOR, v);
+ XFREE(MTYPE_VECTOR_INDEX, v->index);
+ XFREE(MTYPE_VECTOR, v);
}
-vector
-vector_copy (vector v)
+vector vector_copy(vector v)
{
- unsigned int size;
- vector new = XCALLOC (MTYPE_VECTOR, sizeof (struct _vector));
+ unsigned int size;
+ vector new = XCALLOC(MTYPE_VECTOR, sizeof(struct _vector));
- new->active = v->active;
- new->alloced = v->alloced;
+ new->active = v->active;
+ new->alloced = v->alloced;
- size = sizeof (void *) * (v->alloced);
- new->index = XCALLOC (MTYPE_VECTOR_INDEX, size);
- memcpy (new->index, v->index, size);
+ size = sizeof(void *) * (v->alloced);
+ new->index = XCALLOC(MTYPE_VECTOR_INDEX, size);
+ memcpy(new->index, v->index, size);
- return new;
+ return new;
}
/* Check assigned index, and if it runs short double index pointer */
-void
-vector_ensure (vector v, unsigned int num)
+void vector_ensure(vector v, unsigned int num)
{
- if (v->alloced > num)
- return;
-
- v->index = XREALLOC (MTYPE_VECTOR_INDEX,
- v->index, sizeof (void *) * (v->alloced * 2));
- memset (&v->index[v->alloced], 0, sizeof (void *) * v->alloced);
- v->alloced *= 2;
-
- if (v->alloced <= num)
- vector_ensure (v, num);
+ if (v->alloced > num)
+ return;
+
+ v->index = XREALLOC(MTYPE_VECTOR_INDEX, v->index,
+ sizeof(void *) * (v->alloced * 2));
+ memset(&v->index[v->alloced], 0, sizeof(void *) * v->alloced);
+ v->alloced *= 2;
+
+ if (v->alloced <= num)
+ vector_ensure(v, num);
}
/* This function only returns next empty slot index. It dose not mean
the slot's index memory is assigned, please call vector_ensure()
after calling this function. */
-int
-vector_empty_slot (vector v)
+int vector_empty_slot(vector v)
{
- unsigned int i;
+ unsigned int i;
- if (v->active == 0)
- return 0;
+ if (v->active == 0)
+ return 0;
- for (i = 0; i < v->active; i++)
- if (v->index[i] == 0)
- return i;
+ for (i = 0; i < v->active; i++)
+ if (v->index[i] == 0)
+ return i;
- return i;
+ return i;
}
/* Set value to the smallest empty slot. */
-int
-vector_set (vector v, void *val)
+int vector_set(vector v, void *val)
{
- unsigned int i;
+ unsigned int i;
- i = vector_empty_slot (v);
- vector_ensure (v, i);
+ i = vector_empty_slot(v);
+ vector_ensure(v, i);
- v->index[i] = val;
+ v->index[i] = val;
- if (v->active <= i)
- v->active = i + 1;
+ if (v->active <= i)
+ v->active = i + 1;
- return i;
+ return i;
}
/* Set value to specified index slot. */
-int
-vector_set_index (vector v, unsigned int i, void *val)
+int vector_set_index(vector v, unsigned int i, void *val)
{
- vector_ensure (v, i);
+ vector_ensure(v, i);
- v->index[i] = val;
+ v->index[i] = val;
- if (v->active <= i)
- v->active = i + 1;
+ if (v->active <= i)
+ v->active = i + 1;
- return i;
+ return i;
}
/* Look up vector. */
-void *
-vector_lookup (vector v, unsigned int i)
+void *vector_lookup(vector v, unsigned int i)
{
- if (i >= v->active)
- return NULL;
- return v->index[i];
+ if (i >= v->active)
+ return NULL;
+ return v->index[i];
}
/* Lookup vector, ensure it. */
-void *
-vector_lookup_ensure (vector v, unsigned int i)
+void *vector_lookup_ensure(vector v, unsigned int i)
{
- vector_ensure (v, i);
- return v->index[i];
+ vector_ensure(v, i);
+ return v->index[i];
}
/* Unset value at specified index slot. */
-void
-vector_unset (vector v, unsigned int i)
+void vector_unset(vector v, unsigned int i)
{
- if (i >= v->alloced)
- return;
+ if (i >= v->alloced)
+ return;
- v->index[i] = NULL;
+ v->index[i] = NULL;
- if (i + 1 == v->active)
- {
- v->active--;
- while (i && v->index[--i] == NULL && v->active--)
- ; /* Is this ugly ? */
- }
+ if (i + 1 == v->active) {
+ v->active--;
+ while (i && v->index[--i] == NULL && v->active--)
+ ; /* Is this ugly ? */
+ }
}
-void
-vector_unset_value (vector v, void *val)
+void vector_unset_value(vector v, void *val)
{
- size_t i;
-
- for (i = 0; i < v->active; i++)
- if (v->index[i] == val)
- {
- v->index[i] = NULL;
- break;
- }
-
- if (i + 1 == v->active)
- do
- v->active--;
- while (i && v->index[--i] == NULL);
+ size_t i;
+
+ for (i = 0; i < v->active; i++)
+ if (v->index[i] == val) {
+ v->index[i] = NULL;
+ break;
+ }
+
+ if (i + 1 == v->active)
+ do
+ v->active--;
+ while (i && v->index[--i] == NULL);
}
/* Count the number of not emplty slot. */
-unsigned int
-vector_count (vector v)
+unsigned int vector_count(vector v)
{
- unsigned int i;
- unsigned count = 0;
+ unsigned int i;
+ unsigned count = 0;
- for (i = 0; i < v->active; i++)
- if (v->index[i] != NULL)
- count++;
+ for (i = 0; i < v->active; i++)
+ if (v->index[i] != NULL)
+ count++;
- return count;
+ return count;
}