/* 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 #if !defined( __STDC_LIMIT_MACROS) #define __STDC_LIMIT_MACROS #endif #include #include #include #include namespace std { /** * @class initializer_list * subset of stl initializer_list */ template 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