Home | History | Annotate | Download | only in bits
      1 // -*- C++ -*- header.
      2 
      3 // Copyright (C) 2008, 2009
      4 // Free Software Foundation, Inc.
      5 //
      6 // This file is part of the GNU ISO C++ Library.  This library is free
      7 // software; you can redistribute it and/or modify it under the
      8 // terms of the GNU General Public License as published by the
      9 // Free Software Foundation; either version 3, or (at your option)
     10 // any later version.
     11 
     12 // This library is distributed in the hope that it will be useful,
     13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 // GNU General Public License for more details.
     16 
     17 // Under Section 7 of GPL version 3, you are granted additional
     18 // permissions described in the GCC Runtime Library Exception, version
     19 // 3.1, as published by the Free Software Foundation.
     20 
     21 // You should have received a copy of the GNU General Public License and
     22 // a copy of the GCC Runtime Library Exception along with this program;
     23 // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     24 // <http://www.gnu.org/licenses/>.
     25 
     26 /** @file bits/atomicfwd_cxx.h
     27  *  This is an internal header file, included by other library headers.
     28  *  You should not attempt to use it directly.
     29  */
     30 
     31 // "C++" only bits.
     32 
     33 #define _ATOMIC_MEMBER_ _M_i
     34 
     35 _GLIBCXX_END_EXTERN_C
     36 
     37   namespace __atomic0
     38   {
     39     template<typename _IntTp>
     40       struct __atomic_base;
     41 
     42     struct atomic_flag;
     43     struct atomic_address;
     44     struct atomic_bool;
     45   }
     46 
     47   namespace __atomic2
     48   {
     49     template<typename _IntTp>
     50       struct __atomic_base;
     51 
     52     struct atomic_flag;
     53     struct atomic_address;
     54     struct atomic_bool;
     55   }
     56 
     57   namespace __atomic1
     58   {
     59     using __atomic2::atomic_flag;
     60     using __atomic2::atomic_bool;
     61     using __atomic0::atomic_address;
     62     using __atomic0::__atomic_base;
     63   }
     64 
     65   /// atomic_char
     66   typedef __atomic_base<char>  	       		atomic_char;
     67 
     68   /// atomic_schar
     69   typedef __atomic_base<signed char>         	atomic_schar;
     70 
     71   /// atomic_uchar
     72   typedef __atomic_base<unsigned char>  	atomic_uchar;
     73 
     74   /// atomic_short
     75   typedef __atomic_base<short>  		atomic_short;
     76 
     77   /// atomic_ushort
     78   typedef __atomic_base<unsigned short>  	atomic_ushort;
     79 
     80   /// atomic_int
     81   typedef __atomic_base<int>  	       		atomic_int;
     82 
     83   /// atomic_uint
     84   typedef __atomic_base<unsigned int>        	atomic_uint;
     85 
     86   /// atomic_long
     87   typedef __atomic_base<long>  	       		atomic_long;
     88 
     89   /// atomic_ulong
     90   typedef __atomic_base<unsigned long>  	atomic_ulong;
     91 
     92   /// atomic_llong
     93   typedef __atomic_base<long long>  		atomic_llong;
     94 
     95   /// atomic_ullong
     96   typedef __atomic_base<unsigned long long> 	atomic_ullong;
     97 
     98   /// atomic_wchar_t
     99   typedef __atomic_base<wchar_t>  		atomic_wchar_t;
    100 
    101   /// atomic_char16_t
    102   typedef __atomic_base<char16_t>  		atomic_char16_t;
    103 
    104   /// atomic_char32_t
    105   typedef __atomic_base<char32_t>  		atomic_char32_t;
    106 
    107   template<typename _Tp>
    108     struct atomic;
    109 _GLIBCXX_BEGIN_EXTERN_C
    110