initializer_list

Go to the documentation of this file.
00001 // std::initializer_list support -*- C++ -*-
00002 
00003 // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
00004 //
00005 // This file is part of GCC.
00006 //
00007 // GCC is free software; you can redistribute it and/or modify
00008 // it under the terms of the GNU General Public License as published by
00009 // the Free Software Foundation; either version 3, or (at your option)
00010 // any later version.
00011 // 
00012 // GCC is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 // GNU General Public License for more details.
00016 // 
00017 // Under Section 7 of GPL version 3, you are granted additional
00018 // permissions described in the GCC Runtime Library Exception, version
00019 // 3.1, as published by the Free Software Foundation.
00020 
00021 // You should have received a copy of the GNU General Public License and
00022 // a copy of the GCC Runtime Library Exception along with this program;
00023 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
00024 // <http://www.gnu.org/licenses/>.
00025 
00026 /** @file initializer_list
00027  *  This is a Standard C++ Library header.
00028  */
00029 
00030 #ifndef __CXX_INITIALIZER_LIST
00031 #define __CXX_INITIALIZER_LIST
00032 
00033 #ifdef __GXX_EXPERIMENTAL_CXX0X__
00034 
00035 #pragma GCC visibility push(default)
00036 
00037 #include <cstddef>
00038 
00039 namespace std
00040 {
00041   /// initializer_list
00042   template<class _E>
00043     class initializer_list
00044     {
00045       const _E* __array;
00046       size_t __len;
00047 
00048       // The compiler can call a private constructor.
00049       initializer_list(const _E* __a, size_t __l)
00050       : __array(__a), __len(__l) { }
00051 
00052     public:
00053       initializer_list()
00054       : __array(NULL), __len(0) { }
00055 
00056       // Number of elements.
00057       size_t size() const
00058       { return __len; }
00059 
00060       // First element.
00061       const _E* begin() const
00062       { return __array; }
00063 
00064       // One past the last element.
00065       const _E* end() const
00066       { return begin() + size(); }
00067   };
00068 }
00069 
00070 #pragma GCC visibility pop
00071 #endif // C++0x
00072 #endif // __CXX_INITIALIZER_LIST

Generated on Thu Jul 23 21:16:08 2009 for libstdc++ by  doxygen 1.5.8