From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- tool_src/QvLib/QvPList.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tool_src/QvLib/QvPList.cpp (limited to 'tool_src/QvLib/QvPList.cpp') diff --git a/tool_src/QvLib/QvPList.cpp b/tool_src/QvLib/QvPList.cpp new file mode 100644 index 0000000..6872428 --- /dev/null +++ b/tool_src/QvLib/QvPList.cpp @@ -0,0 +1,64 @@ +#include + +#define DEFAULT_INITIAL_SIZE 4 + +QvPList::QvPList() +{ + ptrs = NULL; + nPtrs = ptrsSize = 0; + + setSize(0); +} + +QvPList::~QvPList() +{ + if (ptrs != NULL) + delete [] ptrs; +} + +int +QvPList::find(const void *ptr) const +{ + int i; + + for (i = 0; i < nPtrs; i++) + if (ptrs[i] == ptr) + return(i); + + return -1; +} + +void +QvPList::remove(int which) +{ + int i; + + for (i = which; i < nPtrs - 1; i++) + ptrs[i] = ptrs[i + 1]; + + setSize(nPtrs - 1); +} + +void +QvPList::expand(int size) +{ + void **newPtrs; + int i; + + if (ptrsSize == 0) + ptrsSize = DEFAULT_INITIAL_SIZE; + + while (size > ptrsSize) { + ptrsSize *= 2; + } + + newPtrs = (void **) new uintptr_t[ptrsSize]; + + if (ptrs != NULL) { + for (i = 0; i < nPtrs; i++) + newPtrs[i] = ptrs[i]; + delete [] ptrs; + } + + ptrs = newPtrs; +} -- cgit v1.2.3