(svn r14704) -Codechange: Add set capabilities to SmallVector.

This commit is contained in:
frosch 2008-12-20 17:09:44 +00:00
parent 8db5bda4f7
commit 5ea2dc97fd
1 changed files with 52 additions and 0 deletions

View File

@ -80,6 +80,58 @@ public:
return &this->data[this->items++];
}
/**
* Search for the first occurence of an item.
* The '!=' operator of T is used for comparison.
* @param item Item to search for
* @return The position of the item, or End() when not present
*/
FORCEINLINE const T *Find(const T &item) const
{
const T *pos = this->Begin();
const T *end = this->End();
while (pos != end && *pos != item) pos++;
return pos;
}
/**
* Search for the first occurence of an item.
* The '!=' operator of T is used for comparison.
* @param item Item to search for
* @return The position of the item, or End() when not present
*/
FORCEINLINE T *Find(const T &item)
{
T *pos = this->Begin();
const T *end = this->End();
while (pos != end && *pos != item) pos++;
return pos;
}
/**
* Tests whether a item is present in the vector.
* The '!=' operator of T is used for comparison.
* @param item Item to test for
* @return true iff the item is present
*/
FORCEINLINE bool Contains(const T &item) const
{
return this->Find(item) != this->End();
}
/**
* Tests whether a item is present in the vector, and appends it to the end if not.
* The '!=' operator of T is used for comparison.
* @param item Item to test for
* @return true iff the item is was already present
*/
FORCEINLINE bool Include(const T &item)
{
bool is_member = this->Contains(item);
if (!is_member) *this->Append() = item;
return is_member;
}
/**
* Get the number of items in the list.
*/