11#include <util/containers/PArrayIterator.h>
12#include <util/containers/ConstPArrayIterator.h>
42 template <
typename Data,
int Capacity>
93 void remove(Data
const & data);
129 int index(Data
const & data)
const;
176 template <
typename Data,
int Capacity>
184 template<
typename Data,
int Capacity>
190 for (i = 0; i < other.
size_; ++i) {
191 ptrs_[i] = other.
ptrs_[i];
196 if (Capacity > size_) {
197 for (i = size_; i < Capacity; ++i) {
207 template <
typename Data,
int Capacity>
213 if (
this == &other)
return *
this;
216 if (Capacity < other.
size_) {
221 for (
int i = 0; i < other.
size_; ++i) {
227 if (Capacity > size_) {
228 for (
int i = size_; i < Capacity; ++i) {
239 template <
typename Data,
int Capacity>
246 template <
typename Data,
int Capacity>
253 template <
typename Data,
int Capacity>
262 template <
typename Data,
int Capacity>
265 iterator.
setCurrent(
const_cast<Data**
>(ptrs_));
266 iterator.
setEnd(
const_cast<Data**
>(ptrs_ + size_));
272 template <
typename Data,
int Capacity>
277 iterator.
setCurrent(
const_cast<Data**
>(ptrs_));
278 iterator.
setEnd(
const_cast<Data**
>(ptrs_ + size_));
284 template <
typename Data,
int Capacity>
295 template <
typename Data,
int Capacity>
308 template <
typename Data,
int Capacity>
311 if (size_ == Capacity) {
314 ptrs_[size_] = &data;
321 template <
typename Data,
int Capacity>
325 for (
int i=0; i < Capacity; ++i) {
333 template <
typename Data,
int Capacity>
336 Data
const *
const ptr = &data;
342 for (i = 0; i < size_; ++i) {
343 if (ptr == ptrs_[i]) {
354 if (i != size_ - 1) {
355 ptrs_[i] = ptrs_[size_-1];
357 ptrs_[size_ - 1] = 0;
365 template <
typename Data,
int Capacity>
368 Data
const *
const ptr = &data;
373 for (
int i = 0; i < size_; ++i) {
374 if (ptr == ptrs_[i]) {
386 template <
typename Data,
int Capacity>
389 Data
const *
const ptr = &data;
395 for (i = 0; i < size_; ++i) {
396 if (ptr == ptrs_[i]) {
Forward iterator for a PArray.
void setEnd(Data **ptr)
Set the value of the end pointer.
void setCurrent(Data **ptr)
Set the current pointer value.
Forward iterator for a PArray.
void setEnd(Data **ptr)
Set the value of the end pointer.
void setCurrent(Data **ptr)
Set the current pointer value.
Statically allocated array of pointers to an unordered set.
SSet< Data, Capacity > & operator=(SSet< Data, Capacity > const &other)
Assignment, element by element.
SSet()
Default constructor.
void append(Data &data)
Add an object to the set.
Data & operator[](int i)
Mimic C array subscripting.
void clear()
Set logical size to zero and nullify all elements.
int index(Data const &data) const
Return the current index of an object within the set, if any.
bool isElement(Data const &data) const
Is an object an element of the set?
int size() const
Return logical size of this array.
int capacity() const
Return physical capacity of array.
Data * ptrs_[Capacity]
Array of pointers to Data objects.
void remove(Data const &data)
Remove an object from the set.
void begin(PArrayIterator< Data > &iterator)
Set a PArrayIterator to the beginning of this Array.
int size_
Logical size of array (number of elements in array).
File containing preprocessor macros for error handling.
#define UTIL_THROW(msg)
Macro for throwing an Exception, reporting function, file and line number.
Utility classes for scientific computation.