summaryrefslogtreecommitdiff
path: root/lib/listplusplus.h
blob: 7e9e99e6839e254df0c4cea6bfa8579ddfd5c3b0 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
    Copyright (C) 2012  Intel Corporation

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/


#ifndef LISTPLUSPLUS_H
#define LISTPLUSPLUS_H

#include <list>
#include <algorithm>

template <class T>
class ListPlusPlus
{
public:
	
	ListPlusPlus(std::list<T> *list)
	:mList(list)
	{
		
	}
	
	
	void removeOne(T value)
	{
		typename std::list<T>::iterator itr = std::find(mList->begin(), mList->end(), value);
		
		if (itr != mList->end())
		{
			mList->erase(itr);
		}
	}
	
	bool contains(T value)
	{
		return (std::find(mList->begin(), mList->end(), value) != mList->end());
	}
	
private:
	std::list<T> *mList;
};

template <class T, class V>
bool contains(T iteratable, V value)
{
	return (std::find(iteratable.begin(), iteratable.end(), value) != iteratable.end());
}

template <class T, class V>
void removeOne(T * iteratable, V value)
{
	typename T::iterator itr = std::find(iteratable->begin(), iteratable->end(), value);

	if (itr != iteratable->end())
	{
		iteratable->erase(itr);
	}
}

#endif // LISTPLUSPLUS_H