aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvPList.h
blob: 50f3eff025f6c454e4bb7fe545f55f087e9edace (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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_ */