summaryrefslogtreecommitdiff
path: root/common/list.h
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2010-11-27 02:43:27 +0100
committerVegard Storheil Eriksen <zyp@jvnv.net>2010-11-27 02:43:27 +0100
commit55ae5202de17fb7f7d1d00fc76defa194d7f9b06 (patch)
treee0b99d32048cb5ca744135495800ab597a87e9c1 /common/list.h
parent90d77e977fe0db416a260c286b36079ab0694f21 (diff)
Added List class to avoid reinventing features in each case.
Diffstat (limited to 'common/list.h')
-rw-r--r--common/list.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/common/list.h b/common/list.h
new file mode 100644
index 0000000..92452f1
--- /dev/null
+++ b/common/list.h
@@ -0,0 +1,34 @@
+#ifndef LIST_H
+#define LIST_H
+
+#include <vector>
+#include <algorithm>
+#include <boost/serialization/base_object.hpp>
+
+//! List class with extended functionality over std::vector.
+template<class T, class B = std::vector<T> >
+class List : public B {
+ public:
+ //! Sort the list.
+ void sort() {
+ std::sort(B::begin(), B::end());
+ }
+
+ //! Check if specified item is present in list.
+ bool contains(T item) {
+ return std::find(B::begin(), B::end(), item) != B::end();
+ }
+
+ //! Check whether list is empty or not.
+ operator bool() {
+ return !B::empty();
+ }
+
+ //! Allow serialization through Boost.Serialize.
+ template<class Archive>
+ void serialize(Archive & ar, const unsigned int version) {
+ ar & boost::serialization::base_object<B>(*this);
+ }
+};
+
+#endif