summaryrefslogtreecommitdiffstats
path: root/src/include/utility
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2011-10-17 15:06:56 -0500
committerDouglas R. Gilbert <dgilbert@us.ibm.com>2011-10-26 17:16:18 -0500
commit06c656ca04fd9e1b36dac55bedfcd3694564c24c (patch)
tree6e6e2cad48f121d426fdb32315a491d81b879c9a /src/include/utility
parent35a8280b204334d8976faa63a8a79e3630017e86 (diff)
downloadtalos-hostboot-06c656ca04fd9e1b36dac55bedfcd3694564c24c.tar.gz
talos-hostboot-06c656ca04fd9e1b36dac55bedfcd3694564c24c.zip
STL map support based on STL list
Change-Id: Ifd693b0911b0f76114564920dbb86f1cefa6f838 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/450 Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Tested-by: Jenkins Server
Diffstat (limited to 'src/include/utility')
-rw-r--r--src/include/utility137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/include/utility b/src/include/utility
new file mode 100644
index 000000000..da7324845
--- /dev/null
+++ b/src/include/utility
@@ -0,0 +1,137 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/include/utility $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// p1
+//
+// Object Code Only (OCO) source materials
+// Licensed Internal Code Source Materials
+// IBM HostBoot Licensed Internal Code
+//
+// The source code for this program is not published or other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+#ifndef STL_UTILITY
+#define STL_UTILITY
+
+
+namespace std
+{
+ /**
+ * Standard template pair
+ * See the C++ spec
+ */
+ template <typename T1, typename T2>
+ struct pair
+ {
+ typedef T1 first_type;
+ typedef T2 second_type;
+
+ T1 first;
+ T2 second;
+ pair() : first(T1()), second(T2()) {}
+ pair(const T1 & x, const T2 & y) : first(x), second(y) {}
+
+ template <typename U, typename V>
+ pair (const pair<U,V> & p) : first(p.first), second(p.second) {}
+ };
+
+
+ /**
+ * Wrapper for creating a pair
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return a newly-constructed pair<> object
+ */
+ template <typename T1, typename T2> __attribute__ ((always_inline))
+ pair<T1,T2> make_pair (T1 x, T2 y)
+ {
+ return ( pair<T1,T2>(x,y) );
+ }
+
+ /**
+ * pair eq comparison
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return true if x is strictly eq y
+ */
+ template <typename T1, typename T2> __attribute__ ((always_inline))
+ bool operator==(const pair<T1, T2>& x, const pair<T1, T2>& y)
+ {
+ return x.first == y.first && x.second == y.second;
+ }
+
+ /**
+ * pair lt comparison
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return true if x < y
+ */
+ template<typename T1, typename T2> __attribute__ ((always_inline))
+ bool operator<(const pair<T1, T2>& x, const pair<T1, T2>& y)
+ {
+ return (x.first < y.first) ||
+ (!(y.first < x.first) && x.second < y.second);
+ }
+
+ /**
+ * pair ne comparison
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return true if x != y
+ */
+ template<typename T1, typename T2> __attribute__ ((always_inline))
+ bool operator!=(const pair<T1, T2>& x, const pair<T1, T2>& y)
+ {
+ return !(x == y);
+ }
+
+
+ /**
+ * pair gt comparison
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return true if x > y
+ */
+ template<typename T1, typename T2> __attribute__ ((always_inline))
+ bool operator>(const pair<T1, T2>& x, const pair<T1, T2>& y)
+ {
+ return y < x;
+ }
+
+ /**
+ * pair le comparison
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return true if x <= y
+ */
+ template<typename T1, typename T2> __attribute__ ((always_inline))
+ bool operator<=(const pair<T1, T2>& x, const pair<T1, T2>& y)
+ {
+ return !(y < x);
+ }
+
+ /**
+ * pair >= comparison
+ * @param[in] x The first object
+ * @param[in] y The second object
+ * @return true if x >= y
+ */
+ template<typename T1, typename T2> __attribute__ ((always_inline))
+ bool operator>=(const pair<T1, T2>& x, const pair<T1, T2>& y)
+ {
+ return !(x < y);
+ }
+};
+
+
+#endif
OpenPOWER on IntegriCloud