FINALLY got rid of ptrArray. Woo!
This commit is contained in:
parent
02fbb5a559
commit
9d2b637aa2
|
@ -4,7 +4,6 @@ CFILES += \
|
|||
common/areaevents.c \
|
||||
common/control.c \
|
||||
common/matrix.c \
|
||||
common/ptrarray.c \
|
||||
common/shouldquit.c
|
||||
|
||||
HFILES += \
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
// 5 may 2015
|
||||
#include <string.h>
|
||||
#include "../ui.h"
|
||||
#include "uipriv.h"
|
||||
|
||||
struct ptrArray *newPtrArray(void)
|
||||
{
|
||||
return uiNew(struct ptrArray);
|
||||
}
|
||||
|
||||
void ptrArrayDestroy(struct ptrArray *p)
|
||||
{
|
||||
if (p->len != 0)
|
||||
complain("attempt to destroy ptrarray %p while it still has pointers inside", p);
|
||||
if (p->ptrs != NULL) // array was created but nothing was ever put inside
|
||||
uiFree(p->ptrs);
|
||||
uiFree(p);
|
||||
}
|
||||
|
||||
#define grow 32
|
||||
|
||||
void ptrArrayAppend(struct ptrArray *p, void *d)
|
||||
{
|
||||
ptrArrayInsertAt(p, p->len, d);
|
||||
}
|
||||
|
||||
void ptrArrayInsertAt(struct ptrArray *p, uintmax_t i, void *d)
|
||||
{
|
||||
if (i > p->len)
|
||||
complain("index out of range in ptrArrayInsertAt()");
|
||||
if (p->len >= p->cap) {
|
||||
p->cap += grow;
|
||||
p->ptrs = (void **) uiRealloc(p->ptrs, p->cap * sizeof (void *), "void *[]");
|
||||
}
|
||||
// thanks to ValleyBell
|
||||
memmove(&(p->ptrs[i + 1]), &(p->ptrs[i]), (p->len - i) * sizeof (void *));
|
||||
p->ptrs[i] = d;
|
||||
p->len++;
|
||||
}
|
||||
|
||||
void ptrArrayDelete(struct ptrArray *p, uintmax_t i)
|
||||
{
|
||||
if (i >= p->len)
|
||||
complain("index out of range in ptrArrayRemove()");
|
||||
// thanks to ValleyBell
|
||||
memmove(&(p->ptrs[i]), &(p->ptrs[i + 1]), (p->len - i - 1) * sizeof (void *));
|
||||
p->ptrs[p->len - 1] = NULL;
|
||||
p->len--;
|
||||
}
|
|
@ -19,19 +19,6 @@ extern void complain(const char *, ...);
|
|||
// control.c
|
||||
extern uiControl *newControl(size_t size, uint32_t OSsig, uint32_t typesig, const char *typenamestr);
|
||||
|
||||
// ptrarray.c
|
||||
struct ptrArray {
|
||||
void **ptrs;
|
||||
uintmax_t len;
|
||||
uintmax_t cap;
|
||||
};
|
||||
struct ptrArray *newPtrArray(void);
|
||||
void ptrArrayDestroy(struct ptrArray *);
|
||||
void ptrArrayAppend(struct ptrArray *, void *);
|
||||
void ptrArrayInsertAt(struct ptrArray *, uintmax_t, void *);
|
||||
void ptrArrayDelete(struct ptrArray *, uintmax_t);
|
||||
#define ptrArrayIndex(p, T, i) ((T) ((p)->ptrs[(i)]))
|
||||
|
||||
// shouldquit.c
|
||||
extern int shouldQuit(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue