1// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*- 2 3// Copyright (C) 2006-2022 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// Under Section 7 of GPL version 3, you are granted additional 17// permissions described in the GCC Runtime Library Exception, version 18// 3.1, as published by the Free Software Foundation. 19 20// You should have received a copy of the GNU General Public License and 21// a copy of the GCC Runtime Library Exception along with this program; 22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23// <http://www.gnu.org/licenses/>. 24 25#define _GLIBCXX_USE_CXX11_ABI 0 26#include <locale> 27#include <cmath> 28#include <tr1/functional> 29 30#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT 31 32#ifdef __LONG_DOUBLE_128__ 33#error "compatibility-ldbl.cc must be compiled with -mlong-double-64" 34#endif 35 36namespace std _GLIBCXX_VISIBILITY(default) 37{ 38#define C char 39 template class num_get<C, istreambuf_iterator<C> >; 40 template class num_put<C, ostreambuf_iterator<C> >; 41 template class money_get<C, istreambuf_iterator<C> >; 42 template class money_put<C, ostreambuf_iterator<C> >; 43 template const num_put<C>& use_facet<num_put<C> >(const locale&); 44 template const num_get<C>& use_facet<num_get<C> >(const locale&); 45 template const money_put<C>& use_facet<money_put<C> >(const locale&); 46 template const money_get<C>& use_facet<money_get<C> >(const locale&); 47 template bool has_facet<num_put<C> >(const locale&); 48 template bool has_facet<num_get<C> >(const locale&); 49 template bool has_facet<money_put<C> >(const locale&); 50 template bool has_facet<money_get<C> >(const locale&); 51#undef C 52#ifdef _GLIBCXX_USE_WCHAR_T 53#define C wchar_t 54 template class num_get<C, istreambuf_iterator<C> >; 55 template class num_put<C, ostreambuf_iterator<C> >; 56 template class money_get<C, istreambuf_iterator<C> >; 57 template class money_put<C, ostreambuf_iterator<C> >; 58 template const num_put<C>& use_facet<num_put<C> >(const locale&); 59 template const num_get<C>& use_facet<num_get<C> >(const locale&); 60 template const money_put<C>& use_facet<money_put<C> >(const locale&); 61 template const money_get<C>& use_facet<money_get<C> >(const locale&); 62 template bool has_facet<num_put<C> >(const locale&); 63 template bool has_facet<num_get<C> >(const locale&); 64 template bool has_facet<money_put<C> >(const locale&); 65 template bool has_facet<money_get<C> >(const locale&); 66#undef C 67#endif 68} 69 70// For std::tr1::hash<long double>::operator() 71#define _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL 72#include "hash-long-double-tr1-aux.cc" 73 74// std::tr1::hash<long double>::operator() 75// and std::hash<long double>::operator() 76// are the same, no need to duplicate them. 77extern "C" std::size_t _ZNKSt4hashIeEclEe (long double) 78 _GLIBCXX_PURE __attribute__((alias ("_ZNKSt3tr14hashIeEclEe"))); 79 80#endif 81