21 #ifndef GNASH_SAFESTACK_H
22 #define GNASH_SAFESTACK_H
44 typedef std::vector<T*> StackType;
59 return _data[offset >> _chunkShift][offset & _chunkMod];
71 return _data[offset >> _chunkShift][offset & _chunkMod];
82 return _data[offset >> _chunkShift][offset & _chunkMod];
95 return _data[offset >> _chunkShift][offset & _chunkMod];
105 return _data[offset >> _chunkShift][offset & _chunkMod];
113 return _data[offset >> _chunkShift][offset & _chunkMod];
122 _data[offset >> _chunkShift][offset & _chunkMod] = val;
157 StackSize available = (1 << _chunkShift) * _data.size() - _end + 1;
159 while (available < n)
162 _data.push_back(
new T[1 << _chunkShift]);
163 available += 1 << _chunkShift;
186 _downstop = _end - 1;
209 _downstop = downstop;
218 for (
StackSize i = 0;
i < _data.size(); ++
i)
delete [] _data[
i];
228 static const StackSize _chunkMod = (1 << _chunkShift) - 1;