Changeset - r10449:7750c62a1816
[Not reviewed]
master
0 1 0
frosch - 15 years ago 2008-12-20 17:09:44
frosch@openttd.org
(svn r14704) -Codechange: Add set capabilities to SmallVector.
1 file changed with 52 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/core/smallvec_type.hpp
Show inline comments
 
@@ -81,6 +81,58 @@ public:
 
	}
 

	
 
	/**
 
	 * 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.
 
	 */
 
	FORCEINLINE uint Length() const
0 comments (0 inline, 0 general)