Bolt  1.1
C++ template library with support for OpenCL
pair.h
Go to the documentation of this file.
1 /***************************************************************************
2 * Copyright 2012 - 2013 Advanced Micro Devices, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 
16 ***************************************************************************/
17 
18 
19 
24 #pragma once
25 #if !defined( BOLT_CL_PAIR_H )
26 #define BOLT_CL_PAIR_H
27 
28 #include <iterator>
29 #include <type_traits>
30 #include <numeric>
31 #include "bolt/cl/bolt.h"
32 
33 namespace bolt
34 {
35 
36  namespace cl
37  {
57 template <typename T1, typename T2>
58  struct pair
59 {
62  typedef T1 first_type;
63 
66  typedef T2 second_type;
67 
71 
75 
80  pair(void);
81 
87  pair(const T1 &x, const T2 &y);
88 
98  template <typename U1, typename U2>
99  pair(const pair<U1,U2> &p);
100 
110  template <typename U1, typename U2>
111  pair(const std::pair<U1,U2> &p);
112 
113 }; // end pair
114 
115 
125 template <typename T1, typename T2>
126  bool operator==(const pair<T1,T2> &x, const pair<T1,T2> &y);
127 
128 
138 template <typename T1, typename T2>
139  bool operator<(const pair<T1,T2> &x, const pair<T1,T2> &y);
140 
141 
151 template <typename T1, typename T2>
152  bool operator!=(const pair<T1,T2> &x, const pair<T1,T2> &y);
153 
154 
164 template <typename T1, typename T2>
165  bool operator>(const pair<T1,T2> &x, const pair<T1,T2> &y);
166 
167 
177 template <typename T1, typename T2>
178  bool operator<=(const pair<T1,T2> &x, const pair<T1,T2> &y);
179 
180 
190 template <typename T1, typename T2>
191  bool operator>=(const pair<T1,T2> &x, const pair<T1,T2> &y);
192 
193 
194 
204 template <typename T1, typename T2>
205  pair<T1,T2> make_pair(T1 x, T2 y);
206 
207 
215 template<int N, typename T> struct tuple_element;
216 
217 
224 template<typename Pair> struct tuple_size;
225 
226 
227 
233  } //end cl
234 } // end bolt
235 
236 #include <bolt/cl/detail/pair.inl>
237 
238 #endif