# atomicfwd_cxx.h

Go to the documentation of this file.

    00001 // -*- C++ -*- header.
    00002
    00003 // Copyright (C) 2008, 2009, 2010
    00004 // Free Software Foundation, Inc.
    00005 //
    00006 // This file is part of the GNU ISO C++ Library.  This library is free
    00007 // software; you can redistribute it and/or modify it under the
    00008 // terms of the GNU General Public License as published by the
    00009 // Free Software Foundation; either version 3, or (at your option)
    00010 // any later version.
    00011
    00012 // This library 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 bits/atomicfwd_cxx.h
    00027  *  This is an internal header file, included by other library headers.
    00028  *  You should not attempt to use it directly.
    00029  */
    00030
    00031 // "C++" only bits.
    00032
    00033 #define _ATOMIC_MEMBER_ _M_i
    00034
    00035 _GLIBCXX_END_EXTERN_C
    00036
    00037   namespace __atomic0
    00038   {
    00039     template<typename _IntTp>
    00040       struct __atomic_base;
    00041
    00042     struct atomic_flag;
    00043     struct atomic_address;
    00044     struct atomic_bool;
    00045   }
    00046
    00047   namespace __atomic2
    00048   {
    00049     template<typename _IntTp>
    00050       struct __atomic_base;
    00051
    00052     struct atomic_flag;
    00053     struct atomic_address;
    00054     struct atomic_bool;
    00055   }
    00056
    00057   namespace __atomic1
    00058   {
    00059     using __atomic2::atomic_flag;
    00060     using __atomic2::atomic_bool;
    00061     using __atomic0::atomic_address;
    00062     using __atomic0::__atomic_base;
    00063   }
    00064
    00065   /**
    00066    * @addtogroup atomics
    00067    * @{
    00068    */
    00069
    00070   /// atomic_char
    00071   typedef __atomic_base<char>               atomic_char;
    00072
    00073   /// atomic_schar
    00074   typedef __atomic_base<signed char>            atomic_schar;
    00075
    00076   /// atomic_uchar
    00077   typedef __atomic_base<unsigned char>      atomic_uchar;
    00078
    00079   /// atomic_short
    00080   typedef __atomic_base<short>          atomic_short;
    00081
    00082   /// atomic_ushort
    00083   typedef __atomic_base<unsigned short>     atomic_ushort;
    00084
    00085   /// atomic_int
    00086   typedef __atomic_base<int>                atomic_int;
    00087
    00088   /// atomic_uint
    00089   typedef __atomic_base<unsigned int>           atomic_uint;
    00090
    00091   /// atomic_long
    00092   typedef __atomic_base<long>               atomic_long;
    00093
    00094   /// atomic_ulong
    00095   typedef __atomic_base<unsigned long>      atomic_ulong;
    00096
    00097   /// atomic_llong
    00098   typedef __atomic_base<long long>          atomic_llong;
    00099
    00100   /// atomic_ullong
    00101   typedef __atomic_base<unsigned long long>     atomic_ullong;
    00102
    00103   /// atomic_wchar_t
    00104   typedef __atomic_base<wchar_t>        atomic_wchar_t;
    00105
    00106   /// atomic_char16_t
    00107   typedef __atomic_base<char16_t>       atomic_char16_t;
    00108
    00109   /// atomic_char32_t
    00110   typedef __atomic_base<char32_t>       atomic_char32_t;
    00111
    00112   template<typename _Tp>
    00113     struct atomic;
    00114
    00115   // @} group atomics
    00116
    00117 _GLIBCXX_BEGIN_EXTERN_C