initializer_list revision 232924
1227825Stheraven// -*- C++ -*- 2227825Stheraven//===----------------------- initializer_list -----------------------------===// 3227825Stheraven// 4227825Stheraven// The LLVM Compiler Infrastructure 5227825Stheraven// 6227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 7227825Stheraven// Source Licenses. See LICENSE.TXT for details. 8227825Stheraven// 9227825Stheraven//===----------------------------------------------------------------------===// 10227825Stheraven 11227825Stheraven#ifndef _LIBCPP_INITIALIZER_LIST 12227825Stheraven#define _LIBCPP_INITIALIZER_LIST 13227825Stheraven 14227825Stheraven/* 15227825Stheraven initializer_list synopsis 16227825Stheraven 17227825Stheravennamespace std 18227825Stheraven{ 19227825Stheraven 20227825Stheraventemplate<class E> 21227825Stheravenclass initializer_list 22227825Stheraven{ 23227825Stheravenpublic: 24227825Stheraven typedef E value_type; 25227825Stheraven typedef const E& reference; 26227825Stheraven typedef const E& const_reference; 27227825Stheraven typedef size_t size_type; 28227825Stheraven 29227825Stheraven typedef const E* iterator; 30227825Stheraven typedef const E* const_iterator; 31227825Stheraven 32227825Stheraven initializer_list() noexcept; 33227825Stheraven 34227825Stheraven size_t size() const noexcept; 35227825Stheraven const E* begin() const noexcept; 36227825Stheraven const E* end() const noexcept; 37227825Stheraven}; 38227825Stheraven 39227825Stheraventemplate<class E> const E* begin(initializer_list<E> il) noexcept; 40227825Stheraventemplate<class E> const E* end(initializer_list<E> il) noexcept; 41227825Stheraven 42227825Stheraven} // std 43227825Stheraven 44227825Stheraven*/ 45227825Stheraven 46227825Stheraven#include <__config> 47227825Stheraven#include <cstddef> 48227825Stheraven 49227825Stheraven#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 50227825Stheraven#pragma GCC system_header 51227825Stheraven#endif 52227825Stheraven 53227825Stheravennamespace std // purposefully not versioned 54227825Stheraven{ 55227825Stheraven 56227825Stheraven#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 57227825Stheraven 58232924Stheraventemplate<class _Ep> 59227825Stheravenclass _LIBCPP_VISIBLE initializer_list 60227825Stheraven{ 61232924Stheraven const _Ep* __begin_; 62227825Stheraven size_t __size_; 63227825Stheraven 64227825Stheraven _LIBCPP_ALWAYS_INLINE 65232924Stheraven initializer_list(const _Ep* __b, size_t __s) _NOEXCEPT 66227825Stheraven : __begin_(__b), 67227825Stheraven __size_(__s) 68227825Stheraven {} 69227825Stheravenpublic: 70232924Stheraven typedef _Ep value_type; 71232924Stheraven typedef const _Ep& reference; 72232924Stheraven typedef const _Ep& const_reference; 73227825Stheraven typedef size_t size_type; 74227825Stheraven 75232924Stheraven typedef const _Ep* iterator; 76232924Stheraven typedef const _Ep* const_iterator; 77227825Stheraven 78227825Stheraven _LIBCPP_ALWAYS_INLINE initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {} 79227825Stheraven 80227825Stheraven _LIBCPP_ALWAYS_INLINE size_t size() const _NOEXCEPT {return __size_;} 81232924Stheraven _LIBCPP_ALWAYS_INLINE const _Ep* begin() const _NOEXCEPT {return __begin_;} 82232924Stheraven _LIBCPP_ALWAYS_INLINE const _Ep* end() const _NOEXCEPT {return __begin_ + __size_;} 83227825Stheraven}; 84227825Stheraven 85232924Stheraventemplate<class _Ep> 86227825Stheraveninline _LIBCPP_INLINE_VISIBILITY 87232924Stheravenconst _Ep* 88232924Stheravenbegin(initializer_list<_Ep> __il) _NOEXCEPT 89227825Stheraven{ 90227825Stheraven return __il.begin(); 91227825Stheraven} 92227825Stheraven 93232924Stheraventemplate<class _Ep> 94227825Stheraveninline _LIBCPP_INLINE_VISIBILITY 95232924Stheravenconst _Ep* 96232924Stheravenend(initializer_list<_Ep> __il) _NOEXCEPT 97227825Stheraven{ 98227825Stheraven return __il.end(); 99227825Stheraven} 100227825Stheraven 101227825Stheraven#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 102227825Stheraven 103227825Stheraven} // std 104227825Stheraven 105227825Stheraven#endif // _LIBCPP_INITIALIZER_LIST 106