// -*- C++ -*-
//===-- execution ---------------------------------------------------------===//
//
// Copyright (C) 2017-2019 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// This file incorporates work covered by the following copyright and permission
// notice:
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
//
//===----------------------------------------------------------------------===//

#ifndef _TEST_SUPPORT_STDLIB_EXECUTION
#define _TEST_SUPPORT_STDLIB_EXECUTION

// #include_next <execution> // None of the standard libraries PSTL is built on top have the <execution> header yet.

#include <pstl/internal/pstl_config.h>
#include <pstl/internal/execution_defs.h>

#define _PSTL_EXECUTION_POLICIES_DEFINED 1

#if _PSTL_ALGORITHM_FORWARD_DECLARED
#    include <pstl/internal/glue_algorithm_impl.h>
#endif

#if _PSTL_MEMORY_FORWARD_DECLARED
#    include <pstl/internal/glue_memory_impl.h>
#endif

#if _PSTL_NUMERIC_FORWARD_DECLARED
#    include <pstl/internal/glue_numeric_impl.h>
#endif

#if _PSTL_CPP17_EXECUTION_POLICIES_PRESENT
_PSTL_PRAGMA_MESSAGE_POLICIES("The <Parallel STL> execution policies are defined in the namespace pstl::execution")
#    include "pstl/internal/algorithm_impl.h"
#    include "pstl/internal/numeric_impl.h"
#    include "pstl/internal/parallel_backend.h"
#else
#    include <pstl/internal/glue_execution_defs.h>
_PSTL_PRAGMA_MESSAGE_POLICIES(
    "The <Parallel STL> execution policies are injected into the standard namespace std::execution")
#endif

#define __PSTL_USE_STANDALONE 1


#endif /* _TEST_SUPPORT_STDLIB_EXECUTION */
