summaryrefslogtreecommitdiff
path: root/src/base/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/list.c')
-rwxr-xr-xsrc/base/list.c142
1 files changed, 34 insertions, 108 deletions
diff --git a/src/base/list.c b/src/base/list.c
index 39b3962..b59f64b 100755
--- a/src/base/list.c
+++ b/src/base/list.c
@@ -1,19 +1,18 @@
-#include "main.h"
-#include "list.h"
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
+#include "main.h"
+#include "list.h"
+
list_t* newList()
{
list_t *new;
- new = malloc( sizeof(list_t) );
- memset(new, 0, sizeof(list_t) );
-
+ new = malloc(sizeof(list_t));
+ memset(new, 0, sizeof(list_t));
return new;
}
@@ -21,17 +20,13 @@ list_t* cloneList(list_t *p)
{
list_t *new;
- assert( p != NULL );
-
+ assert(p != NULL);
new = malloc( sizeof(list_t) );
memcpy(new, p, sizeof(list_t) );
-
- if( p->list != NULL )
- {
+ if(p->list != NULL) {
new->list = malloc( p->alloc * sizeof(void *) );
memcpy(new->list, p->list, p->alloc * sizeof(void *));
}
-
return new;
}
@@ -41,15 +36,12 @@ list_t* cloneListItem(list_t *p, void *f)
void* (*fce)(void *);
int i;
- assert( p != NULL );
- assert( f != NULL );
-
+ assert(p != NULL);
+ assert(f != NULL);
new = cloneList(p);
fce = f;
-
- for(i = 0 ; i < p->count ; i++)
+ for (i = 0; i < p->count; i++)
new->list[i] = fce(p->list[i]);
-
return new;
}
@@ -57,41 +49,33 @@ void addList(list_t *p, void *item)
{
assert( p != NULL );
- if( p->alloc == 0 )
- {
+ if (p->alloc == 0) {
p->alloc = LIST_ALLOC_LIMIT;
p->count = 1;
- p->list = malloc(p->alloc * sizeof(void *) );
+ p->list = malloc(p->alloc * sizeof(void *));
p->list[0] = item;
-
return;
}
- if( p->count + 1 <= p->alloc )
- {
+ if (p->count + 1 <= p->alloc) {
p->list[p->count] = item;
p->count += 1;
-
return;
}
- if( p->count + 1 > p->alloc )
- {
+ if (p->count + 1 > p->alloc) {
void **new;
-
#ifdef DEBUG_LIST
- printf("realocating from %d to %d (count=%d)\n",
+ printf("Realocating from %d to %d (count=%d)\n",
p->alloc, p->alloc+LIST_ALLOC_LIMIT, p->count);
#endif
-
p->alloc += LIST_ALLOC_LIMIT;
- new = malloc(p->alloc * sizeof(void *) );
- memcpy(new, p->list, p->count * sizeof(void *) );
+ new = malloc(p->alloc * sizeof(void *));
+ memcpy(new, p->list, p->count * sizeof(void *));
free(p->list);
p->list = new;
p->list[p->count] = item;
p->count++;
-
return;
}
}
@@ -99,21 +83,16 @@ void addList(list_t *p, void *item)
void insList(list_t *p, int n, void *item)
{
assert( p != NULL );
-
addList(p, NULL); // :)
-
- assert( n >= 0 || n < p->count );
-
- memmove(p->list+n+1, p->list+n, ( (p->count-1) - n ) * sizeof(void *));
-
+ assert(n >= 0 || n < p->count);
+ memmove(p->list+n+1, p->list+n, ((p->count-1) - n) * sizeof(void *));
p->list[n] = item;
}
void *getList(list_t *p, int n)
{
- assert( p != NULL );
- assert( n >= 0 || n < p->count );
-
+ assert(p != NULL);
+ assert(n >= 0 || n < p->count);
return p->list[n];
}
@@ -122,31 +101,25 @@ int searchListItem(list_t *p, void *n)
int i;
assert( p != NULL );
-
- for( i = 0 ; i < p->count ; i++ )
- if( p->list[i] == n )return i;
-
+ for (i = 0; i < p->count; i++)
+ if (p->list[i] == n)
+ return i;
return -1;
}
void delList(list_t *p, int n)
{
- assert( p != NULL );
- assert( n >= 0 || n < p->count );
-
+ assert(p != NULL);
+ assert(n >= 0 || n < p->count);
memmove(p->list+n, p->list+n+1, ( (p->count-1) - n ) * sizeof(void *));
-
p->count--;
-
- if( p->count + LIST_ALLOC_LIMIT < p->alloc )
- {
+ if(p->count + LIST_ALLOC_LIMIT < p->alloc) {
void **new;
#ifdef DEBUG_LIST
- printf("realocating from %d to %d (count=%d)\n",
+ printf("Realocating from %d to %d (count=%d)\n",
p->alloc, p->alloc-LIST_ALLOC_LIMIT, p->count);
#endif
-
p->alloc -= LIST_ALLOC_LIMIT;
new = malloc(p->alloc * sizeof(void *) );
memcpy(new, p->list, p->count * sizeof(void *) );
@@ -159,12 +132,11 @@ void delListItem(list_t *p, int n, void *f)
{
int (*fce)(void *);
- assert( p != NULL );
- assert( n >= 0 || n < p->count );
-
+ assert(p != NULL);
+ assert(n >= 0 || n < p->count);
fce = f;
- if( fce != NULL )fce(p->list[n]);
-
+ if(fce != NULL)
+ fce(p->list[n]);
delList(p, n);
}
@@ -188,54 +160,8 @@ void destroyListItem(list_t *p, void *f)
assert( p != NULL );
assert( f != NULL );
-
fce = f;
-
- for(i = 0 ; i < p->count ; i++)
+ for (i = 0; i < p->count; i++)
fce(p->list[i]);
-
destroyList(p);
-}
-
-/*
-typedef struct pokus_str
-{
- int x;
-} pokus;
-
-pokus* newPokus(int n)
-{
- pokus *new;
- new = malloc(sizeof(pokus));
- new->x = n;
- return new;
-}
-
-pokus *clonePokus(pokus *p)
-{
- pokus *new;
- new = malloc(sizeof(pokus));
- memcpy(new, p, sizeof(pokus));
- return new;
-}
-
-void destroyPokus(pokus *p)
-{
- free(p);
-}
-
-int main()
-{
- list_t *my;
- int i;
-
- my = newList();
-
- for(i = 0; i < 100; i++)
- addList(my, newPokus(i));
-
- destroyListItem(my, destroyPokus);
-
- return 0;
-}
-*/
+} \ No newline at end of file