1  // Explicit instantantiations for numeric facets -*- C++ -*-
       2  
       3  // Copyright (C) 2018-2023 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  #ifndef C
      26  #define "This file should not be compiled directly, only included"
      27  #endif
      28  
      29  #include "facet_inst_macros.h"
      30  
      31  namespace std _GLIBCXX_VISIBILITY(default)
      32  {
      33  #if ! _GLIBCXX_USE_CXX11_ABI
      34  // use_facet and has_facet instantiations
      35  INSTANTIATE_FACET_ACCESSORS(num_get<C>);
      36  INSTANTIATE_FACET_ACCESSORS(num_put<C>);
      37  #endif
      38  
      39  _GLIBCXX_BEGIN_NAMESPACE_LDBL
      40  
      41  #if ! _GLIBCXX_USE_CXX11_ABI
      42    template class num_get<C, istreambuf_iterator<C> >;
      43    template class num_put<C, ostreambuf_iterator<C> >;
      44  #endif
      45  
      46    // num_get member function templates
      47    template
      48      istreambuf_iterator<C>
      49      num_get<C, istreambuf_iterator<C> >::
      50      _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
      51  		   ios_base&, ios_base::iostate&,
      52  		   long&) const;
      53  
      54    template
      55      istreambuf_iterator<C>
      56      num_get<C, istreambuf_iterator<C> >::
      57      _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
      58  		   ios_base&, ios_base::iostate&,
      59  		   unsigned short&) const;
      60  
      61    template
      62      istreambuf_iterator<C>
      63      num_get<C, istreambuf_iterator<C> >::
      64      _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
      65  		   ios_base&, ios_base::iostate&,
      66  		   unsigned int&) const;
      67  
      68    template
      69      istreambuf_iterator<C>
      70      num_get<C, istreambuf_iterator<C> >::
      71      _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
      72  		   ios_base&, ios_base::iostate&,
      73  		   unsigned long&) const;
      74  
      75  #ifdef _GLIBCXX_USE_LONG_LONG
      76    template
      77      istreambuf_iterator<C>
      78      num_get<C, istreambuf_iterator<C> >::
      79      _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
      80  		   ios_base&, ios_base::iostate&,
      81  		   long long&) const;
      82  
      83    template
      84      istreambuf_iterator<C>
      85      num_get<C, istreambuf_iterator<C> >::
      86      _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
      87  		   ios_base&, ios_base::iostate&,
      88  		   unsigned long long&) const;
      89  #endif
      90  
      91  #if ! _GLIBCXX_USE_CXX11_ABI
      92    // num_put member function templates
      93    template
      94      ostreambuf_iterator<C>
      95      num_put<C, ostreambuf_iterator<C> >::
      96      _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
      97  		  long) const;
      98  
      99    template
     100      ostreambuf_iterator<C>
     101      num_put<C, ostreambuf_iterator<C> >::
     102      _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
     103  		  unsigned long) const;
     104  
     105  #ifdef _GLIBCXX_USE_LONG_LONG
     106    template
     107      ostreambuf_iterator<C>
     108      num_put<C, ostreambuf_iterator<C> >::
     109      _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
     110  		  long long) const;
     111  
     112    template
     113      ostreambuf_iterator<C>
     114      num_put<C, ostreambuf_iterator<C> >::
     115      _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
     116  		  unsigned long long) const;
     117  #endif
     118  
     119    template
     120      ostreambuf_iterator<C>
     121      num_put<C, ostreambuf_iterator<C> >::
     122      _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
     123  		    double) const;
     124  
     125    template
     126      ostreambuf_iterator<C>
     127      num_put<C, ostreambuf_iterator<C> >::
     128      _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
     129  		    long double) const;
     130  #endif
     131  
     132  _GLIBCXX_END_NAMESPACE_LDBL
     133  } // namespace std