summaryrefslogtreecommitdiffstats
path: root/src/include/initializer_list
diff options
context:
space:
mode:
authorAndrew Geissler <andrewg@us.ibm.com>2016-03-11 08:46:44 -0600
committerA. P. Williams III <iawillia@us.ibm.com>2016-03-17 11:44:46 -0400
commit71cf29da3d308290ffd860fb263b4a05ddcb364a (patch)
treed8ff026c8cb8eb2d1beff2adadbbd118549c9e56 /src/include/initializer_list
parent497d9f20a3bc65847435c82358b32cd2cd6d6951 (diff)
downloadtalos-hostboot-71cf29da3d308290ffd860fb263b4a05ddcb364a.tar.gz
talos-hostboot-71cf29da3d308290ffd860fb263b4a05ddcb364a.zip
Need to implement new Ctor for std::vector
Change-Id: Ia7743dc8d3a83b4be361626b1dea57f39e4dd483 RTC: 149398 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/21938 Tested-by: Jenkins Server Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: A. P. Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/initializer_list')
-rw-r--r--src/include/initializer_list123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/include/initializer_list b/src/include/initializer_list
new file mode 100644
index 000000000..0926254b7
--- /dev/null
+++ b/src/include/initializer_list
@@ -0,0 +1,123 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/initializer_list $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2016 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef stl_initializer_list
+#define stl_initializer_list
+
+/**
+ * @file initializer_list
+ * @brief simple stl initalizer_list template class declaration.
+ *
+ * Provides compile time stl initialization in vector and list classes
+ */
+
+#include <stddef.h>
+
+#if !defined( __STDC_LIMIT_MACROS)
+#define __STDC_LIMIT_MACROS
+#endif
+#include <stdint.h>
+#include <new>
+#include <algorithm>
+#include <assert.h>
+
+namespace std
+{
+
+ /**
+ * @class initializer_list
+ * subset of stl initializer_list
+ */
+ template <class T>
+ class initializer_list
+ {
+ public:
+
+ typedef T value_type;
+ typedef T & reference;
+ typedef const T & const_reference;
+ typedef size_t size_type;
+ typedef T * iterator;
+ typedef const T * const_iterator;
+ typedef T * pointer;
+
+
+ private:
+
+ iterator iv_array;
+ size_type iv_len;
+
+ /**
+ * @brief Private constructor for compiler when someone declares
+ * initializer list using {}
+ * @note The compiler can call this private constructor
+ */
+ constexpr initializer_list(const_iterator x, size_type s)
+ :
+ iv_array(x),
+ iv_len(s)
+ {}
+
+ public:
+
+ /**
+ * @brief Constructor default
+ */
+ constexpr initializer_list(void)
+ :
+ iv_array(NULL),
+ iv_len(NULL)
+ {}
+
+ /**
+ * @brief Get the number of elements in the container
+ * @return number of elements in the container
+ */
+ constexpr size_type size() const
+ {
+ return iv_len;
+ }
+
+ // Iterators --------------------
+
+ /**
+ * @brief Get const_iterator to the first element
+ * @return const_iterator of first element
+ */
+ constexpr const_iterator begin() const
+ {
+ return (iv_array);
+ }
+
+ /**
+ * @brief Get const_iterator to the last element + 1
+ * @return const_iterator to last element + 1
+ */
+ constexpr const_iterator end() const
+ {
+ return (iv_array + iv_len);
+ }
+ };
+}
+#endif
OpenPOWER on IntegriCloud