text: // Copyright (c) 1999  Max-Planck-Institute Saarbruecken (Germany).
  // All rights reserved.
  //
  // This file is part of CGAL (www.cgal.org).
  //
  // $URL: https://github.com/CGAL/cgal/blob/releases/CGAL-5.0.2/Convex_hull_2/include/CGAL/ch_bykat.h $
  // $Id: ch_bykat.h 254d60f 2019-10-19T15:23:19+02:00 Sébastien Loriot
  // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
  // 
  //
  // Author(s)     : Stefan Schirra
  
  
  #ifndef CGAL_CH_BYKAT_H
  #define CGAL_CH_BYKAT_H
  
  #include <CGAL/license/Convex_hull_2.h>
  
  
  #include <CGAL/basic.h>
  #include <iterator>
  
  namespace CGAL {
  
  // same as |convex_hull_2(first,last,result)|. {\sc traits}: 
  // uses |Traits::Point_2|, |Traits::Less_signed_distance_to_line_2|,
  // |Traits::Left_turn_2|,, |Traits::Equal_2| and |Traits::Less_xy_2|.
  template <class InputIterator, class OutputIterator, class Traits>
  OutputIterator
  ch_bykat(InputIterator first, InputIterator last, 
           OutputIterator  result,
           const Traits& ch_traits);
  
  template <class InputIterator, class OutputIterator>
  inline
  OutputIterator
  ch_bykat(InputIterator first, InputIterator last, OutputIterator  result)
  {
      typedef std::iterator_traits<InputIterator>   ITraits;
      typedef typename ITraits::value_type          value_type;
      typedef CGAL::Kernel_traits<value_type>       KTraits;
      typedef typename KTraits::Kernel              Kernel;
      return ch_bykat( first, last, result, Kernel());
  }
  
  
  template <class InputIterator, class OutputIterator, class Traits>
  OutputIterator
  ch_bykat_with_threshold(InputIterator first, InputIterator last, 
                               OutputIterator  result,
                               const Traits& ch_traits);
  
  template <class InputIterator, class OutputIterator>
  inline
  OutputIterator
  ch_bykat_with_threshold(InputIterator first, InputIterator last, 
                          OutputIterator  result)
  {
      typedef std::iterator_traits<InputIterator>   ITraits;
      typedef typename ITraits::value_type          value_type;
      typedef CGAL::Kernel_traits<value_type>       KTraits;
      typedef typename KTraits::Kernel              Kernel;
      return ch_bykat_with_threshold( first, last, result, Kernel());
  }
  
  } //namespace CGAL
  
  #include <CGAL/Convex_hull_2/ch_bykat_impl.h>
  
  #endif // CGAL_CH_BYKAT_H
  