libstdc++
|
00001 // -*- C++ -*- header. 00002 00003 // Copyright (C) 2008, 2009 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 /// atomic_char 00066 typedef __atomic_base<char> atomic_char; 00067 00068 /// atomic_schar 00069 typedef __atomic_base<signed char> atomic_schar; 00070 00071 /// atomic_uchar 00072 typedef __atomic_base<unsigned char> atomic_uchar; 00073 00074 /// atomic_short 00075 typedef __atomic_base<short> atomic_short; 00076 00077 /// atomic_ushort 00078 typedef __atomic_base<unsigned short> atomic_ushort; 00079 00080 /// atomic_int 00081 typedef __atomic_base<int> atomic_int; 00082 00083 /// atomic_uint 00084 typedef __atomic_base<unsigned int> atomic_uint; 00085 00086 /// atomic_long 00087 typedef __atomic_base<long> atomic_long; 00088 00089 /// atomic_ulong 00090 typedef __atomic_base<unsigned long> atomic_ulong; 00091 00092 /// atomic_llong 00093 typedef __atomic_base<long long> atomic_llong; 00094 00095 /// atomic_ullong 00096 typedef __atomic_base<unsigned long long> atomic_ullong; 00097 00098 /// atomic_wchar_t 00099 typedef __atomic_base<wchar_t> atomic_wchar_t; 00100 00101 /// atomic_char16_t 00102 typedef __atomic_base<char16_t> atomic_char16_t; 00103 00104 /// atomic_char32_t 00105 typedef __atomic_base<char32_t> atomic_char32_t; 00106 00107 template<typename _Tp> 00108 struct atomic; 00109 _GLIBCXX_BEGIN_EXTERN_C