codekingpro/portable-devtools
114k
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCUDACXX___FUNCTIONAL_RANGES_OPERATIONS_H11#define _LIBCUDACXX___FUNCTIONAL_RANGES_OPERATIONS_H12 13#ifndef __cuda_std__14#include <__config>15#endif //__cuda_std__16 17#include "../__concepts/equality_comparable.h"18#include "../__concepts/totally_ordered.h"19#include "../__utility/forward.h"20 21#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)22# pragma GCC system_header23#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)24# pragma clang system_header25#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)26# pragma system_header27#endif // no system header28 29#if _LIBCUDACXX_STD_VER > 1430 31_LIBCUDACXX_BEGIN_NAMESPACE_RANGES32_LIBCUDACXX_BEGIN_NAMESPACE_RANGES_ABI33 34struct equal_to {35 _LIBCUDACXX_TEMPLATE(class _Tp, class _Up)36 _LIBCUDACXX_REQUIRES( equality_comparable_with<_Tp, _Up>)37 _LIBCUDACXX_NODISCARD_ATTRIBUTE _LIBCUDACXX_INLINE_VISIBILITY38 constexpr bool operator()(_Tp &&__t, _Up &&__u) const39 noexcept(noexcept(bool(_CUDA_VSTD::forward<_Tp>(__t) == _CUDA_VSTD::forward<_Up>(__u)))) {40 return _CUDA_VSTD::forward<_Tp>(__t) == _CUDA_VSTD::forward<_Up>(__u);41 }42 43 using is_transparent = void;44};45 46struct not_equal_to {47 _LIBCUDACXX_TEMPLATE(class _Tp, class _Up)48 _LIBCUDACXX_REQUIRES( equality_comparable_with<_Tp, _Up>)49 _LIBCUDACXX_NODISCARD_ATTRIBUTE _LIBCUDACXX_INLINE_VISIBILITY50 constexpr bool operator()(_Tp &&__t, _Up &&__u) const51 noexcept(noexcept(bool(!(_CUDA_VSTD::forward<_Tp>(__t) == _CUDA_VSTD::forward<_Up>(__u))))) {52 return !(_CUDA_VSTD::forward<_Tp>(__t) == _CUDA_VSTD::forward<_Up>(__u));53 }54 55 using is_transparent = void;56};57 58struct less {59 _LIBCUDACXX_TEMPLATE(class _Tp, class _Up)60 _LIBCUDACXX_REQUIRES( totally_ordered_with<_Tp, _Up>)61 _LIBCUDACXX_NODISCARD_ATTRIBUTE _LIBCUDACXX_INLINE_VISIBILITY62 constexpr bool operator()(_Tp &&__t, _Up &&__u) const63 noexcept(noexcept(bool(_CUDA_VSTD::forward<_Tp>(__t) < _CUDA_VSTD::forward<_Up>(__u)))) {64 return _CUDA_VSTD::forward<_Tp>(__t) < _CUDA_VSTD::forward<_Up>(__u);65 }66 67 using is_transparent = void;68};69 70struct less_equal {71 _LIBCUDACXX_TEMPLATE(class _Tp, class _Up)72 _LIBCUDACXX_REQUIRES( totally_ordered_with<_Tp, _Up>)73 _LIBCUDACXX_NODISCARD_ATTRIBUTE _LIBCUDACXX_INLINE_VISIBILITY74 constexpr bool operator()(_Tp &&__t, _Up &&__u) const75 noexcept(noexcept(bool(!(_CUDA_VSTD::forward<_Up>(__u) < _CUDA_VSTD::forward<_Tp>(__t))))) {76 return !(_CUDA_VSTD::forward<_Up>(__u) < _CUDA_VSTD::forward<_Tp>(__t));77 }78 79 using is_transparent = void;80};81 82struct greater {83 _LIBCUDACXX_TEMPLATE(class _Tp, class _Up)84 _LIBCUDACXX_REQUIRES( totally_ordered_with<_Tp, _Up>)85 _LIBCUDACXX_NODISCARD_ATTRIBUTE _LIBCUDACXX_INLINE_VISIBILITY86 constexpr bool operator()(_Tp &&__t, _Up &&__u) const87 noexcept(noexcept(bool(_CUDA_VSTD::forward<_Up>(__u) < _CUDA_VSTD::forward<_Tp>(__t)))) {88 return _CUDA_VSTD::forward<_Up>(__u) < _CUDA_VSTD::forward<_Tp>(__t);89 }90 91 using is_transparent = void;92};93 94struct greater_equal {95 _LIBCUDACXX_TEMPLATE(class _Tp, class _Up)96 _LIBCUDACXX_REQUIRES( totally_ordered_with<_Tp, _Up>)97 _LIBCUDACXX_NODISCARD_ATTRIBUTE _LIBCUDACXX_INLINE_VISIBILITY98 constexpr bool operator()(_Tp &&__t, _Up &&__u) const99 noexcept(noexcept(bool(!(_CUDA_VSTD::forward<_Tp>(__t) < _CUDA_VSTD::forward<_Up>(__u))))) {100 return !(_CUDA_VSTD::forward<_Tp>(__t) < _CUDA_VSTD::forward<_Up>(__u));101 }102 103 using is_transparent = void;104};105_LIBCUDACXX_END_NAMESPACE_RANGES_ABI106_LIBCUDACXX_END_NAMESPACE_RANGES107 108#endif // _LIBCUDACXX_STD_VER > 14109 110 111#endif // _LIBCUDACXX___FUNCTIONAL_RANGES_OPERATIONS_H112 