Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // Concept checking instantiations -*- C++ -*-
  2.  
  3. // Copyright (C) 2001-2013 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. // The implementation of some of the more complex checks uses the simple
  26. // checks (good reuse of code), thereby requiring that the simple checks
  27. // be instantiated somewhere.  The simple checks use other simple checks,
  28. // and so on, until a couple hundred symbols all need instantiations.  We
  29. // explicitly instantiate the initial set of symbols; compiling this file
  30. // with -fimplicit-templates will take care of the rest for us.
  31.  
  32. #include <bits/concept_check.h>
  33.  
  34. #ifdef _GLIBCXX_CONCEPT_CHECKS
  35.  
  36. #include <memory>
  37. #include <iterator>
  38. #include <ostream>
  39.  
  40. #define _Instantiate(...) template void __function_requires< __VA_ARGS__ > ()
  41.  
  42. namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  43. {
  44. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  45.  
  46.   template void __aux_require_boolean_expr<bool>(bool const&);
  47.  
  48.   _Instantiate(_ConvertibleConcept<unsigned, unsigned> );
  49.  
  50.   _Instantiate(_InputIteratorConcept<char*> );
  51.  
  52.   _Instantiate(_InputIteratorConcept<char const*> );
  53.  
  54. #ifdef _GLIBCXX_USE_WCHAR_T
  55.   _Instantiate(_InputIteratorConcept<wchar_t*> );
  56.  
  57.   _Instantiate(_InputIteratorConcept<wchar_t const*> );
  58.  
  59.   _Instantiate(_LessThanComparableConcept<wchar_t*> );
  60. #endif
  61.  
  62.   _Instantiate(_LessThanComparableConcept<char*> );
  63.  
  64.   _Instantiate(_LessThanComparableConcept<int> );
  65.  
  66.   _Instantiate(_LessThanComparableConcept<long> );
  67.  
  68.   _Instantiate(_LessThanComparableConcept<long long> );
  69.  
  70.   _Instantiate(_LessThanComparableConcept<unsigned> );
  71.  
  72.   _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
  73.     char, std::char_traits<char> >, char> );
  74.  
  75. #ifdef _GLIBCXX_USE_WCHAR_T
  76.   _Instantiate(_OutputIteratorConcept<std::ostreambuf_iterator<
  77.     wchar_t, std::char_traits<wchar_t> >, wchar_t> );
  78. #endif
  79.  
  80.   _Instantiate(_RandomAccessIteratorConcept<char*> );
  81.  
  82.   _Instantiate(_RandomAccessIteratorConcept<char const*> );
  83.  
  84.   _Instantiate(_RandomAccessIteratorConcept<
  85.     __normal_iterator<char const*, std::string> > );
  86.  
  87.   _Instantiate(_RandomAccessIteratorConcept<
  88.     __normal_iterator<char*, std::string> > );
  89.  
  90. #ifdef _GLIBCXX_USE_WCHAR_T
  91.   _Instantiate(_RandomAccessIteratorConcept<
  92.     __normal_iterator<wchar_t const*,
  93.     std::basic_string<wchar_t, std::char_traits<wchar_t>,
  94.                                std::allocator<wchar_t> > > > );
  95.  
  96.   _Instantiate(_RandomAccessIteratorConcept<
  97.     __normal_iterator<wchar_t*,
  98.     std::basic_string<wchar_t, std::char_traits<wchar_t>,
  99.                                std::allocator<wchar_t> > > > );
  100.  
  101.   _Instantiate(_RandomAccessIteratorConcept<wchar_t*> );
  102.  
  103.   _Instantiate(_RandomAccessIteratorConcept<wchar_t const*> );
  104. #endif
  105.  
  106. _GLIBCXX_END_NAMESPACE_VERSION
  107. } // namespace
  108.  
  109. #undef _Instantiate
  110.  
  111. #endif
  112.