aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvPList.h
diff options
context:
space:
mode:
Diffstat (limited to 'tool_src/QvLib/QvPList.h')
-rw-r--r--tool_src/QvLib/QvPList.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvPList.h b/tool_src/QvLib/QvPList.h
new file mode 100644
index 0000000..50f3eff
--- /dev/null
+++ b/tool_src/QvLib/QvPList.h
@@ -0,0 +1,29 @@
+#ifndef _QV_PLIST_
+#define _QV_PLIST_
+
+#include <QvBasic.h>
+
+class QvPList {
+ public:
+ QvPList();
+ ~QvPList();
+ void append(void * ptr)
+ { if (nPtrs + 1 > ptrsSize) expand(nPtrs + 1);
+ ptrs[nPtrs++] = ptr; }
+ int find(const void *ptr) const;
+ void remove(int which);
+ int getLength() const { return (int) nPtrs; }
+ void truncate(int start)
+ { nPtrs = start; }
+ void *& operator [](int i) const { return ptrs[i]; }
+
+ private:
+ void ** ptrs;
+ int nPtrs;
+ int ptrsSize;
+ void setSize(int size)
+ { if (size > ptrsSize) expand(size); nPtrs = size; }
+ void expand(int size);
+};
+
+#endif /* _QV_PLIST_ */