Removed POSIX specific code, got variable values
This commit is contained in:
42
src/vector.c
Normal file
42
src/vector.c
Normal file
@@ -0,0 +1,42 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <vector.h>
|
||||
|
||||
struct vector *newvectorsize(size_t membersize) {
|
||||
struct vector *ret;
|
||||
ret = malloc(sizeof *ret);
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
ret->alloc = 20;
|
||||
ret->membersize = membersize;
|
||||
ret->data = malloc(ret->alloc * ret->membersize);
|
||||
if (ret->data == NULL) {
|
||||
free(ret);
|
||||
return NULL;
|
||||
}
|
||||
ret->len = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int addvector(struct vector *vector, void *item) {
|
||||
if (vector->len >= vector->alloc) {
|
||||
void *newdata;
|
||||
size_t newalloc;
|
||||
newalloc = vector->alloc * 2;
|
||||
newdata = realloc(vector->data, newalloc * vector->alloc);
|
||||
if (newdata == NULL)
|
||||
return 1;
|
||||
vector->data = newdata;
|
||||
vector->alloc = newalloc;
|
||||
}
|
||||
memcpy((char *) vector->data + vector->len * vector->membersize, item,
|
||||
vector->membersize);
|
||||
++vector->len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void freevector(struct vector *vector) {
|
||||
free(vector->data);
|
||||
free(vector);
|
||||
}
|
||||
Reference in New Issue
Block a user