// -*- C++ -*-
// -----------------------------------------------------------------------------------------------------
// Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin
// Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik
// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
// -----------------------------------------------------------------------------------------------------

/*!\file
 * \brief Adaptations of algorithms from the Ranges TS
 * \author René Rahn <rene.rahn AT fu-berlin.de>
 */

#pragma once

/*!\defgroup std_algorithm algorithm
 * \ingroup std
 * \brief The \<algorithm\> header with additional ranges algorithm from C++20's standard library.
 */

#include <algorithm>

#ifndef __cpp_lib_ranges  // If not C++20 ranges available, implement via range-v3.

#include <seqan3/std/ranges>

#include <range/v3/algorithm/all_of.hpp>
#include <range/v3/algorithm/copy.hpp>
#include <range/v3/algorithm/copy_n.hpp>
#include <range/v3/algorithm/equal.hpp>
#include <range/v3/algorithm/fill.hpp>
#include <range/v3/algorithm/find_if_not.hpp>
#include <range/v3/algorithm/find_if.hpp>
#include <range/v3/algorithm/find.hpp>
#include <range/v3/algorithm/for_each.hpp>
#include <range/v3/algorithm/max_element.hpp>
#include <range/v3/algorithm/move_backward.hpp>
#include <range/v3/algorithm/move.hpp>
#include <range/v3/algorithm/reverse.hpp>
#include <range/v3/algorithm/sort.hpp>
#include <range/v3/algorithm/transform.hpp>

#endif  // __cpp_lib_ranges
